Each archive ships kuna (the CLI), decomp_dbg (the decompiler console), and slacomp (the SLEIGH compiler).
The engine needs compiled SLEIGH specs at runtime: extract kuna-v1.329-specs.tar.gz and point KUNA_SPECS at the extracted specs/ directory. See docs/release.md.
kuna-v1.329-KunaDecompiler-ghidra_12.1.2.zip is the ready-to-install KunaDecompiler extension for Ghidra 12.1.2 (in Ghidra: File -> Install Extensions... -> + -> pick the zip -> restart -> enable KunaDecompilerPlugin). It bundles prebuilt kuna_ghidra backends for Linux x86_64/arm64, macOS x86_64/arm64, and Windows x86_64, so it installs fully airgapped: the Ghidra release zip plus this zip are the only two files needed -- no network, no Rust toolchain. The zip is version-locked to Ghidra 12.1.2; other Ghidra 12.x versions can choose "Install Anyway" at the version-mismatch dialog (compatibility unverified).
What's Changed
- [AUTOMATED] feat(p5): stack-string-invalid-cast — collapse a read-only string block copy into builtin_strncpy (option rodatastring, DIV-113) by @mahaloz in #404
- [AUTOMATED] feat(p4): keyboard-callback-uses-undefined — an unused argument-register run must not veto a later live-in register (option inputparamgap, DIV-114) by @mahaloz in #405
- [AUTOMATED] feat(p3,p8): simd-constant-string-initializer — resolve constant-mask pshufb lanes and stop cloning a global-writing epilogue (options simdlane + retsplitglobal, DIV-115/116) by @mahaloz in #406
- [AUTOMATED] perf(infra): decompiling-3396-byte-main — refute the regression by code A/B, and keep the profiler that showed it by @mahaloz in #411
- [AUTOMATED] fix(worker): preserve a killed builder's work, and let a re-dispatch resume it by @mahaloz in #386
- [AUTOMATED] docs(re-pipeline): two round-2 lessons — quota kills, and a zero already-supported by @mahaloz in #412
- [AUTOMATED] fix(brief): stop presenting fixed defects to testers as new capabilities by @mahaloz in #413
- [AUTOMATED] fix(ghidra): stop speculative x86 register probes from throwing in the host by @mahaloz in #408
- [AUTOMATED] fix(p1): a chained .pdata record is a code chunk, not a function entry (GH-403) by @mahaloz in #409
- feature: json graph export (kuna decompile-graph) by @dobin in #401
- [AUTOMATED] fix(p2): funcboundflow's truncation must start a basic block by @mahaloz in #410
- [AUTOMATED] fix(brief): take one reference reading before giving up kuna-blocked by @mahaloz in #414
- [AUTOMATED] fix(cli): --assert's error named the wrong problem, and five agents believed it by @mahaloz in #415
- [AUTOMATED] test(p1,p2): pin the truncated latch through a real .pdata table by @mahaloz in #416
- [AUTOMATED] docs: correct #415's diagnosis — the five testers were right, I was not by @mahaloz in #418
- [AUTOMATED] fix(tester): a provider content refusal is not a kuna failure by @mahaloz in #419
- [AUTOMATED] fix(reloc): apply architecture-specific ET_REL relocations by @phix33 in #368
- [AUTOMATED] fix(p2): a Windows
int 0x29(__fastfail) ends the flow instead of unbalancing the stack by @mahaloz in #417 - [AUTOMATED] feat(needs): a CLI to record a refutation verdict, which T_REFUTE never had by @mahaloz in #420
- [AUTOMATED] feat(console): --assert accepts the standard C scalar types by @mahaloz in #421
- [AUTOMATED] fix(p2,cli): checker-exceeds-instruction-ceiling — a function past the instruction budget yields a truncated body, not nothing by @mahaloz in #422
- [AUTOMATED] docs(re-needs): 10 needs were closed without an acceptance flip — say so by @mahaloz in #423
- [AUTOMATED] docs(re-needs): restore 14 round-3 records I deleted by @mahaloz in #424
- [AUTOMATED] docs(re-pipeline): the shared-journal hazard, both halves of it by @mahaloz in #425
- [AUTOMATED] docs(re-needs): persist the three round-3 closes by @mahaloz in #426
- [AUTOMATED] fix(analysis,cli): corrupt-elf-section-table — load an ELF whose section table is garbage from its program headers by @mahaloz in #429
- [AUTOMATED] fix(p2): explicit-function-boundary-aborts — a declared extent clips flow instead of killing the function by @mahaloz in #430
- [AUTOMATED] fix(analysis): arm-literal-pool-string — follow a read-only pool word, so an ARM literal has an owning function by @mahaloz in #431
- [AUTOMATED] docs(re-pipeline): SIGTERM to a supervisor ends the round by @mahaloz in #432
- [AUTOMATED] fix(ghidra): fetch p-code injects from the host instead of failing the function by @mahaloz in #427
- [AUTOMATED] fix(cli): text-output-silently-ignores — a prototype assertion binds to , not to the declared name by @mahaloz in #433
- [AUTOMATED] fix(cli): function-disassembly-decodes-arm — list a literal-pool word as the constant it holds by @mahaloz in #435
- [AUTOMATED] fix(worker): a builder budget cap is not a build failure either by @mahaloz in #436
- [AUTOMATED] fix(status): a dead worker printed 'running' — say DEAD by @mahaloz in #437
- [AUTOMATED] fix(captain): --status never carried the notes, so ticks could not read each other by @mahaloz in #438
- [AUTOMATED] docs(re-pipeline): the quality lane is capped at one builder, and the reason may have expired by @mahaloz in #440
- [AUTOMATED] fix(repipe): the arena brief told testers half the CLI did not exist by @mahaloz in #439
- [AUTOMATED] fix(brief): a probe is one argv and there is no shell — 6 of 26 were lost to this by @mahaloz in #443
- [AUTOMATED] fix(cli): xrefs --to answers instead of refusing it as ambiguous by @mahaloz in #441
- [AUTOMATED] fix(p4): win32-process-enumeration-loses — a callee-body walk with no path terminator proves nothing by @mahaloz in #444
- [AUTOMATED] fix(captain): stop truncating the handoff note --status exists to deliver by @mahaloz in #445
- [AUTOMATED] fix(repipe): one unparseable probe string killed the whole round's gate by @mahaloz in #442
- [AUTOMATED] fix(cli): decompile-rejects-subcommand-help — every subcommand answers -h/--help by @mahaloz in #448
- [AUTOMATED] fix(cli): mach-o-summary-reports — report the Mach-O LC_MAIN entry as a VMA, not a file offset by @mahaloz in #449
- [AUTOMATED] fix(p9): 16-byte-vm-state — a 16-byte transfer through a char[16] printed as v[0] by @mahaloz in #450
- [AUTOMATED] fix(analysis): sectionless-elf-loses-string — classify data refs against the program header when there is no section table by @mahaloz in #451
- [AUTOMATED] fix(cli): zero-function-sizes-make — a sectionless ELF reports a real extent per function by @mahaloz in #452
- [AUTOMATED] fix(analysis): pe-data-directory-count — clamp a PE data-directory count to what its optional header holds by @mahaloz in #453
- [AUTOMATED] fix(cli): unknown-option-name-silently — reject an unrecognized --option NAME by @mahaloz in #454
- [AUTOMATED] fix(p4): argument-recovery-options-still — extend a partial argument list when the callee's own body agrees by @mahaloz in #455
New Contributors
Full Changelog: v1.267...v1.329