Revision history for Scope-Upper
+0.19 2012-09-01 13:25 UTC
+ + Doc : POD headings have been made linkable.
+ + Fix : Building with perl 5.17.4.
+ + Fix : BUILD_PREREQS are now set for ExtUtils::MakeMaker.
+ + Opt : uplevel() private data structure is 7% smaller on 64 bits
+ architectures.
+ + Tst : Author tests overhaul.
+
+0.18 2011-10-10 20:50 UTC
+ + Add : The uid() function returns an unique identifier for each dynamic
+ scope. The validate_uid() function can be used to check whether
+ one such identifier is valid (i.e. that the scope it refers to
+ is still alive).
+ + Chg : It is no longer possible on perl 5.6 to call goto() in an
+ uplevel callback to replace the uplevel call. This change was
+ needed in order to ensure consistency between platforms
+ regarding to the following fix just below.
+ + Fix : The uplevel() tests now pass on Windows.
+ Thanks C.H. Kang for bringing this to my attention.
+
+0.17 2011-10-03 21:45 UTC
+ + Fix : uplevel() will now use the correct pad when executing its
+ callback. This fixes at least two issues :
+ - closures defined inside the uplevel callback can now correctly
+ access lexicals from inside and outside the callback.
+ - state variables in the uplevel callback now work properly.
+ + Fix : It is now generally possible to call goto() in the uplevel'd
+ code to replace the uplevel stack frame. There are two cases
+ for which it is still not possible :
+ - if -D flags were set when running perl (as in "perl -Dt ...").
+ - if the perl runloop has been replaced with a custom one by
+ another module.
+ If uplevel() detects that the replacement code contains a goto
+ statement, and is in one of those two cases, then it will refuse
+ to execute the callback and throw an exception.
+ Note that this fix implies a run-time overhead of uplevel()
+ proportional to the size of the the callback in every case
+ (with a small ratio), and proportional to the size of ALL the
+ code executed as the result of the uplevel call (including
+ subroutine calls inside the callback) when a goto statement is
+ found in the uplevel callback.
+ + Fix : uplevel() has been taught how to handle XS callbacks properly.
+ + Fix : The cause of "Attempt to free unreferenced scalar" warnings
+ when using uplevel() has been addressed.
+ + Fix : [RT #71212] : build failure on Windows.
+ The module does no longer rely on calling Perl_cv_clone, which
+ isn't exported.
+ Thanks C.H. Kang for reporting.
+
+0.16 2011-09-03 23:00 UTC
+ + Add : uplevel($code, @args, $cxt) executes $code with arguments @args
+ in the upper context pointed by $cxt.
+ This is an XS version of the well-known uplevel() routine from
+ Sub::Uplevel. There are a few differences between both
+ implmentations that are listed in the documentation.
+ The XS version is roughly 10 times faster than the pure-Perl
+ version.
+
+0.15 2011-08-24 14:20 UTC
+ + Fix : Localizing subroutines in an higher scope will now correctly
+ update the method cache.
+
+0.14 2011-02-27 00:00 UTC
+ + Fix : [RT #64997] : Compatibility with perl 5.13.10.
+ Thanks Dave Mitchell for the notice.
+ + Tst : Lengthy tests have been ported to Test::Leaner, making the
+ whole test suite about 50% faster.
+
+0.13 2010-12-20 01:00 UTC
+ + Fix : [RT #61904] : Stack corruption when using unwind() under
+ Devel::NYTProf.
+ Thanks Sergey Aleynikov for contributing a fix.
+ + Fix : [RT #63378] : Compatibility with perl 5.13.8.
+ Thanks Andreas J. König for bisecting the issue.
+ + Tst : Threads tests are now only run on perl 5.13.4 and higher.
+ They could segfault randomly because of what seems to be an
+ internal bug of Perl, which has been addressed in 5.13.4.
+ There is also an environment variable that allows you to
+ forcefully run those tests, but it should be set only for
+ author testing and not for end users.
+
+0.12 2010-05-19 00:45 UTC
+ + Fix : Compatibility with perl 5.13.
+ + Fix : Test failures with perl 5.8.0.
+ + Fix : A minor leak of SVs when a non array/hash was passed to
+ localize_elem().
+
0.11 2010-04-16 23:20 UTC
+ Chg : It's now forbiddent to pass a reference to a non-glob variable
as the localization target of localize(), localize_elem() and