Changes for version 0.06 - 2026-10-04

  • Bug Fixes
    • Private subs are now protected when Sub::Private and the packages that use it are loaded after CHECK (run-time require, plugin loaders, string eval). Previously such subs were left callable by anyone, and Perl warned "Too late to run CHECK block" The declarative form (use Sub::Private qw(...)) in a file loaded after CHECK now wraps the named subs at the end of the enclosing scope, so the use line can come before the subs it names. If a named sub is never defined, the error is reported at the use line No longer warns "Too late to run CHECK block" when loaded at run time Removed "use autodie qw(:all)", which was unused IPC::System::Simple is now a runtime prerequisite: Params::Get <= 0.17 (loaded by Return::Set) needs it at load time but does not declare it
  • Enhancements
    • The :Private attribute handler also runs in the BEGIN phase so subs compiled after CHECK are wrapped (or removed in namespace mode)
  • Documentation
    • Documented run-time loading, and the behaviour of wrapped subs (caller transparency, context and $_ preservation, no AUTOLOAD fallthrough, Moo/Moose) Rewrote the import() formal specification for the after-CHECK paths and moved it under FORMAL SPECIFICATION Added B::Hooks::EndOfScope to DEPENDENCIES Replaced the dead search.cpan.org link with MetaCPAN
  • Testing
    • Added t/runtime.t: run-time loading of the attribute and declarative forms, string eval, namespace mode, and no warnings Moo, Moose, Test::Mockingbird and Test::Returns are now test recommends rather than requirements CI also tests Perl 5.14, 5.22 and 5.30
  • Build
    • Minimum Perl is now 5.14 (the code already needed 5.10 for //=) Added B::Hooks::EndOfScope to PREREQ_PM Removed META.json from MANIFEST (generated by make dist) Repository URL uses https:// instead of git://

Documentation

Modules

Private subroutines and methods