pperl 0.6.8#

2026-07-27 to 2026-07-28, 3 commits.

  • --cpan installs pure-Perl CPAN distributions for pperl. Modules built into pperl count as installed at pperl’s own version, not at the host perl’s, so they are never rebuilt.

  • ExtUtils::MakeMaker: a distribution’s Makefile.PL runs and writes the same Makefile as on perl5. B::svref_2object(\$v)->MAGIC died for lack of a B::MAGIC class, which stopped every Makefile.PL; B::MAGIC now exists with its accessors. $Config{eunicefix} is : as on perl5, so MakeMaker no longer executes the Makefile it has just written.

  • The daemon: pperl --via-daemon script.pl runs the script from its cached compiled image, as PPERL_DAEMON=2 does; the reduced mode that a bare --via-daemon used to select is now --via-daemon=trunk, and any other value is refused with the accepted forms. --via-daemon=script and PPERL_DAEMON=2, documented as the same request, kept separate caches, so a script run both ways was never served from its cached image again; they now share one.

  • Safe: a subroutine signature inside a Safe compartment was denied, because Opcode took its op tags from the host perl’s Opcode.pm, which lacks the signature ops of perl 5.44. The tag table is now part of pperl, and the host perl’s Opcode.pm is no longer loaded.

  • Encode: an encoding alias registered at run time works with encode and decode, not only with resolve_alias.

  • PDL: slicing a slice no longer checks bounds against an unset shape, sever detaches an ndarray from its parent, and operations with a scalar on a flowing ndarray no longer leave empty results or crash.

  • Daemon guide: the chapter “Fast start-up: the daemon” gains a worked example (about 24 ms per cold run against about 4 ms from the cached image, on the machine it was written on), how to check whether a run was served, how to opt in from a shebang line or a shell function, a systemd user unit, and an exact description of --daemon-idle.