version 0.012; 2023-03-10
* bugfix: comprehensive set of preemptive loads of modules for which
a delayed load might have been compiled while loading this module
* bugfix: if AutoLoader was loaded during (or before) loading this
module, flush its compiled code and reload it, to make subsequent
autoloads of *.al files not leak hints
* bugfix: if utf8_heavy.pl was loaded during (or before) loading this
module, flush its compiled code and reload it, to make subsequent
loads of Unicode data files not leak hints
* bugfix: perform preemptive loads, of modules for which a delayed
load might have been compiled while loading this module, regardless
of whether XS module loading was successful
* bugfix: also work around hint leakage affecting do-file, which
suffers exactly the same problem as require
* correct thread behaviour: make the XS implementation behave the way
the pure Perl implementation already did, by not applying workaround
until it has been requested in a particular thread (including being
requested pre-cloning in a thread from which this thread was cloned)
* be more conservative about maintaining op tree structure
* port to Perl 5.33.1, which defines a PERL_VERSION_GE() macro that
clashes with the one this module previously had
* delay the preemptive module loads, of modules potentially subject
to early-compiled delayed loads, until applying the fix
* update swash test for Perl 5.27.11, which avoids actually loading
swashes most of the time
* skip thread tests on some old versions of Perl (around 5.10.0) where
a core bug makes thread creation violate an internal assertion and
causes crashes
* skip thread tests on pre-5.8.9 Perls where a core bug makes thread
creation corrupt memory
* skip thread tests on pre-5.8.3 Perls where a core bug makes thread
completion break the global PL_sv_placeholder
* in t/override.t, make the test overrides of require() provide the
correct context to the file scope of each file being loaded
* test the point at which the workaround goes into effect
* in documentation, describe the bug affecting "do" on Perls 5.15.{5..7}
* in documentation, use four-column indentation for all verbatim
material
* in META.{yml,json}, point to public bug tracker
* use full stricture in the module, now that delayed module loads
compiled while loading this module are properly handled so there's
no need to try avoiding them entirely
* in XS, better argument parenthesisation in a macro
* avoid some compiler warnings that arise on Perl 5.6
* fix indentation in the reserve definition of wrap_op_checker()
version 0.011; 2017-07-15
* update test suite to not rely on . in @INC, which is no longer
necessarily there from Perl 5.25.7
* no longer include a Makefile.PL in the distribution
* update op-munging code to the PERL_OP_PARENT-compatible style
(though none of it is actually used on Perls new enough to support
PERL_OP_PARENT)
* rename internal gen_*_op() functions into a better style
* consistently use THX_ prefix on internal function names
version 0.010; 2016-03-18
* skip test with lexical $_ on Perl 5.23.4+ where that feature has
been removed
version 0.009; 2015-03-20
* in test of require for version checking, work around [perl #124135]
which was introduced in Perl 5.21.4
version 0.008; 2015-03-20
* bugfix: don't localise hints around a version-number require, so that
"use v5.10.0" can have its intentional effect of setting feature flags
* bugfix: in pure Perl implementation, use a ($) prototype on
CORE::GLOBAL::require, so that the argument expression will be in
the correct context
* better error message for refusing to use pure Perl implementation
on Perl 5.9.4 to 5.10.0
* document that the pure Perl implementation breaks the use of the
implicit $_ parameter with require
* in swash test, don't fail if utf8.pm was loaded unexpectedly early,
as has been seen to happen on some systems
* test idempotence
* fix test for thread safety, which risked false negatives
* when preemptively loading Carp and Carp::Heavy, avoid the Perl core
bug regarding the context applied to file scope of required modules,
in case of future versions of those modules becoming vulnerable and
running on an old Perl
* declare correct version for Test::More dependency
* typo fix in documentation
* typo fix in a comment
version 0.007; 2012-02-11
* bugfix: in the pure Perl implementation, provide the correct context
to the file scope of each file being loaded
* be thread-safe, by mutex control on op check hooking
* in pure Perl implementation, avoid putting extra eval stack frames
around the require, to avoid unnecessary complication of exception
handling; this can't be done on Perls 5.9.4 to 5.10.0, so don't
allow use of the pure Perl implementation on those Perls
* revise documentation to suggest loading this module earlier
* document the relevant changes to the Perl core in more detail
* on Perl versions where the pure Perl implementation can't work,
dynamically declare requirement for XS infrastructure in Build.PL
* refine threshold for ability to correctly override require from
5.8.0 to 5.7.2
* revise minimum required Perl version down from 5.6.1 to 5.6.0
* test that modules see the correct context at file scope
* test that module return values are handled correctly
* test that the module doesn't generate warnings
* in pure Perl implementation, fix handling of the variable that
previously needed to be "our"
* rearrange and better comment the treatment of lexical warnings in
the Perl code
version 0.006; 2011-11-20
* bugfix: avoid loading warnings.pm and leaving its delayed requires
of Carp.pm susceptible to hint leakage, which was causing trouble
on some Perls
* skip swash test on Perl 5.6, where swash loading appears to be broken
by loading Test::More or anything else useful
* remove bogus tests that cause false failures on Perl 5.15.5
* in Build.PL, declare incompatibility with pre-0.19
B::Hooks::OP::Check, which doesn't play nicely around op check hooking
* comment why a variable surprisingly needs to be "our"
* convert .cvsignore to .gitignore
version 0.005; 2011-07-25
* bugfix: work around core bug [perl #73174] affecting Unicode swash
loading, and apply entire workaround arrangement to 5.11.{0..5}
where [perl #73174] exists but [perl #68590] does not
* correct dynamic_config setting to 0
* include META.json in distribution
* add MYMETA.json to .cvsignore
version 0.004; 2010-11-21
* bugfix: don't attempt to use XS version of the workaround on Win32,
where it can't work properly due to linker restriction on access to
core symbols
* only define PERL_CORE for compilation on Perl versions where the
bug workaround (and thus interference with core-private stuff)
is actually necessary
* in XS, use PERL_NO_GET_CONTEXT for efficiency
* in XS, declare "PROTOTYPES: DISABLE" to prevent automatic generation
of unintended prototypes
* in XS, provide a reserve definition of croak, so that the Perl_croak
circumlocution is avoided even with PERL_CORE defined
* in XS, give symbolic names to the Perl version thresholds
* jump through hoops to avoid compiler warnings
* use full stricture in test suite
* also test POD coverage of pure Perl implementation
* in t/setup_pp.pl, avoid a warning that occurs if XSLoader::load()
is given no arguments, which is now a valid usage
* in Build.PL, explicitly set needs_compiler to avoid bogus
auto-dependency on ExtUtils::CBuilder
* in Build.PL, complete declaration of configure-time requirements
version 0.003; 2010-04-10
* bugfix: in pure-Perl implementation, make sure ambient package (from
which require is invoked) is passed on correctly to the code in the
required file, on those Perls where it is so inherited
* in XS, use macros to avoid explicit passing of aTHX, in the manner
of the core
* in XS, avoid using "class" as a variable name, for compatibility
with C++ compilers
* make all numeric comparisons against $] stringify it first, to avoid
architecture-dependent problems with floating point rounding giving
it an unexpected numeric value
* in Build.PL, explicitly declare configure-time requirements
* add MYMETA.yml to .cvsignore
version 0.002; 2009-10-21
* generate a more normal-looking op tree, that doesn't crash B::Deparse
* don't apply the workaround on Perl 5.11.0 or later, where the bug
has been fixed
* in t/seal.t, test that cop_hints_hash is properly handled
* check for required Perl version at runtime
version 0.001; 2009-09-26
* bugfix: die cleanly if the pure-Perl implementation is needed but
won't work (which occurs on pre-5.8 perls)
* bugfix: avoid undesired warning from pure-Perl implementation if
require has already been overridden via CORE::GLOBAL::require
* in tests, set HINT_LOCALIZE_HH where appropriate, to avoid false
test failures on pre-5.10 perls
* test that the module plays nicely with code that overrides require
via CORE::GLOBAL::require
version 0.000; 2009-09-22
* initial released version