# pperl 0.6.6 *2026-07-26 to 2026-07-27, 12 commits.* ## Modules - **Compress::Raw::Zlib** is native and uses the system's zlib, so `Compress::Zlib`, the pure-Perl `IO::Compress::Gzip` and `DBM_Filter::compress` work. Its version, `ZLIB_VERNUM`, compressed lengths, CRC-32 and Adler-32 checksums and status codes match perl5's. bzip2 is not covered. - **Import lists**: `use` of a native module accepts Exporter's full grammar: `!name` and `!:tag` remove names, a list that begins with a removal starts from the default exports, and `:DEFAULT` is a tag. `use Compress::Raw::Zlib qw(!crc32 !adler32)`, as IO::Compress writes it, imported nothing and left the module unusable. Unknown names are reported together in one error, as Exporter does. - **Storable** no longer warns "Attempt to free unreferenced scalar" when a stored structure refers to the same value more than once. Weak references come back from `thaw` and `dclone` as weak references, without the "panic: del_backref" error. - **PDL**: assigning through a slice, as in `$a->slice("1:3") .= pdl(10,20,30)`, works; it died with "dimension mismatch" or set the parent's elements to zero. - **`use re`**: `use re 'taint'`, `use re 'eval'` and `use re '/aa'` take effect; they were silently ignored. - **POSIX, Socket and Encode** gain export tags: POSIX `:math_h`, Socket `:crlf`, `:addrinfo` and `:all`, Encode `:all`, `:default`, `:fallbacks` and `:fallback_all`. POSIX also has `strxfrm`. - **Devel::Peek**: `SvREFCNT($x)` works as documented; every call died with a usage message. - **Hash::Util**: `hash_traversal_mask` reads and sets a hash's traversal mask, and returns `undef` for a hash that has none, as on perl5; it always returned 0. ## Command line - **The daemon** can keep a compiled image of a script: `--via-daemon=script` or `PPERL_DAEMON=2` runs the script from it, so a repeated run skips compiling the script and the modules it loads as well as starting the interpreter. `--daemon-max-scripts=N` limits how many scripts are kept (100 by default; the least recently used goes first), and `--daemon-reset` drops one script's image, or with no path all of them, and exits. - **`--interactive`**, in builds that offer it, says on standard error that it is not implemented and exits with status 2. It printed a banner and reported success without running anything. ## Distribution - **Benchmark suite**: pperl's benchmark suite ships as a separate archive with its documentation and runs outside a source tree. It finds pperl through `--pperl=PATH`, `$PPERL`, a `pperl` beside it or on the `PATH`, and `--display` shows saved results without a pperl binary.