This is 0.39
[perl/modules/indirect.git] / Changes
1 Revision history for indirect
2
3 0.39    2019-07-08 12:00 UTC
4         + Fix : [RT #127118] : Fails on perl >= v5.28.0 with -DDEBUGGING
5                 The module has been amended to accomodate with a change of
6                 behaviour of a core macro.
7         + Upd : Contact info.
8
9 0.38    2017-11-04 15:40 UTC
10         + Fix : [RT #123374] : Compatibility with CV-in-stash optimisation
11                 Thanks Father Chrysostomos for reporting and contributing a
12                 patch.
13
14 0.37    2016-07-12 16:40 UTC
15         + Chg : A large chunk of boilerplate XS code, which is also used in
16                 other XS modules, has been factored out of the main .xs file
17                 to a collection of .h files in the xsh subdirectory.
18         + Fix : [RT #115392] : Intermittent segfaults with heredocs
19                 Heredocs should now be handled correctly.
20                 Thanks Graham Knop for reporting.
21
22 0.36    2015-07-17 22:15 UTC
23         + Fix : [RT #104312] : fatal hides perl errors in modules
24                 no indirect 'fatal' will no longer hide compilation errors
25                 occurring before indirect constructs.
26                 Thanks Lukas Mai for reporting.
27
28 0.35    2015-04-06 22:20 UTC
29         + Fix : The module could end being disabled in one thread if it was
30                 first loaded in another thread and that thread was immediately
31                 terminated. This is now fixed and should address test failures
32                 of t//09-load-threads.t and t/42-threads-global.t.
33
34 0.34    2015-04-02 19:50 UTC
35         + Chg : The new environment variable to enable thread tests on older
36                 perls is PERL_FORCE_TEST_THREADS. Note that this variable
37                 should only be turned on by authors.
38         + Fix : [RT #100068] : add link to historical tchrist post
39                 The link has been added to the documentation. Thanks Olivier
40                 MenguĂ© for reporting.
41         + Fix : Segfaults when the module is loaded by several threads (or
42                 Windows emulated processes) ran in parallel.
43         + Fix : Update the Windows ActivePerl + gcc 3.4 workaround for
44                 ExtUtils::MakeMaker 7.04. Thanks Christian Walde for reporting
45                 and feedback on this issue.
46         + Fix : Be really compatible with the optional OP_PARENT feature.
47         + Tst : $ENV{$Config{ldlibpthname}} is now preserved on all platforms,
48                 which will address failures of t/41-threads-teardown.t and
49                 t/50-external.t with unusual compilers (like icc) that link all
50                 their compiled objects to their own libraries.
51
52 0.33    2014-09-29 20:20 UTC
53         + Fix : [RT #99083] : Breaks eval in an END block in Win32 pseudo-forks.
54                 Thanks Graham Knop for reporting.
55         + Fix : Segfaults during global destruction of a thread or a
56                 pseudo-fork.
57
58 0.32    2014-09-21 20:15 UTC
59         + Add : Support for the PERL_OP_PARENT optional feature introduced in
60                 perl 5.21.2.
61         + Fix : [RT #92806] : Tests that use run_perl() fail on Android
62                 Thanks Brian Fraser for the patch.
63         + Fix : indirect constructs will no longer segfault while inside
64                 the empty package on perl 5.8.x. This fix may also prevent
65                 some segfaults during global destruction.
66
67 0.31    2013-09-05 16:45 UTC
68         + Fix : [RT #88428] : no indirect in eval can trigger for direct calls
69                 on __PACKAGE__
70                 Thanks Graham Knop for reporting.
71         + Tst : Author tests are no longer bundled with this distribution.
72                 They are only made available to authors in the git repository.
73
74 0.30    2013-05-16 15:55 UTC
75         + Fix : [RT #83806] : false positives with Devel::Declare
76                 [RT #83839] : false positive using ? : syntax
77                 Thanks Andrew Main for the patch.
78                 However, please note that the reason this patch seems to fix
79                 thinks has not been explained.
80         + Fix : [RT #84649] : incorrect RT link in metadata
81                 Thanks Karen Etheridge for reporting.
82
83 0.29    2013-03-05 01:30 UTC
84         + Fix : [RT #83659] : false positives
85                 Proper method calls in string-like environments (like
86                 "@{[ $x->new ]}" will no longer be reported as indirect.
87                 This was a regression in 0.28.
88                 Thanks Andrew Main for reporting.
89         + Fix : Broken linkage on Windows with gcc 3.4, which appears in
90                 particular when using ActivePerl's default compiler suite.
91                 For those setups, the indirect shared library will now be
92                 linked against the perl dll directly (instead of the import
93                 library).
94
95 0.28    2013-02-26 17:05 UTC
96         + Fix : [RT #83450] : newlines confuse indirect
97                 Perl sometimes resets the line buffer between the object and
98                 the method name (e.g. for "sort Class\n->method" outside of
99                 eval), and this could cause direct method calls to be reported
100                 as indirect.
101                 Thanks Gianni Ceccarelli for reporting.
102         + Fix : Check functions are now replaced and restored in a thread-safe
103                 manner, either by using the wrap_op_checker() function from perl
104                 when it is available (starting from perl 5.16) or by taking the
105                 OP_REFCNT mutex on older perls.
106
107 0.27    2013-01-30 19:00 UTC
108         + Fix : [RT #82562] : indirect/Devel::CallParser interaction
109                 indirect has been taught to play nicely with Devel::CallParser.
110                 Thanks Andrew Main for the patch.
111         + Tst : Author tests overhaul.
112
113 0.26    2011-10-23 14:25 UTC
114         + Add : "no indirect 'global'" enables the pragma for the whole program,
115                 except for lexical scopes that "use indirect" explicitely.
116         + Chg : Passing both the 'fatal' and 'hook' options to unimport() is
117                 now considered an error, and will result in an exception.
118                 unimport() used to consider only the first passed option of
119                 those two, and silently ignored the other.
120         + Tst : Test failures of t/41-threads-teardown.t and t/50-external.t on
121                 Cygwin should have been addressed.
122         + Tst : Threads tests will not fail anymore if resources constraints
123                 prevent the system from creating all the required threads.
124
125 0.25    2011-08-24 15:40 UTC
126         + Fix : RT #69291 is now also fixed for perl 5.8. The pragma will no
127                 longer vivify the "indirect" entry in the hints hash %^H on
128                 perl 5.8.
129         + Tst : Attempt to make t/50-external.t pass on Cygwin.
130
131 0.24    2011-07-17 23:15 UTC
132         + Fix : [RT #64521] : "no indirect" leaking into eval.
133                 This is currently only fixed for perl 5.10 (perl 5.12 and
134                 higher were never affected). It was caused by a very stupid
135                 mistake of mine that was introduced in indirect version 0.23.
136                 Thanks Michael G Schwern for reporting.
137         + Fix : [RT #69291] : indirect.pm breaks %^H.
138                 This was caused by the same mistake as for the previous bug,
139                 and as such it is also only fixed for perl 5.10 (and never
140                 affected perl 5.12).
141                 Thanks Andrew Main for reporting.
142         + Doc : C++ compilers are officially NOT supported.
143
144 0.23    2010-10-03 00:15 UTC
145         + Fix : Some indirect constructs could be incorrectly reported when
146                 several modules were used in the same scope. This caused
147                 t/30-scope.t to fail randomly.
148         + Tst : Threads tests are now only run on perl 5.13.4 and higher.
149                 They could segfault randomly because of what seems to be an
150                 internal bug of Perl, which has been addressed in 5.13.4.
151                 There is also an environment variable that allows you to
152                 forcefully run those tests, but it should be set only for
153                 author testing and not for end users.
154
155 0.22    2010-08-16 16:00 UTC
156         + Add : Indirect constructs are now reported for code interpolated
157                 in quote-like environments, like "${\( ... )}", "@{[ ... ]}",
158                 s/pattern/ ... /e, qr/(?{ ... })/ or qr/(??{ ... })/.
159         + Add : You can now make the pragma lethal by passing anything matching
160                 /^:?fatal$/i to import(), including "FATAL" and ":Fatal".
161         + Fix : [RT #60378] : segmentation fault on indirect_ck_method.
162                 This caused constructs like "@{[ $obj->$meth ]}" to segfault
163                 when $meth was a lexical.
164                 Thanks Tokuhiro Matsuno for reporting.
165
166 0.21    2010-05-31 23:10 UTC
167         + Chg : perl 5.8.1 is now required (instead of 5.8.0).
168         + Fix : [RT #57699] : indirect fail with 64-bit int on 5.13.1.
169                 It was actually a problem with thread destructors segfaulting
170                 because they weren't called at the right time anymore.
171                 Thanks Andrew Main for reporting.
172         + Tst : A few more regression tests about the scope leak bug.
173
174 0.20    2010-04-18 21:25 UTC
175         + Fix : [RT #50570] : "indirect" leaking into LWP.
176                 Thanks Andrew Main for reporting.
177                 More generally, the require propagation workaround on 5.8-5.10.0
178                 has been overhauled, and other scope leaks should be fixed.
179         + Fix : Test failures with 5.12 on Windows where Strawberry Perl crashes
180                 because the SystemRoot environment variable is missing.
181         + Fix : Work around Kwalitee test misfailures.
182
183 0.19    2009-08-28 18:40 UTC
184         + Add : The new constant I_FORKSAFE can be tested to know whether the
185                 module will behave nicely when fork()ing. It's currently always
186                 true except on Windows where you need perl 5.10.1 for it to be
187                 true.
188         + Fix : I_THREADSAFE and I_FORKSAFE ought to be true when
189                 PERL_INDIRECT_PM_DISABLE is set.
190         + Fix : The pragma could still leak if you passed to the "hook" option
191                 a reference to the same (named) subroutine from two different
192                 require scopes. The fix also provides a better solution for
193                 RT #47902.
194         + Fix : Segfaults when indirect is loaded for the first time from
195                 inside a thread.
196         + Fix : Leaks of memory associated with the root interpreter.
197         + Opt : Less memory will be used for non-threaded perls version 5.10.0
198                 and below, and for threaded perls from version 5.10.1.
199
200 0.18    2009-08-23 16:15 UTC
201         + Add : When set, the PERL_INDIRECT_PM_DISABLE environment variable
202                 disables the pragma globally.
203
204 0.17    2009-07-16 12:10 UTC
205         + Fix : [RT #47902] : "no indirect" leaking again.
206                 This actually turned out to be a bug in how the hook coderefs
207                 were stored in the hints hash.
208                 Thanks Andrew Main for reporting once again.
209         + Fix : t/80-regressions.t failing on Windows.
210         + Tst : Yet more cleanups.
211
212 0.16    2009-07-14 16:50 UTC
213         + Add : Indirect calls on blocks are now reported. For those, '{' is
214                 passed to the hook as the object description.
215         + Add : The new indirect::msg() function publicizes the default
216                 warning/exception message.
217         + Fix : [RT #47866] : Segfault with UTF-8 regexps.
218                 Thanks Andrew Main for reporting.
219         + Tst : Cleanups.
220
221 0.15    2009-07-08 22:55 UTC
222         + Fix : Invalid constructs with the same method and package name were
223                 not reported.
224         + Fix : The error line number used to point to the end of the expression
225                 instead of its beginning.
226
227 0.14    2009-06-04 21:55 UTC
228         + Fix : Prevent bogus invalid syntaxes caused by reallocated memory
229                 chunks. Thanks Andrew Main for reporting with a reproducible
230                 test case.
231
232 0.13    2009-05-24 18:50 UTC
233         + Add : The hook now receives the file name and the line where the
234                 error happened in respectively $_[2] and $_[3].
235         + Fix : Pass mortalized copies of the method name and object to the
236                 hook. This seems to fix some rare crashes.
237         + Fix : Work around a bug in perl 5.10.0 and lower. Thanks Andrew Main
238                 for teaching me about this issue.
239         + Fix : Report the correct file in error messages (a regression from the
240                 previous version).
241
242 0.12    2009-05-03 14:30 UTC
243         + Add : You can specify the action to execute for each indirect
244                 construct encountered with the new "hook => $coderef" unimport()
245                 option.
246         + Chg : A ptable is now used internally for the op => position mapping.
247         + Fix : The pragma is now built with thread safety features enabled
248                 whenever possible (a notable exception is perl 5.8.x on Win32,
249                 as something seems wrong with its context handling).
250                 The new indirect::I_THREADSAFE() constant reflects this.
251         + Fix : A negation precedence nit in indirect_ck_entersub().
252         + Tst : "use/no indirect" while parsing an indirect construct.
253         + Tst : Thread safety.
254
255 0.11    2009-02-08 18:35 UTC
256         + Fix : Potential collisions by hashing pointers with a wrong format.
257         + Upd : Resources in META.yml.
258
259 0.10    2009-01-17 12:40 UTC
260         Re-release 0.09_01 as stable.
261
262 0.09_01 2008-12-08 17:55 UTC
263         + Fix : Invalid memory read with "${\(new Foo)}" constructs. The
264                 corresponding test is turned back on.
265         + Tst : Refinements in t/30-scope.t
266
267 0.09    2008-12-05 20:35 UTC
268         + Add : Support for perl 5.8.
269         + Tst : Skip a test in t/10-good.t that randomly segfaults for (I guess)
270                 systems stricter than linux in the way they manage their memory.
271
272 0.08    2008-10-22 14:45 UTC
273         + Fix : A rare edge case for package whose names are prefix of 'main'.
274         + Tst : Test $$ as variable and state variables.
275
276 0.07_03 2008-10-17 20:10 UTC
277         + Add : Support and tests for variables with spaces after the sigil.
278         + Upd : META.yml spec updated to 1.4.
279
280 0.07_02 2008-10-15 21:10 UTC
281         + Add : Support and tests for package variables.
282         + Tst : Coverage improved by removing dead code.
283
284 0.07_01 2008-10-15 16:00 UTC
285         + Fix : [RT #40055] : Not handling RV2SV => GV(SV) correctly, which
286                 could cause 'no indirect; print' segfaults. Thanks Goro Fuji for
287                 reporting.
288
289 0.06    2008-10-11 16:45 UTC
290         + Doc : Nits.
291         + Tst : Test "no indirect 'anything'", "foo Class->bar", and indirect
292                 uses of exec() and system().
293
294 0.05    2008-10-02 14:40 UTC
295         + Chg : Now the old check function is always called before storing an op
296                 into the map.
297         + Fix : Misc code and docs refinements.
298
299 0.04    2008-08-30 19:00 UTC
300         + Fix : Clean up the op->src hash when we're done with an entersub.
301         + Tst : No longer fork for testing. IPC::Cmd isn't required anymore.
302
303 0.03    2008-08-12 15:25 UTC
304         This release is kindly supported by Copenhagen Hotel Centrum WiFi.
305         + Fix : Tests used not to pass PERL5OPTS to their kids. This lead to
306                 failures under CPAN. I think.
307         + Tst : Refinements.
308
309 0.02    2008-08-11 15:55 UTC
310         + Fix : Some building failures with old gcc versions that didn't seem to
311                 like the ((hint == 2) ? croak : warn)(msg) construct. I think.
312         + Rem : Unused cruft from a previous implementation.
313         + Tst : Fail more gracefully when we can't capture buffers or when the
314                 child returned an error.
315
316 0.01    2008-08-10 20:40 UTC
317         First version, released on an unsuspecting world.
318