Repository navigation
kuna v1.990
Each archive ships kuna, one self-contained binary: the decompiler console and the SLEIGH compiler are built in, and so are the compiled SLEIGH specs (unpacked once into the user cache directory on first use). kuna-v1.990-specs.tar.gz is the same spec tree, for KUNA_SPECS. See docs/release.md.
kuna-v1.990-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] Add opt-in recovery of high-byte jump-table guards by @mahaloz in #1451
- [AUTOMATED] Keep both words of a proven 64-bit return when its low word also feeds its high word by @mahaloz in #1446
- [AUTOMATED] Keep MIPS imports returning when their lazy stub sits before exit's by @mahaloz in #1449
- [AUTOMATED] Fold the MIPS GOT slots that hold an address the image defines by @mahaloz in #1443
- [AUTOMATED] No pattern or gap-walk function start inside a sized function symbol by @mahaloz in #1444
- [AUTOMATED] Lift a MIPS lwl/lwr-style unaligned pair as one load or store (option mipsunaligned) by @mahaloz in #1447
- [AUTOMATED] Rebase a big-endian relocatable object's analysis facts in its own byte order by @mahaloz in #1445
- [AUTOMATED] Stop folding a stubless MIPS import's GOT slot to NULL by @mahaloz in #1450
- [AUTOMATED] Preserve Rust null-constructor expressions by @mahaloz in #1452
- [AUTOMATED] Preserve joined callback return components by @mahaloz in #1456
- [AUTOMATED] Join a big-endian pair a call hands back as one value (option bejoinpass, default whole) by @mahaloz in #1455
- [AUTOMATED] Preserve integer field extraction width by @mahaloz in #1457
- [AUTOMATED] Take a tail call through a GOT slot as a call with its arguments and return (option gottailcall) by @mahaloz in #1453
- [AUTOMATED] Read DWARF 2 member offsets and skip C++ static members in struct layouts by @phix33 in #1458
- [AUTOMATED] Recover verified Go integer result pairs by @mahaloz in #1454
- [AUTOMATED] Convert Go integer stores to destination signedness by @mahaloz in #1460
- [AUTOMATED] Preserve Rust integer types across conversions by @mahaloz in #1461
- [AUTOMATED] Convert Rust integer stores to destination signedness by @mahaloz in #1462
- [AUTOMATED] Guard a persistent global only at the calls next to its accesses (option persistcalls, default 65,536 guards) by @mahaloz in #1459
- [AUTOMATED] Render Rust raw-pointer indices with wrapping byte offsets by @mahaloz in #1463
- [AUTOMATED] Convert Rust integer array indices to usize by @mahaloz in #1464
- [AUTOMATED] Form Rust array addresses without references or bounds checks by @mahaloz in #1467
- [AUTOMATED] Convert Rust array places at pointer consumers by @mahaloz in #1471
- [AUTOMATED] Stop pairing up globals in mergeLinear (61M pair tests gone on APoseFix's 205 KB functions, same C) by @mahaloz in #1466
- [AUTOMATED] Test a LOAD only against the STOREs its cover reaches when marking implied (6.1 s to 0.8 s on a 205 KB function, same C) by @mahaloz in #1468
- [AUTOMATED] Stop kuna decompile at its budget: count the follow it adopts, keep the failure shell without re-following by @mahaloz in #1465
- [AUTOMATED] Add opt-in zero values for Rust byte-array stores by @mahaloz in #1473
Full Changelog: v1.989...v1.990