Skip to content

luad 0.1.0

Choose a tag to compare

@dweekly dweekly released this 16 Sep 22:39
· 27 commits to main since this release
019d108

First public release. luad reads compiled Lua bytecode and tells you the exact format a chunk was built for, its instructions, constants, and closure bindings, with byte-level provenance for every fact — including the non-standard layouts found in extracted router firmware, which tools built on the stock Lua loader refuse or misread.

It does not decompile. When you want source back, luad identifies the profile so you can hand the chunk to a decompiler that reads it.

Experimental

No dialect is promoted to a supported tier, the supported set is empty, and no interface carries a compatibility promise. This is published as a useful 0.x tool with its flaws written down, not as something to base a security conclusion on.

Known defects. Lua 5.2 and 5.3 do not fully honor or refuse declared header widths by name, which can produce a confident wrong answer rather than an error — treat their output as a hint. EdgeTX chunks fail inside the body with a diagnostic anchored at offset 0.

"Valid" from luad validate means consistent with the selected format and the named checks. It does not mean safe to execute, or of known origin.

Install

Download the archive for your platform, verify against SHA256SUMS, and extract:

shasum -a 256 -c SHA256SUMS
tar xzf luad-0.1.0-macos-aarch64.tar.gz
./luad-0.1.0-macos-aarch64/luad --help

Or build from source with Rust 1.85+: cargo install --path crates/luad-cli --locked.

Try it

luad inspect chunk.luac      # identify the format, layout, and verdict
luad disasm chunk.luac       # annotated listing with constants resolved inline
luad validate chunk.luac     # structural and VM-invariant checks

Output formats vary by command — inspect, disasm, and explain emit text, JSON, and JSONL; validate and diagnostics emit text and JSON; export emits JSONL only. The README has the full matrix, the limitations table, and pointers to the tools to reach for next.

Artifacts

Built by CI from 019d10875e5297d5b75a2abb143e68067d7d45c4, the commit this tag points at. Each binary embeds that revision in its VERSION.json. A CycloneDX SBOM is attached.

Licensed MIT or Apache-2.0, at your option.