Changes for version 0.03 - 2026-09-17
- FIXES a heap corruption when encoding an anonymous sub. The deparser is loaded with load_module, which runs perl and can reallocate the argument stack; the stack pointer taken before it was then stale, and pushing the deparse arguments through it wrote to freed memory. It surfaced only when the load triggered a realloc, so it depended on how deep the stack already was: a bare encode was usually fine and a sub encoded from inside a larger program crashed at destruction. SPAGAIN after the load. Seen as a SIGABRT/SIGSEGV in t/32-kinds.t on threaded 5.18.
- t/16-leak.t built its probe list with a regexp unconditionally, which the codec refuses below 5.12, so the file died there on 5.10. The regexp joins the list only where it can be encoded, as t/32 already skips it.
- A float on a perl built -Duselongdouble or -Dusequadmath kept only what a double holds. Such a value now goes out as decimal digits under tag 0x38, and comes back the number it was. A perl whose NV is a double writes the same bytes as before.
- t/25-wide-nv.t.
Modules
a Perl structure to bytes and back, with nothing lost