Revision history for Sub-Private
0.06 Sun Oct 4 09:09:09 PM EDT 2026
[ 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://
0.05 Wed Jun 10 08:32:26 EDT 2026
[ Enhancements ]
Added enforce mode for OO-safe private access ($config{mode} = 'enforce')
Added declarative form: use Sub::Private qw(_helper) (enforce mode only)
Added $BYPASS and %config public variables
Added _wrap/_check_access/_process_one/_assert_private_caller internals
Subclasses are blocked in enforce mode (private = owner only, no isa check)
Updated POD: SYNOPSIS, both modes, CONFIGURATION, BYPASS, MESSAGES, FORMAL SPEC
Fixed http => https in SUPPORT links
Added SEE ALSO entry for Sub::Protected
Added Test Dashboard
[ Testing ]
Added test suite: basic.t, enforce.t, bypass.t, declarative.t, edge_cases.t,
function.t, unit.t, integration.t
[ Build ]
Migrated build system from Module::Build (Build.PL) to ExtUtils::MakeMaker (Makefile.PL)
Updated CI: .travis.yml and .appveyor.yml use perl Makefile.PL && make && make test
0.04 Mon Jul 15 07:57:40 EDT 2024
Added dependency on Test::More (RT#154368)
0.03 Fri Jul 12 08:29:42 EDT 2024
Added SEE ALSO link to Sub::Deprecated (thanks to neilb)
fixed typo in doc (thanks to neilb)
http=>https (GitHub PR#1, thanks to szabgab)
0.02 Thu Sep 17 10:38:31 EDT 2020
New maintainer
0.01 2009-08-13
First version, released on an unsuspecting world.
Keyboard Shortcuts
Global
s
Focus search bar
?
Bring up this help dialog
GitHub
gp
Go to pull requests
gi
Go to GitHub issues (only if GitHub is preferred repository)