Soroban-ret v0.0.4
Headline numbers
- Mainnet-corpus hard-error ratchet: 1042 → 326 (−68%);
- Behavioral equivalence (recompile → run in soroban-env-host → diff outcomes): 99.2% match, 4 divergences
Fabrication classes eliminated
- Lost collections no longer render as empty
Map/Vec(#36) — unrecoverable values surface as honest holes - Symbol-builder loops recover the real encoded symbols instead of fabricating tag-only keys (#61):
Symbol::new(&env, "AssetRecord"), real invoke symbols blend-backstop'suser_balancerecovered from a barepanic!()collapse to its real storage protocol (#33)- Recompiled arithmetic is wrapping-exact where the original wrapped — no overflow traps the original binary doesn't have (#64)
New recovery capabilities
- Storage-getter classes: defaulting, fallible-struct (proven multi-field layouts + TTL protocols), value-returning, and defaulting-collection getters
- Keyed
DataKeyrecovery through frame-built descriptors, proven by executing the real constructor bytecode - Fallible storage-decode discriminant modeling
- Full loop recovery: carried values, helper adoption, vec accumulators, const-loop evaluation, and the populate→push value relay —
test_alloc'snum_listnow decompiles hole-free and behaviorally matches the original on every generated input, including overflow cases
Full details in CHANGELOG.md.