1 Revision history for Scope-Upper
3 0.33 2021-12-20 20:30 UTC
4 + Fix : [RT #114816] resources/remote/url points to web interface
5 META files now follow version 2.0 of the CPAN META spec.
6 Thanks Kent Fredric for reporting.
7 + Fix : [RT #139823] : Perl 5 blead breads t/07-context_info.t
8 t/07-context_info.t has been hardened against warning bits
10 Thanks Jim Keenan and Tony Cook for reporting and contributing
13 0.32 2019-07-08 12:50 UTC
14 + Fix : [RT #129539] : fails with v5.27.3 and later with DEBUGGING
15 The module has been amended to accomodate with a change of
16 behaviour of a core macro.
19 0.31 2018-08-26 19:50 UTC
20 + Fix : [RT #125931] : localized SCALAR doesn't get imported
21 localize '$Foo::x' => $var now properly imports $x into Foo.
22 Thanks Vernon Lyon for reporting.
24 0.30 2017-11-04 15:55 UTC
25 + Fix : [RT #123481] : Compatibility with CV-in-stash optimisation
26 Thanks Father Chrysostomos for reporting and contributing a
29 0.29 2016-06-06 12:00 UTC
30 + Chg : A large chunk of boilerplate XS code, which is also used in
31 other XS modules, has been factored out of the main .xs file
32 to a collection of .h files in the xsh subdirectory.
33 + Fix : [RT #112246] : Blead breaks Scope::Upper
34 Dave Mitchell provided a new implementation of reap(),
35 localize_*() and uplevel() to match the new context stack
36 handling in perl 5.24. Many thanks to him.
38 0.28 2015-08-18 15:00 UTC
39 + Chg : SUB() and EVAL() will now warn if they cannot find an
40 appropriate context in the current stack. They will still
41 return undef in this case, which is interpreted as the current
42 context when combined with other words.
43 + Fix : [RT #104751] : Scope::Upper does not handle exotic stack types
44 Trying to target a scope above the current perl scope will now
45 result in a warning. In that case, the topmost context in the
46 current stack will still be returned.
47 Thanks Rafaël Garcia-Suarez for the report.
48 + Fix : Test failures of threads tests on systems with harsh resource
49 constraints causing the threads to exit() during run.
50 + Opt : Some internal structures were shrunk, resulting in memory
51 savings and small speedups.
53 0.27 2015-03-27 22:10 UTC
54 + Chg : The new environment variable to enable thread tests on older
55 perls is PERL_FORCE_TEST_THREADS. Note that this variable
56 should only be turned on by authors.
57 + Fix : Segfaults when the module is loaded by several threads (or
58 Windows emulated processes) ran in parallel.
59 + Fix : Memory leak with the uid() feature.
60 + Fix : Update the Windows ActivePerl + gcc 3.4 workaround for
61 ExtUtils::MakeMaker 7.04. Thanks Christian Walde for reporting
62 and feedback on this issue.
63 + Fix : reap(), localize(), localize_elem() and localize_delete()
64 will again work correctly on perl 5.19.4+ when the debugger
66 + Fix : Silence some compiler warnings.
68 0.26 2015-03-12 23:30 UTC
69 + Fix : [RT #100264] : Don't use CvPADLIST on XSUBs
70 Thanks Father Chrysostomos for reporting and contributing a
72 + Fix : Be really compatible with the optional OP_PARENT feature.
74 0.25 2014-09-21 17:10 UTC
75 + Add : Support for the PERL_OP_PARENT optional feature introduced in
77 + Fix : Work around an assertion failure in perl 5.21.4.
79 0.24 2013-09-10 11:10 UTC
80 + Fix : Lexicals returned with unwind(), yield() and leave() will no
81 longer be lost on perl 5.19.4 and above.
83 0.23 2013-09-02 11:30 UTC
84 This is a maintenance release. The code contains no functional change.
85 Satisfied users of version 0.22 can skip this update.
86 + Fix : [RT #87178] : typo fixes.
87 Thanks dsteinbrunner@pobox.com for the patch.
88 + Fix : [RT #88177] : 5.19.3 block hint test breakage
89 t/07-context_info.t has been taught about perl 5.19.3.
90 Thanks Andrew Main for the patch.
91 + Tst : Author tests are no longer bundled with this distribution.
92 They are only made available to authors in the git repository.
93 + Tst : "given is experimental" warnings when running tests on perl
94 5.18 and above have been silenced.
96 0.22 2013-01-30 23:35 UTC
97 + Chg : perl 5.6.1 is required.
98 + Fix : context_info() now ignores %warnings::Bits for perl 5.8.6 and
99 below, just like caller().
100 + Fix : [RT #82220] : Scope-Upper-0.21 test stuck on Windows perl 5.12.3
101 t/93-pod-spelling.t will not crash anymore on perl 5.12 and
103 Thanks Gabor Szabo for reporting and Slaven Rezic for debugging
105 + Tst : Rare test failures of t/07-context_info.t on perl 5.6,
106 t/55-yield-target.t on perl 5.[68], and t/63-uplevel-ctl.t on
107 perl 5.8.[345] have been addressed.
109 0.21 2012-09-21 15:10 UTC
110 + Fix : context_info() has been taught about perl 5.17.4.
111 + Fix : t/07-context_info.t will no longer fail with perls that have
112 sitecustomize enabled (like many perl builds for Windows).
113 Thanks Steve Hay and Nicholas Clark for debugging help.
114 + Fix : Broken linkage on Windows with gcc 3.4, which appears in
115 particular when using ActivePerl's default compiler suite.
116 For those setups, the Scope::Upper shared library will now be
117 linked against the perl dll directly (instead of the import
120 0.20 2012-09-17 11:00 UTC
121 + Add : The new yield(@values, $context) function can be used to return
122 values to any upper scope, including do or map blocks.
123 The new leave(@values) function is an alias for
124 yield(@values, HERE).
125 + Add : The new context_info($context) function return information
126 about context $context, similarly to what caller() provides
127 but for any upper scope.
128 + Chg : Contexts are now normalized. In previous versions, it was
129 possible for different contexts to refer to the same scope :
130 for example, "for (my $i = 0; $i < 10; ++$i) { ... }" was
131 reachable through two contexts, while "for (@array) { ... }"
132 only by one. Starting from this version, contexts are
133 normalized so that they always represent an actual scope.
134 + Doc : C++ compilers are officially NOT supported.
135 + Fix : Building with a more recent version of perl 5.17.4.
136 + Fix : Debugger compatibility with perl 5.17.1 and above.
138 0.19 2012-09-01 13:25 UTC
139 + Doc : POD headings have been made linkable.
140 + Fix : Building with perl 5.17.4.
141 + Fix : BUILD_PREREQS are now set for ExtUtils::MakeMaker.
142 + Opt : uplevel() private data structure is 7% smaller on 64 bits
144 + Tst : Author tests overhaul.
146 0.18 2011-10-10 20:50 UTC
147 + Add : The uid() function returns an unique identifier for each dynamic
148 scope. The validate_uid() function can be used to check whether
149 one such identifier is valid (i.e. that the scope it refers to
151 + Chg : It is no longer possible on perl 5.6 to call goto() in an
152 uplevel callback to replace the uplevel call. This change was
153 needed in order to ensure consistency between platforms
154 regarding to the following fix just below.
155 + Fix : The uplevel() tests now pass on Windows.
156 Thanks C.H. Kang for bringing this to my attention.
158 0.17 2011-10-03 21:45 UTC
159 + Fix : uplevel() will now use the correct pad when executing its
160 callback. This fixes at least two issues :
161 - closures defined inside the uplevel callback can now correctly
162 access lexicals from inside and outside the callback.
163 - state variables in the uplevel callback now work properly.
164 + Fix : It is now generally possible to call goto() in the uplevel'd
165 code to replace the uplevel stack frame. There are two cases
166 for which it is still not possible :
167 - if -D flags were set when running perl (as in "perl -Dt ...").
168 - if the perl runloop has been replaced with a custom one by
170 If uplevel() detects that the replacement code contains a goto
171 statement, and is in one of those two cases, then it will refuse
172 to execute the callback and throw an exception.
173 Note that this fix implies a run-time overhead of uplevel()
174 proportional to the size of the the callback in every case
175 (with a small ratio), and proportional to the size of ALL the
176 code executed as the result of the uplevel call (including
177 subroutine calls inside the callback) when a goto statement is
178 found in the uplevel callback.
179 + Fix : uplevel() has been taught how to handle XS callbacks properly.
180 + Fix : The cause of "Attempt to free unreferenced scalar" warnings
181 when using uplevel() has been addressed.
182 + Fix : [RT #71212] : build failure on Windows.
183 The module does no longer rely on calling Perl_cv_clone, which
185 Thanks C.H. Kang for reporting.
187 0.16 2011-09-03 23:00 UTC
188 + Add : uplevel($code, @args, $cxt) executes $code with arguments @args
189 in the upper context pointed by $cxt.
190 This is an XS version of the well-known uplevel() routine from
191 Sub::Uplevel. There are a few differences between both
192 implmentations that are listed in the documentation.
193 The XS version is roughly 10 times faster than the pure-Perl
196 0.15 2011-08-24 14:20 UTC
197 + Fix : Localizing subroutines in an higher scope will now correctly
198 update the method cache.
200 0.14 2011-02-27 00:00 UTC
201 + Fix : [RT #64997] : Compatibility with perl 5.13.10.
202 Thanks Dave Mitchell for the notice.
203 + Tst : Lengthy tests have been ported to Test::Leaner, making the
204 whole test suite about 50% faster.
206 0.13 2010-12-20 01:00 UTC
207 + Fix : [RT #61904] : Stack corruption when using unwind() under
209 Thanks Sergey Aleynikov for contributing a fix.
210 + Fix : [RT #63378] : Compatibility with perl 5.13.8.
211 Thanks Andreas J. König for bisecting the issue.
212 + Tst : Threads tests are now only run on perl 5.13.4 and higher.
213 They could segfault randomly because of what seems to be an
214 internal bug of Perl, which has been addressed in 5.13.4.
215 There is also an environment variable that allows you to
216 forcefully run those tests, but it should be set only for
217 author testing and not for end users.
219 0.12 2010-05-19 00:45 UTC
220 + Fix : Compatibility with perl 5.13.
221 + Fix : Test failures with perl 5.8.0.
222 + Fix : A minor leak of SVs when a non array/hash was passed to
225 0.11 2010-04-16 23:20 UTC
226 + Chg : It's now forbiddent to pass a reference to a non-glob variable
227 as the localization target of localize(), localize_elem() and
229 + Chg : localize_elem() now only accepts localization of arrays or hashs
230 elements. For other types, it used to be a synonym of localize.
231 + Chg : localize_elem() no longer accepts a glob as the target. You now
232 have to specify the variable as a string. This is because it was
233 impossible in this case to handle meaningfully the array or the
234 hash reference passed as the assigned value.
235 + Doc : The synopsys was revamped, and the rest of the documentation was
237 + Fix : [RT #55593] : Segfault when localizing hash or array element to
238 different package in different file.
239 Thanks Dagfinn Ilmari Mannsåker for reporting.
240 + Fix : [RT #56301] : reap loses eval context when dying naturally.
241 Thanks Andrew Main for reporting.
242 + Fix : Scope inconsistencies and segfaults when saving several
243 localizations into the same target scope.
244 + Fix : Stop skipping frames as a pop optimization. This caused breakage
245 under the debugger (and most likely outside as well).
247 0.10 2010-01-18 23:50 UTC
248 + Fix : Properly handle given/when on 5.10.
249 + Fix : Some stack inconsistencies were fixed, though they were unlikely
250 to have an impact on your real-life code.
251 + Fix : Work around Kwalitee test misfailures.
253 0.09 2009-05-17 20:20 UTC
254 + Add : The new SU_THREADSAFE constant can be used to know whether the
255 module could have been built with thread safety enabled.
256 + Chg : Thread safety is disabled for perl 5.8 on Win32.
257 + Chg : A saner workaround for the "call_sv() during LEAVE clobbers the
258 still used last popped stack element" issue on 5.10.
260 0.08 2009-04-16 22:50 UTC
261 + Fix : [RT #44204] : Stack corruption with reap(). Thanks Torsten
262 Foertsch for reporting.
263 + Fix : Building with Solaris CC.
264 + Tst : unwind() in threads.
266 0.07 2009-02-20 00:20 UTC
267 + Chg : The CLONE method will no longer be defined for non-threaded
269 + Doc : Some examples on how to build the target context from the words.
270 + Fix : Some unlikely possible uninitialized reads, indirectly pointed
271 out in a Redhat review request.
272 + Fix : "localize *x, 'y' => $cxt" now matches Perl's behaviour for
274 + Fix : Miscellanous code cleanups, courtesy of Florian Ragwitz.
275 + Upd : Resources in META.yml.
277 0.06 2009-01-17 00:05 UTC
278 + Chg : INCOMPATIBLE CHANGE: The level is now absolute and no longer
279 relative to the current frame - we'll call it "context" from now
280 on. You should replace all your raw levels by combinations of
282 The old behaviour of "=> $n" can be easily reobtained by using
284 + Fix : As a result of this change, the module now plays nicely with
287 0.05 2009-01-12 18:15 UTC
288 + Fix : Stack mess when using unwind() in scalar context.
289 + Fix : Returning an automatic variable isn't wise, so let's use a
291 + Doc : Clarifications.
292 + Tst : Stress tests for unwind().
294 0.04 2009-01-11 18:40 UTC
295 + Add : unwind(@things, $level), that returns to an upper context.
296 + Add : want_at($level), that gives the wantarray for $level.
297 + Add : Control words, to reliably get the level of the n-th upper
298 subroutine or eval scope. TOPLEVEL was renamed to TOP.
299 + Fix : Tests with 5.6.
300 + Tst : Reordering and factoring some of the stress tests so that they
301 aren't needlessly ran several times.
303 0.03 2009-01-04 15:55 UTC
304 + Add : localize_delete(), that localize array/hash elements in upper
306 + Fix : Segfault when localizing array elements with an invalid negative
309 0.02 2008-12-28 18:40 UTC
310 + Doc : Clarifications and improvements.
311 + Fix : Missing compatibility macros.
312 + Fix : Localized nonexistant array elements should be deleted when
313 their time comes so that the array recovers its original length.
315 0.01 2008-12-26 16:05 UTC
316 First version, released on an unsuspecting world.