1 Revision history for Scope-Upper
3 0.21 2012-09-21 15:10 UTC
4 + Fix : context_info() has been taught about perl 5.17.4.
5 + Fix : t/07-context_info.t will no longer fail with perls that have
6 sitecustomize enabled (like many perl builds for Windows).
7 Thanks Steve Hay and Nicholas Clark for debugging help.
8 + Fix : Broken linkage on Windows with gcc 3.4, which appears in
9 particular when using ActivePerl's default compiler suite.
10 For those setups, the Scope::Upper shared library will now be
11 linked against the perl dll directly (instead of the import
14 0.20 2012-09-17 11:00 UTC
15 + Add : The new yield(@values, $context) function can be used to return
16 values to any upper scope, including do or map blocks.
17 The new leave(@values) function is an alias for
19 + Add : The new context_info($context) function return information
20 about context $context, similarly to what caller() provides
21 but for any upper scope.
22 + Chg : Contexts are now normalized. In previous versions, it was
23 possible for different contexts to refer to the same scope :
24 for example, "for (my $i = 0; $i < 10; ++$i) { ... }" was
25 reachable through two contexts, while "for (@array) { ... }"
26 only by one. Starting from this version, contexts are
27 normalized so that they always represent an actual scope.
28 + Doc : C++ compilers are officially NOT supported.
29 + Fix : Building with a more recent version of perl 5.17.4.
30 + Fix : Debugger compatibility with perl 5.17.1 and above.
32 0.19 2012-09-01 13:25 UTC
33 + Doc : POD headings have been made linkable.
34 + Fix : Building with perl 5.17.4.
35 + Fix : BUILD_PREREQS are now set for ExtUtils::MakeMaker.
36 + Opt : uplevel() private data structure is 7% smaller on 64 bits
38 + Tst : Author tests overhaul.
40 0.18 2011-10-10 20:50 UTC
41 + Add : The uid() function returns an unique identifier for each dynamic
42 scope. The validate_uid() function can be used to check whether
43 one such identifier is valid (i.e. that the scope it refers to
45 + Chg : It is no longer possible on perl 5.6 to call goto() in an
46 uplevel callback to replace the uplevel call. This change was
47 needed in order to ensure consistency between platforms
48 regarding to the following fix just below.
49 + Fix : The uplevel() tests now pass on Windows.
50 Thanks C.H. Kang for bringing this to my attention.
52 0.17 2011-10-03 21:45 UTC
53 + Fix : uplevel() will now use the correct pad when executing its
54 callback. This fixes at least two issues :
55 - closures defined inside the uplevel callback can now correctly
56 access lexicals from inside and outside the callback.
57 - state variables in the uplevel callback now work properly.
58 + Fix : It is now generally possible to call goto() in the uplevel'd
59 code to replace the uplevel stack frame. There are two cases
60 for which it is still not possible :
61 - if -D flags were set when running perl (as in "perl -Dt ...").
62 - if the perl runloop has been replaced with a custom one by
64 If uplevel() detects that the replacement code contains a goto
65 statement, and is in one of those two cases, then it will refuse
66 to execute the callback and throw an exception.
67 Note that this fix implies a run-time overhead of uplevel()
68 proportional to the size of the the callback in every case
69 (with a small ratio), and proportional to the size of ALL the
70 code executed as the result of the uplevel call (including
71 subroutine calls inside the callback) when a goto statement is
72 found in the uplevel callback.
73 + Fix : uplevel() has been taught how to handle XS callbacks properly.
74 + Fix : The cause of "Attempt to free unreferenced scalar" warnings
75 when using uplevel() has been addressed.
76 + Fix : [RT #71212] : build failure on Windows.
77 The module does no longer rely on calling Perl_cv_clone, which
79 Thanks C.H. Kang for reporting.
81 0.16 2011-09-03 23:00 UTC
82 + Add : uplevel($code, @args, $cxt) executes $code with arguments @args
83 in the upper context pointed by $cxt.
84 This is an XS version of the well-known uplevel() routine from
85 Sub::Uplevel. There are a few differences between both
86 implmentations that are listed in the documentation.
87 The XS version is roughly 10 times faster than the pure-Perl
90 0.15 2011-08-24 14:20 UTC
91 + Fix : Localizing subroutines in an higher scope will now correctly
92 update the method cache.
94 0.14 2011-02-27 00:00 UTC
95 + Fix : [RT #64997] : Compatibility with perl 5.13.10.
96 Thanks Dave Mitchell for the notice.
97 + Tst : Lengthy tests have been ported to Test::Leaner, making the
98 whole test suite about 50% faster.
100 0.13 2010-12-20 01:00 UTC
101 + Fix : [RT #61904] : Stack corruption when using unwind() under
103 Thanks Sergey Aleynikov for contributing a fix.
104 + Fix : [RT #63378] : Compatibility with perl 5.13.8.
105 Thanks Andreas J. König for bisecting the issue.
106 + Tst : Threads tests are now only run on perl 5.13.4 and higher.
107 They could segfault randomly because of what seems to be an
108 internal bug of Perl, which has been addressed in 5.13.4.
109 There is also an environment variable that allows you to
110 forcefully run those tests, but it should be set only for
111 author testing and not for end users.
113 0.12 2010-05-19 00:45 UTC
114 + Fix : Compatibility with perl 5.13.
115 + Fix : Test failures with perl 5.8.0.
116 + Fix : A minor leak of SVs when a non array/hash was passed to
119 0.11 2010-04-16 23:20 UTC
120 + Chg : It's now forbiddent to pass a reference to a non-glob variable
121 as the localization target of localize(), localize_elem() and
123 + Chg : localize_elem() now only accepts localization of arrays or hashs
124 elements. For other types, it used to be a synonym of localize.
125 + Chg : localize_elem() no longer accepts a glob as the target. You now
126 have to specify the variable as a string. This is because it was
127 impossible in this case to handle meaningfully the array or the
128 hash reference passed as the assigned value.
129 + Doc : The synopsys was revamped, and the rest of the documentation was
131 + Fix : [RT #55593] : Segfault when localizing hash or array element to
132 different package in different file.
133 Thanks Dagfinn Ilmari Mannsåker for reporting.
134 + Fix : [RT #56301] : reap loses eval context when dying naturally.
135 Thanks Andrew Main for reporting.
136 + Fix : Scope inconsistencies and segfaults when saving several
137 localizations into the same target scope.
138 + Fix : Stop skipping frames as a pop optimization. This caused breakage
139 under the debugger (and most likely outside as well).
141 0.10 2010-01-18 23:50 UTC
142 + Fix : Properly handle given/when on 5.10.
143 + Fix : Some stack inconsistencies were fixed, though they were unlikely
144 to have an impact on your real-life code.
145 + Fix : Work around Kwalitee test misfailures.
147 0.09 2009-05-17 20:20 UTC
148 + Add : The new SU_THREADSAFE constant can be used to know whether the
149 module could have been built with thread safety enabled.
150 + Chg : Thread safety is disabled for perl 5.8 on Win32.
151 + Chg : A saner workaround for the "call_sv() during LEAVE clobbers the
152 still used last popped stack element" issue on 5.10.
154 0.08 2009-04-16 22:50 UTC
155 + Fix : [RT #44204] : Stack corruption with reap(). Thanks Torsten
156 Foertsch for reporting.
157 + Fix : Building with Solaris CC.
158 + Tst : unwind() in threads.
160 0.07 2009-02-20 00:20 UTC
161 + Chg : The CLONE method will no longer be defined for non-threaded
163 + Doc : Some examples on how to build the target context from the words.
164 + Fix : Some unlikely possible uninitialized reads, indirectly pointed
165 out in a Redhat review request.
166 + Fix : "localize *x, 'y' => $cxt" now matches Perl's behaviour for
168 + Fix : Miscellanous code cleanups, courtesy of Florian Ragwitz.
169 + Upd : Resources in META.yml.
171 0.06 2009-01-17 00:05 UTC
172 + Chg : INCOMPATIBLE CHANGE: The level is now absolute and no longer
173 relative to the current frame - we'll call it "context" from now
174 on. You should replace all your raw levels by combinations of
176 The old behaviour of "=> $n" can be easily reobtained by using
178 + Fix : As a result of this change, the module now plays nicely with
181 0.05 2009-01-12 18:15 UTC
182 + Fix : Stack mess when using unwind() in scalar context.
183 + Fix : Returning an automatic variable isn't wise, so let's use a
185 + Doc : Clarifications.
186 + Tst : Stress tests for unwind().
188 0.04 2009-01-11 18:40 UTC
189 + Add : unwind(@things, $level), that returns to an upper context.
190 + Add : want_at($level), that gives the wantarray for $level.
191 + Add : Control words, to reliably get the level of the n-th upper
192 subroutine or eval scope. TOPLEVEL was renamed to TOP.
193 + Fix : Tests with 5.6.
194 + Tst : Reordering and factoring some of the stress tests so that they
195 aren't needlessly ran several times.
197 0.03 2009-01-04 15:55 UTC
198 + Add : localize_delete(), that localize array/hash elements in upper
200 + Fix : Segfault when localizing array elements with an invalid negative
203 0.02 2008-12-28 18:40 UTC
204 + Doc : Clarifications and improvements.
205 + Fix : Missing compatibility macros.
206 + Fix : Localized nonexistant array elements should be deleted when
207 their time comes so that the array recovers its original length.
209 0.01 2008-12-26 16:05 UTC
210 First version, released on an unsuspecting world.