The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
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