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