1Revision history for autovivification 2 30.18 2017-11-04 15:30 UTC 4 + Fix : [RT #123411] : Compatibility with CV-in-stash optimisation 5 Thanks Father Chrysostomos for reporting and contributing a 6 patch. 7 + Fix : [RT #122956] : strict/warn flags seem to simply do nothing 8 The documentation has been amended to clarify how these two 9 options are supposed to be used. 10 Thanks Christian Walde for reporting. 11 120.17 2017-07-31 17:15 UTC 13 + Chg : A large chunk of boilerplate XS code, which is also used in 14 other XS modules, has been factored out of the main .xs file 15 to a collection of .h files in the xsh subdirectory. 16 + Fix : The new optimization in perl 5.27.3 for scalar(keys(%$hashref)) 17 is now correcty supported. 18 190.16 2015-07-01 14:30 UTC 20 + Fix : Broken linkage on Windows. 21 220.15 2015-05-14 20:35 UTC 23 + Chg : The new environment variable to enable thread tests on older 24 perls is PERL_FORCE_TEST_THREADS. Note that this variable 25 should only be turned on by authors. 26 + Fix : The module has been taught about the new multideref 27 optimization, and will function properly on perl 5.21.11 and 28 above. 29 + Fix : The module will no longer crash or behave erratically when it 30 is loaded by several threads (or Windows emulated processes) 31 ran in parallel. 32 + Fix : Update the Windows ActivePerl + gcc 3.4 workaround for 33 ExtUtils::MakeMaker 7.04. Thanks Christian Walde for reporting 34 and feedback on this issue. 35 + Fix : Be really compatible with the optional OP_PARENT feature. 36 + Tst : $ENV{$Config{ldlibpthname}} is now preserved on all platforms, 37 which will address failures of t/43-peep.t and 38 t/51-threads-teardown.t with unusual compilers (like icc) that 39 link all their compiled objects to their own libraries. 40 410.14 2014-11-01 22:25 UTC 42 + Fix : [RT #99458] : AnyEvent::Loop hangs if autovivification 0.13 is 43 loaded 44 [RT #99904] : 'no autovivification' breaks Lingua::EN::Inflect 45 from a distance 46 This was a regression in 0.13 which caused the peephole 47 optimizer to loop infinitely on "... while 1" constructs. 48 However, the Lingua::EN::Inflect problem only occured in perl 49 5.20 and above. 50 Thanks Toshio Ito and Kent Fredric for reporting. 51 520.13 2014-10-04 16:55 UTC 53 This release contains a change that, while being very likely to be safe, 54 can potentially cause freezes during code compilation. Every release 55 should be carefully tested before being put in production, but this is 56 especially true for this one. 57 + Add : Support for the PERL_OP_PARENT optional feature introduced in 58 perl 5.21.2. 59 + Doc : The CAVEATS section now warns about the global slowdown during 60 compilation caused by this pragma. 61 + Fix : [RT #97703] : Android support 62 t/51-threads-teardown.t will no longer fail on Android. 63 Thanks Brian Fraser for reporting. 64 + Fix : Segfaults in eval in an END block of a Win32 pseudo-fork. 65 + Fix : Segfaults during global destruction of a thread or a 66 pseudo-fork. 67 + Opt : The global slowdown caused by this module has been greatly 68 reduced. 69 Thanks Ævar Arnfjörð Bjarmason for reporting and testing the 70 change. 71 720.12 2013-09-05 17:20 UTC 73 + Fix : Check functions are now replaced and restored in a thread-safe 74 manner, either by using the wrap_op_checker() function from perl 75 when it is available (starting from perl 5.16) or by taking the 76 OP_REFCNT mutex on older perls. 77 + Tst : Author tests are no longer bundled with this distribution. 78 They are only made available to authors in the git repository. 79 800.11 2013-02-08 19:25 UTC 81 This is a maintenance release. The code contains no functional change. 82 Satisfied users of version 0.10 can skip this update. 83 + Doc : POD tweaks and clarifications. 84 + Tst : Threads tests will not fail anymore if resources constraints 85 prevent the system from creating all the required threads. 86 + Tst : Author tests overhaul. 87 880.10 2011-08-24 15:00 UTC 89 + Fix : The pragma no longer vivifies the "autovivification" entry 90 in the hints hash %^H on perl 5.8. 91 920.09 2011-01-05 18:40 UTC 93 + Fix : [RT #64435] : Hangs with File::Copy in Config.pm. 94 This was actually a regression introduced together with the new 95 peephole optimizer strategy, and that caused the pragma to hang 96 on constructs like "for (;;) { ... }". 97 Thanks Michael Schilli for reporting. 98 990.08 2011-01-03 21:00 UTC 100 + Fix : Building on Windows. 101 1020.07 2010-12-31 16:20 UTC 103 + Chg : perl 5.8.3 is required. 104 + Doc : Complements and clarifications. 105 + Fix : Segmentation faults and misbehaviours in threaded applications. 106 + Fix : Compatibility with perl 5.13.7. 107 Thanks Andreas J. König for reporting and Andrew Main for 108 providing a fix. 109 + Fix : Broken linkage on Windows with gcc 3.4, which appears in 110 particular when using ActivePerl's default compiler suite. 111 For those setups, the autovivification shared library will now 112 be linked against the perl dll directly (instead of the import 113 library). 114 + Opt : The pragma takes slightly more time at compile-time, but is 115 slightly faster at run-time. 116 + Tst : Lengthy tests have been ported to Test::Leaner, making the 117 whole test suite about 50% faster. 118 + Tst : Threads tests are now only run on perl 5.13.4 and higher. 119 They could segfault randomly because of what seems to be an 120 internal bug of Perl, which has been addressed in 5.13.4. 121 There is also an environment variable that allows you to 122 forcefully run those tests, but it should be set only for 123 author testing and not for end users. 124 1250.06 2010-04-24 17:40 UTC 126 + Add : The A_THREADSAFE and A_FORKSAFE constants. 127 + Fix : [RT #56870] : "no autovivification" vs Regexp::Common. 128 This was a bug in how tied arrays and hashes were handled. 129 Thanks Michael G. Schwern for reporting. 130 + Fix : Scope leaks under perl 5.8-5.10.0. 131 + Fix : Segfaults when first loading the pragma from inside a thread. 132 1330.05 2010-03-05 23:15 UTC 134 + Fix : [RT #55154] : Crashes and assertion failures when deparsing and 135 re-eval-uating some code compiled while autovivification was in 136 use. 137 Thanks Michael G. Schwern for reporting. 138 + Fix : [RT #53647] : "leys" typo in pod. 139 Thanks Hinrik Orn Sigurdsson for reporting. 140 1410.04 2010-01-10 00:30 UTC 142 + Add : Array and hash slices are now handled by the pragma. 143 + Fix : Work around Kwalitee test misfailures. 144 1450.03 2009-06-23 22:20 UTC 146 + Add : Handle old-fashion dereferencing (like $$hashref{key}). 147 + Chg : Aliasing constructs (for ($x{foo}) { ... }) are now covered by 148 the 'store' category (and no longer the 'fetch' one). This is 149 because there's no way to know at compile-time if the alias 150 will be assigned to. 151 + Fix : Quadratic complexity at compile-time. 152 + Fix : Segfaults when dereferencing globals. 153 + Fix : Segfaults on big-endian systems. 154 + Tst : Really test plain arrays and hashes. 155 + Tst : Improved coverage. 156 1570.02 2009-06-17 18:05 UTC 158 + Add : 'fetch' also applies to aliasing ("for ($hashref->{key}) { }"). 159 + Fix : Don't segfault on "keys/values %$hashref", and don't vivify if 160 'fetch' is set. 161 + Fix : Plain dereferencing shouldn't have a different behaviour when 162 the pragma is in use. 163 + Tst : Improved coverage. 164 1650.01 2009-06-14 20:10 UTC 166 First version, released on an unsuspecting world. 167 168