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.