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