Revision history for Perl extension Want. 0.01 Sun Jul 1 18:04:58 2001 - original version; created by h2xs 220.127.116.11 with options -A Want - Published to CPAN on 2001-07-15 0.02 Mon Jul 16 10:06:15 2001 - Give correct expectation count for constructs like my ($x, $y, $z) = (23, foo()); # foo's expectation count is 2 - want(2) should be true in C<@x = foo()> etc; i.e. infinity > N for any finite N :-) - Support '!' negative requests - correct expectation count for slices 0.03 Wed Jul 25 12:03:01 BST 2001 - Fix documentation snafus - add want('COUNT') as a synonym for C<howmany> and want('REF') for C<wantref> - BOOLEAN context - now compiles & passes tests under ithreads - SCALARREF and OBJECT reference contexts (want('REF') eq 'SCALAR' || want('REF') eq 'OBJECT') - Reorganised test suite 0.04 Sat Aug 4 09:44:34 BST 2001 - 'want' is now exported by default - BOOL is a euphemism for BOOLEAN (Perl 6 compatibility) - ARGUMENTS section added to documentation - excised C++-style comments from the source - fixed the expectation count issue from the BUGS section of 0.03 - ASSIGN context. Yeah, baby! - don't throw an error if RVALUE/LVALUE are used from a non-lvalue sub - specifiers can also now be space-separated, e.g.: want('LVALUE ASSIGN'); 0.05 Tue Aug 28 22:14:48 BST 2001 - tests pass on 5.6.1 and above - added 'rreturn' and 'lnoreturn' functions 0.06 Fri Jul 25 11:42:13 BST 2003 - pass thread context to Perl_pop_return - remove v-string 0.07 Mon Aug 18 10:27:27 BST 2003 - do not try to call pop_return (it's private) - update copyright year(s) and fix doc glitches - remove spurious || $n eq 'gelem' from _wantref - change i to I32 (rather than U32) to avoid compiler warning on Win32 0.08 Mon Dec 13 01:23:28 GMT 2004 - Accommodate the changed internals of perl 5.9.2 (the retstack is no more: see change #23156). 0.09 Thu Jun 30 15:02:37 BST 2005 - Fix a bug reported by Damian: want doesn't work (crashes) if it's called from within the guard of a loop. See the comment above upcontext_plus in Want.xs. - Runs under the debugger! - Give an error message (rather than segfaulting) if called from a tie handler. 0.10 Sat Mar 25 15:00:41 GMT 2006 - Make context propagate through subroutine return - Fix bug whereby want('LVALUE') sometimes gave false positives (see test 58 in t/all.t) - Fix bug whereby want_boolean often gave false positives 0.11 Sat Aug 26 22:36:27 BST 2006 - (Jerry D. Hedden) Fix bug whereby 'lnoreturn' failed to decrement the CvDEPTH, which causes an error with 'use threads' 0.12 Tue Aug 29 21:06:40 BST 2006 - (Jerry D. Hedden) Force the threads test to be skipped if oldstyle threads (as opposed to ithreads) are in use. 0.13 Tue May 1 21:39:19 BST 2007 - Address bug #26847, and add t/methcall.t 0.14 Fri May 4 12:00:20 BST 2007 - Fix bug #26928 0.15 Sun Jul 15 14:39:15 BST 2007 - Fix compiler warning (#26961) -- from Jerry D. Hedden - Fix memory leak in want_assign (#28224) 0.16 Thu Dec 6 11:15:39 GMT 2007 - Make sure there are no ._ files in the tarball - Refuse to run Makefile.PL with Perl < 5.006 0.17 Sun Feb 3 22:30:30 GMT 2008 - Be compatible with internals changes post-5.10 (new loop contexts & CxLVAL) 0.18 Mon Feb 4 09:35:56 GMT 2008 - Code identical to 0.17; eliminate ._files by using gnutar. 0.19 Sat 30 Jul 2011 17:07:16 BST - Change tests to avoid the new warning 'Useless assignment to a temporary' added in 5.15. 0.20 Sun 5 Feb 2012 17:43:22 GMT - Remove a test that was testing the behaviour of perl, rather than of this module, and was testing an aspect of perl’s behaviour that has changed (bf8fb5ebd) in in such a way that the test was failing with bleadperl. 0.21 Wed 29 Feb 2012 16:47:58 GMT - Avoid leaking the RHS of an lnoreturn lvalue sub, thanks to Father Chrysostomos https://rt.cpan.org/Public/Bug/Display.html?id=72083 0.22 Sun 15 Dec 2013 17:08:35 GMT - Prevent return from being optimised away by newer (>= 5.19.7) Perls. This is a patch supplied by @wolfsage: see https://github.com/robinhouston/Want/pull/1 0.23 Mon 24 Mar 2014 00:28:36 GMT - Accommodate a bleadperl change to the optree, made in 7d3c8a6837b55fff0e6294ebf8c94a1601367c76. This is bug #94086 for Want, and bug #121342 for perl5. 0.24 Tue 2 Dec 2014 10:22:39 GMT - Accommodate another bleadperl change. Patch provided by Father Chrysostomos at https://rt.cpan.org/Public/Bug/Display.html?id=100626 0.25 Wed 10 Dec 2014 19:31:03 GMT - Add support for the new OP_MULTIDEREF Perl has a new op, added as a performance optimisation in fedf30e1c349130b23648c022f5f3cb4ad7928f3, to represent a sequence of array/hash dereferences. This patch adds support for the new op. 0.26 Tue 28 Apr 2015 12:31:17 BST - There is a new experimental option in bleadperl under which one ought not to use the op_sibling field directly. Quoting from perlguts.pod: “ Starting in version 5.21.2, perls built with the experimental define C<-DPERL_OP_PARENT> add an extra boolean flag for each op, C<op_moresib>. When not set, this indicates that this is the last op in an C<OpSIBLING> chain. This frees up the C<op_sibling> field on the last sibling to point back to the parent op. Under this build, that field is also renamed C<op_sibparent> to reflect its joint role. The macro C<OpSIBLING(o)> wraps this special behaviour, and always returns NULL on the last sibling. With this build the C<op_parent(o)> function can be used to find the parent of any op. Thus for forward compatibility, you should always use the C<OpSIBLING(o)> macro rather than accessing C<op_sibling> directly. ” Thanks to Reini Urban for the patch. 0.27 Thu 25 Feb 2016 21:26:04 GMT - perl 5.23.8 breaks the hack we were using to implement double_return. This patch from David Mitchell fixes it. See https://rt.cpan.org/Ticket/Display.html?id=112226 David wrote: > Running with a debugging perl-5.23.8 will show assertion failures in the Want test suite. It's because PL_comppad/PL_curpad save/restore is now done by the context stack / cx_popsub() rather than as previously on the savestack / LEAVE. > This stops the double_return() 'convert CXt_SUB to CXt_NULL' hack from working properly, as PL_comppad is no longer restored when transitioning from the inner to outer sub. The attached patch substitutes one evil hack for another: it keeps the CXt_SUB context stack entry, but sets its retop field to point to the return op again (rather than its caller) so that the return op gets called twice (with a bit of markstack hackery to ensure there are two marks for the two returns to pop). > rreturn and lnoreturn are also a bit under-tested. In particular, there are no tests for rreturn in list context. I added such a test, but more need adding. > I can see this hack breaking again in the future. Perhaps in the long term > rreturn() and lnoreturn() should be implemented using custom ops??? > Dave M. 0.28 Thu 25 Feb 2016 22:02:42 GMT - Fix test failure in 5.14 - Fix test failure in 5.23.9 (using a patch from Slaven Rezic) http://cpan.cpantesters.org/authors/id/S/SR/SREZIC/patches/Want-0.26-RT112226.patch 0.29 Fri 26 Feb 2016 04:42:19 GMT - Restore compatibility with certain older perl versions (5.10 and 5.12) It seems that “ATTRS: lvalue” doesn’t work with older perls, but that you can forward-declare the method in Perl code with the :lvalue attribute with the same effect. This version of Want is still broken with perl 5.8, for reasons I haven’t investigated.