Revision history for autovivification 0.12 2013-09-05 17:20 UTC + Fix : Check functions are now replaced and restored in a thread-safe manner, either by using the wrap_op_checker() function from perl when it is available (starting from perl 5.16) or by taking the OP_REFCNT mutex on older perls. + Tst : Author tests are no longer bundled with this distribution. They are only made available to authors in the git repository. 0.11 2013-02-08 19:25 UTC This is a maintenance release. The code contains no functional change. Satisfied users of version 0.10 can skip this update. + Doc : POD tweaks and clarifications. + Tst : Threads tests will not fail anymore if resources constraints prevent the system from creating all the required threads. + Tst : Author tests overhaul. 0.10 2011-08-24 15:00 UTC + Fix : The pragma no longer vivifies the "autovivification" entry in the hints hash %^H on perl 5.8. 0.09 2011-01-05 18:40 UTC + Fix : [RT #64435] : Hangs with File::Copy in Config.pm. This was actually a regression introduced together with the new peephole optimizer strategy, and that caused the pragma to hang on constructs like "for (;;) { ... }". Thanks Michael Schilli for reporting. 0.08 2011-01-03 21:00 UTC + Fix : Building on Windows. 0.07 2010-12-31 16:20 UTC + Chg : perl 5.8.3 is required. + Doc : Complements and clarifications. + Fix : Segmentation faults and misbehaviours in threaded applications. + Fix : Compatibility with perl 5.13.7. Thanks Andreas J. König for reporting and Andrew Main for providing a fix. + Fix : Broken linkage on Windows with gcc 3.4, which appears in particular when using ActivePerl's default compiler suite. For those setups, the autovivification shared library will now be linked against the perl dll directly (instead of the import library). + Opt : The pragma takes slightly more time at compile-time, but is slightly faster at run-time. + Tst : Lengthy tests have been ported to Test::Leaner, making the whole test suite about 50% faster. + Tst : Threads tests are now only run on perl 5.13.4 and higher. They could segfault randomly because of what seems to be an internal bug of Perl, which has been addressed in 5.13.4. There is also an environment variable that allows you to forcefully run those tests, but it should be set only for author testing and not for end users. 0.06 2010-04-24 17:40 UTC + Add : The A_THREADSAFE and A_FORKSAFE constants. + Fix : [RT #56870] : "no autovivification" vs Regexp::Common. This was a bug in how tied arrays and hashes were handled. Thanks Michael G. Schwern for reporting. + Fix : Scope leaks under perl 5.8-5.10.0. + Fix : Segfaults when first loading the pragma from inside a thread. 0.05 2010-03-05 23:15 UTC + Fix : [RT #55154] : Crashes and assertion failures when deparsing and re-eval-uating some code compiled while autovivification was in use. Thanks Michael G. Schwern for reporting. + Fix : [RT #53647] : "leys" typo in pod. Thanks Hinrik Orn Sigurdsson for reporting. 0.04 2010-01-10 00:30 UTC + Add : Array and hash slices are now handled by the pragma. + Fix : Work around Kwalitee test misfailures. 0.03 2009-06-23 22:20 UTC + Add : Handle old-fashion dereferencing (like $$hashref{key}). + Chg : Aliasing constructs (for ($x{foo}) { ... }) are now covered by the 'store' category (and no longer the 'fetch' one). This is because there's no way to know at compile-time if the alias will be assigned to. + Fix : Quadratic complexity at compile-time. + Fix : Segfaults when dereferencing globals. + Fix : Segfaults on big-endian systems. + Tst : Really test plain arrays and hashes. + Tst : Improved coverage. 0.02 2009-06-17 18:05 UTC + Add : 'fetch' also applies to aliasing ("for ($hashref->{key}) { }"). + Fix : Don't segfault on "keys/values %$hashref", and don't vivify if 'fetch' is set. + Fix : Plain dereferencing shouldn't have a different behaviour when the pragma is in use. + Tst : Improved coverage. 0.01 2009-06-14 20:10 UTC First version, released on an unsuspecting world.