In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/b141c43c04aa77df154811acd708b7b951e3963d?hp=29dba7683e8595812491799fdba371ea0b772624>
- Log ----------------------------------------------------------------- commit b141c43c04aa77df154811acd708b7b951e3963d Author: Florian Ragwitz <[email protected]> Date: Wed Oct 20 15:17:11 2010 -0700 Mention the PL_* accessor removal in perldelta ----------------------------------------------------------------------- Summary of changes: pod/perldelta.pod | 20 ++++++++++++++++++++ 1 files changed, 20 insertions(+), 0 deletions(-) diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 7513ad2..bb11eeb 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -179,6 +179,26 @@ The bulk of the C<Tie::Hash::NamedCapture> module used to be in the perl core. It has now been moved to an XS module, to reduce the overhead for programs that do not use C<%+> or C<%->. +=item * + +Eliminate C<PL_*> accessor functions under ithreads. + +When C<MULTIPLICITY> was first developed, and interpreter state moved into an +interpreter struct, thread and interpreter local C<PL_*> variables were defined +as macros that called accessor functions, returning the address of the value, +outside of the perl core. The intent was to allow members within the interpreter +struct to change size without breaking binary compatibility, so that bug fixes +could be merged to a maintenance branch that necessitated such a size change. + +However, some non-core code defines C<PERL_CORE>, sometimes intentionally to +bypass this mechanism for speed reasons, sometimes for other reasons but with +the inadvertent side effect of bypassing this mechanism. As some of this code is +widespread in production use, the result is that the core B<can't> change the +size of members of the interpreter struct, as it will break such modules +compiled against a previous release on that maintenance branch. The upshot is +that this mechanism is redundant, and well-behaved code is penalised by +it. Hence it can and should be removed. + =back =head1 Modules and Pragmata -- Perl5 Master Repository
