1.63 -- 2022-08-08 [BUGFIXES] * Fix off-by-one in stack handling of head() / tail() (RT143905) * Fix documentation copy-paste error about builtin::reftype * Ensure exotic_names.t will work on EBCDIC platforms * Add basic Github CI workflow 1.62 -- 2022-03-17 [CHANGES] * Prepare for perl 5.35.10 release: + Skip the tainted tests if your perl was built without taint support + Document the existence of the `builtin::` equivalents for several Scalar::Util functions 1.61 -- 2022-02-16 [BUGFIXES] * Fix some more signed comparison warnings (Perl5 #19429) 1.60 -- 2021-10-08 [BUGFIXES] * Quiet some -Wsign-compare warnings by using `int` instead of `UV` (RT136985) * Quiet a -Wmaybe-uninitialized warning by ensuring a variable is always initialised, because the compiler can't always determine this is safe (RT139356) * Avoid SIGFPE in product(-1, ...) (RT139601) 1.59 -- 2021-09-12 [CHANGES] * Removed Scalar::Util::isbool() as the API design for older perls isn't quite clear, and it doesn't do anything useful on any currently-released perl version * Tidy up the unnecessary bits of @EXPORT_FAIL * Use the new G_LIST constant rather than G_ARRAY 1.58 -- 2021-09-12 (bad release because I forgot to `git push`) 1.57 -- 2021-09-11 [CHANGES] * Added Scalar::Util::isbool() to track new core-supported boolean value nature on scalars * Fix various typoes in docs, code comments, etc... * Removed code conditional on whether SvWEAKREF is supported, as every perl since v5.6 supports it [BUGFIXES] * Fix segfaults when an undefined subroutine is passed to block-taking subs (thanks ilmari) * Correct refcount handling on hv_store_ent to PL_DBsub in set_subname() (thanks nwc10) * Don't rely on Scalar::Util functions when unit-testing List::Util ones (thanks haarg) 1.56 -- 2021-03-30 [CHANGES] * Added `List::Util::zip`, `List::Util::mesh` and related functions (RT129479) * Updated embedded ppport.h for Devel::PPPort v3.62 1.55 -- 2020-04-09 [CHANGES] * Added List::Util::uniqint * Improvements to List::Util::uniqnum handling of floating-point values on odd platform configurations (thanks sisyphus) * Improvements to $RAND-based unit tests 1.54 -- 2020-02-02 15:47 [CHANGES] * Added List::Util::reductions (RT128237) * Added List::Util::sample (RT131535) * Recognise $List::Util::RAND as a source of randomness for sampling functions (RT131536) [BUGFIXES] * Document the difference between ref() and reftype() on precompiled qr// regexps (RT127963) * Various improvements to List::Util::uniqnum() to handle stringified Inf and NaN, negative zero * Detect platform NV size and number of digits required to calculate uniqueness 1.53 -- 2019-10-24 10:41:12 [BUGFIXES] * Handle Unicode package names in Scalar::Util::blessed (GH #81) 1.52 -- 2019-08-17 19:08:18 [BUGFIXES] * Fix uniqnum() on large stringified integers on long- and quad-double perls (thanks ilmari) 1.51 -- 2019-08-08 14:31:32 [CHANGES] * Add TO_JSON to List::Util::_Pair (thanks ilmari) * Various minor docs fixes [BUGFIXES] * Don't segfault in subname() on deleted stashes (thanks ilmari) * Fix uniqnum for large floats and numeric strings (thanks ilmari) 1.50 -- 2018-02-20 19:13:27 [CHANGES] * Added head() and tail() functions (thanks preaction) * Support binary and Unicode in symbol names for set_subname() [BUGFIXES] * Fix building with C++ and C89 compilers * Fix uniq() test for old Test::More * Fix example get_code_info for unnamed subs (RT#116962) * Fixes for symbol names containing ' characters * Don't leak SVs from sum0/product1 when called with zero args (RT#124017) * Use sv_rvunweaken() in Scalar::Util::unweaken() (thanks ilmari) * Misc. fixes for perl 5.6 1.49 -- 2017-09-08 12:25:54 [CHANGES] * Fixes for unit tests to pass on perl 5.6.2 * Fix typo in documentation 1.48 -- 2017/06/23 17:29:42 [CHANGES] * Note in documentation that outer function's @_ can be accessed in some blocks, but ought not be (thanks wchristian) [BUGFIXES] * Ensure pairmap extends its stack correctly (thanks davem) * Fix name of List::Util::unpairs in its error messages 1.47 -- 2016/12/22 18:54:45 [CHANGES] * Make XS code ppport.h-free when in core [BUGFIXES] * Fix compliling on C++11 * Perform taint checks using $^X instead of some %ENV key because of the Test::Simple vars (RT119169) 1.46 -- 2016/09/28 23:17:07 [CHANGES] * Remember to add unpairs and uniq to SYNOPSIS * Document the behaviour of uniqnum() on NaN [BUGFIXES] * C89 fixes * Various internal bugfixes backported from perl core 1.45 -- 2016/03/25 16:09:40 [CHANGES] * Renamed existing uniq() to uniqstr() * Canonicalise undef to {empty string,zero} in uniq{str,num}() * Add a new uniq() with more DWIMish semantics around undef [BUGFIXES] * Fix uses of GET magic by the uniq*() family of functions. GET magic is now always invoked exactly once if it exists. 1.44 -- 2016/03/17 23:08:46 [CHANGES] * Added List::Util::uniq() and uniqnum() (with thanks to randir and ilmari for assistance writing code and tests) 1.43 -- 2016/02/08 15:05:23 [CHANGES] * Updated documentation * Added MIN_PERL_VERSION to Makefile.PL * Added "use warnings" to all tests * Added MANIEST.SKIP patterns for common editor backup/swapfiles * Test product(0,0) (RT105415) [BUGFIXES] * Fix build on non-C99 compilers * Avoid divide-by-zero exception if product()'s accumulator is IV zero (RT105415) * Possible fix for SvTEMP issues in first and any/all/none/notall (RT96343) 1.42 -- 2015/04/32 01:25:55 [CHANGES] * Added List::Util::unpairs() - the inverse of pairs() * Documentation to pre-warn users about the possible behaviour in a later version where the pair* higher-order functionals are no longer transparent to $_ [BUGFIXES] * Silence some warnings at test time * Ensure that the List::Util we're loading the XS via is a sufficient version when Scalar::Util or Sub::Util load it (RT100863) 1.41 -- 2014/09/05 15:49:50 [BUGFIXES] * Avoid pre-C99 declaration after statements (RT98624) * Fix use of GetMagic in List::Util::reduce (RT63211) 1.40 -- 2014/08/30 11:36:36 [CHANGES] * Added entire new module, Sub::Util to contain functions related to CODE refs * Added subname inspired by Sub::Identify * Added set_subname copied and renamed from Sub::Name * Also moved set_prototype into Sub::Name, with back-compat wrapper in Scalar::Util * Added prototype wrapper of CODE::prototype, for completeness * Nicer module documentation format, allows neater use of L [THANKS] * This change was written at the YAPC::EU 2014 Hackathon hosted by Liz Mattijsen and Wendy van Dijk; much thanks to them for being its catalyst. 1.39 -- 2014/06/05 15:54:59 [CHANGES] * Have pairs() return blessed objects that recognise ->key and ->value as well as being two-element ARRAYs * Booleanise the result of looks_like_number() so as not to accidentally leak abstraction (RT94806) * Document the version each function was added in (RT96220) [BUGFIXES] * Try to preserve UV precision in sum() where possible (RT95902) * Document known lexical capture in pairmap bug RT95409 * SvGETMAGIC() in set_prototype() (RT72080) 1.38 -- 2014/01/22 15:33:24 [BUGFIXES] * Avoid Perl_ckwarn() in unweaken() because it's missing on older perls; ckWARN() like the rest of the code (RT92363) 1.37 -- 2014/01/21 14:44:34 [BUGFIXES] * Fix unweaken() for perls < 5.14; need to use sv_setsv() to undef rather than sv_clear() (RT92226) 1.36 -- 2014/01/16 15:40:47 [CHANGES] * Added Scalar::Util::unweaken() * Various documentation changes/updates [BUGFIXES] * Correct uses of overload operators in unit tests (RT91969) 1.35 -- Sat Oct 19 01:35 UTC 2013 * Added List::Util::product() * Ensure that List::Util::{any,all,none,notall} return PL_sv_{yes,no} * Implement reduce() and first() even in the absence of MULTICALL 1.34 -- Wed Oct 16 13:04 UTC 2013 * Avoid C99/C++-style comments in XS code * Fix dualvar tests for perl 5.6; fix skip() test counts in dualvar.t * Neater documentation examples of other functions that can be built using reduce 1.33 -- Sun Oct 13 01:35 UTC 2013 * Added any, all, none, notall list reduction functions (inspired by List::MoreUtils) 1.32 -- Sun Aug 31 23:48 UTC 2013 * Skip pairmap()'s MULTICALL implementation 5.8.9 / 5.10.0 as it doesn't work (RT87857) * Comment on the fact that package "0" is defined but false (RT88201) * TODO test in t/readonly.t now passes since 5.19.3 (RT88223) 1.31 -- Wed Aug 14 20:38 UTC 2013 * Bugfix pairmap to return list length in scalar context * Added "Odd number of elements" warnings to all pair* functions 1.30 -- Mon Aug 05 13:09 UTC 2013 * Added pairfirst * Added MULTICALL implementations to pairmap/pairgrep/pairfirst * Fix declaration-after-code for C99-challenged compilers * Documentation updates to List::Util 1.29 -- Thu Aug 01 13:40 UTC 2013 * Bugfix to pairmap/pairgrep when stack moves beneath them during operation 1.28 -- Thu Aug 01 12:19 UTC 2013 -- BROKEN; do not use. See 1.29 * Added pairgrep, pairmap, pairs (inspired by List::Pairwise) * Added pairkeys and pairvalues 1.26_001 -- Sun Dec 23 15:58 * Fix multicall refcount bug RT#80646 1.26 -- Sun Dec 16 19:39 * Merge patch from JDHEDDEN - Add Scalar::Util::isdual() RT#76150 1.25_01 -- Wed Nov 21 09:47 * Fix a hash order dependency bug t/tainted.t (Currently this is a core only version to fix perl5 smokes) 1.25 -- Sat Mar 24 13:10:13 UTC 2012 * Restore back-compat. to perl 5.6 (thanks to Zefram) 1.24 -- Thu Mar 22 18:10:10 UTC 2012 * Update to 1.24 release version (no other changes since 1.23_04). 1.23_04 -- Sat Mar 10 00:16:16 UTC 2012 * RT#72700 Fix off-by-two on string literal length 1.23_03 -- Tue Sep 14 10:09:59 CDT 2010 * Min perl version supported for build is not 5.008 * Dropped the pure-Perl implementation of both Scalar::- and List::Util. * RT#61118 Fix assumption in sum() that once magic, always magic 1.23_02 -- Tue Mar 30 11:09:15 CDT 2010 * Fix first() and reduce() to check the callback first; &first(1) is now illigal. [gfx] * Fix reduce() to allow XSUB callbacks [gfx] * Fix first() to allow XSUB callbacks [gfx] * Resolve RT #55763: tainted() doesn't do SvGETMAGIC(sv) [gfx] * define CvISXSUB so older perl versions will still compile 1.23_01 -- Mon Mar 22 08:24:11 CDT 2010 * Add failing tests; SVt_RV is not directly SvROK [gfx] * Implement openhandle() in XS (with extra tests) [gfx] * Modernize *.pm [gfx] * Modernize ListUtil.xs [gfx] * Add ppport.h [gfx] * Fix an overloading issue on sum(), and add tests for overloading [gfx] * Small tweaks for minstr()/maxstr() [gfx] * Optimize dualvar() [gfx] * Use sv_copypv() instead of SvPV() and sv_setpv() [gfx] * avoid non-portable warnings 1.23 -- Wed Mar 10 20:50:00 CST 2010 * Add a test file to ensure 'GETMAGIC' called once [gfx] * "GETMAGIC" should be called only once [gfx] * Use PERL_NO_GET_CONTEXT for efficiency (see perlguts) [gfx] * Don't care about dVAR. ExtUtils::ParseXS deals with it. [gfx] * t/p_max.t, t/p_min.t fail on perl5.8.1. [tokuhirom] * avoid non-portable warnings * Fix PP::reftype in edge cases [gfx] 1.22 -- Sat Nov 14 09:26:15 CST 2009 * silence a compiler warning about an unreferenced local variable [Steve Hay] * RT#51484 Preserve utf8 flag of string passed to dualvar() * RT#51454 Check first argument to first/reduce is a code reference * RT#50528 [PATCH] p_tainted.t fix for VMS [Craig A. Berry] * RT#48550 fix pure perl looks_like_number not to match non-ascii digits 1.21 -- Mon May 18 10:32:14 CDT 2009 * Change build system for perl-only install not to need to modify blib * When building inside perl, tests for weaken should be always run (Alexandr Ciornii) 1.20 -- Wed May 13 16:42:53 CDT 2009 *** NOTE*** This distribution now requires perl 5.6 or greater Bug Fixes * Fixed stack pop issue in POP_MULTICALL * Fixed error reporting in import when XS not compiled * Check first argument to reduce is a CODE reference to avoid segfault * Handle overloaded and tied values * Fix tainted test to run on Win32 Enhancements * Added List::Util::XS so authors can depend on XS version * Removed need for dummy methods in UNIVERSAL for perl-only code 1.19 -- Sun Dec 10 09:58:03 CST 2006 Bug Fixes * Fix invalid conversion from `const char*' to `char*' warnings * Avoid Makefile error when building on Win32 * Fix undefined symbol error for perl < 5.9.0 * Fix hardcoded "/" in a filepath that causes p_tainted.t to fail on VMS Documentation * Document that reduce calls BLOCK in a scalar context * Add SEE ALSO sections to docs Enhancements * A new regression test for readonly, taking a reference to a constant passed to a sub 1.18 -- Fri Nov 25 09:30:29 CST 2005 Bug Fixes * Fix pure-perl version of refaddr to avoid blessing an un-blessed reference * Fix memory leak in first() and reduce() * Pure perl version of looks_like_number now matches XS version for references and undef. It will now return undef Enhancements * Support for using XSLoader instead of DynaLoader * Use new multicall API 1.17 -- Mon May 23 08:55:26 CDT 2005 Bug Fixes * Update XS code to declare PERL_UNUSED_DECL conditionally 1.16 -- Fri May 20 10:22:49 CDT 2005 Bug Fixes * Change to refaddr.t test to avoid false errors on some 64 bit platforms * Fix all perl only tests to work when in the core build environment * Fix looks like number test to work for 5.8.5 and above 1.15 -- Fri May 13 11:01:15 CDT 2005 Bug Fixes * Fixed memory leak in first() Enhancements * Converted tests to use Test::More * Improved test coverage * Changed Makefile.PL to use Module::Install * Refactor use of Sv..X() macros to be Sv.._set() * Changes from Jarkko for Symbian port of Perl * Documentation updates to weaken() 1.14 -- Sat May 22 08:01:19 BST 2004 Bug Fixes * Fixed memory leak in reduce() * Added tests to check passing a reference to a constant to weaken() in perl >= 5.008003 * Fixed looks_like_number(undef) to return false for perl >= 5.009002 * Fixed bug in refaddr() when passed a tied variable Switch to svn repository at http://svn.mutatus.co.uk/wsvn/Scalar-List-Utils/trunk/ Old perforce revision log below Change 827 on 2003/09/25 by (Graham Barr) Release 1.13 Change 826 on 2003/09/25 by (Graham Barr) Fix NV casting issue with some compilers Change 825 on 2003/08/14 by (Graham Barr) Release 1.12 Change 824 on 2003/08/14 by (Graham Barr) Don't directly use the SV returned as $a in the next iteration, take a copy instead. Fixes problem if the code block result was from an eval or sub call Change 823 on 2003/08/14 by (Graham Barr) Install into the 'perl' installdirs for >= 5.008 Change 822 on 2003/08/14 by (Graham Barr) Fix test for EBCDIC portability Change 771 on 2003/03/03 by (Graham Barr) Get path for make from $Config Change 770 on 2003/02/14 by (Graham Barr) Release 1.11 Change 769 on 2003/02/14 by (Graham Barr) Add t/proto.t to MANIFEST Change 768 on 2003/02/14 by (Graham Barr) Add set_prototype from Rafael Garcia-Suarez Change 767 on 2003/02/14 by (Graham Barr) Fix t/isvstring.t so it does not cause perl5.004 to segv because of the exit from within BEGIN Change 766 on 2003/02/14 by (Graham Barr) Change how patchlevel.h is included and check we got what we wanted (from Jarkko) Change 765 on 2003/02/14 by (Graham Barr) Add -DPERL_EXT to DEFINEs, requested by Jarkko for 5.8.1 Change 764 on 2003/02/04 by (Graham Barr) Release 1.10 Change 763 on 2003/02/04 by (Graham Barr) Fix linking error for older perls Change 762 on 2003/02/04 by (Graham Barr) Make lln tests and perl implementation mimic changes to looks_like_number in different perl versions Change 761 on 2003/02/04 by (Graham Barr) Add looks_like_number Change 760 on 2003/02/04 by (Graham Barr) Ensure PERL_DL_NONLAZY is false so we don't catch link errors during bootstrap and then test the perl only version Change 759 on 2002/12/12 by (Graham Barr) Release 1.09 Change 758 on 2002/12/12 by (Graham Barr) Use UV to return refaddr Change 757 on 2002/11/03 by (Graham Barr) Add XS_VERSION Change 756 on 2002/11/03 by (Graham Barr) Use PAD_* macros in 5.9 Reuse our own target when calling pp_rand in shuffle() so we dont need to create a fake pad Change 751 on 2002/10/18 by (Graham Barr) Fix context so that sub for reduce/first is always in a scalar context Fix sum/min/max so that they don't upgrade their arguments to NVs if they are IV or UV Change 750 on 2002/10/14 by (Graham Barr) Add isvstring() Change 745 on 2002/09/23 by (Graham Barr) Scalar::Util - Add refaddr() Change 722 on 2002/04/29 by (Graham Barr) Release 1.0701 Change 721 on 2002/04/29 by (Graham Barr) Add comment to README about failing tests on perl5.6.0 Change 714 on 2002/03/18 by (Graham Barr) Release 1.07 Change 713 on 2002/03/18 by (Graham Barr) Add Scalar::Util::openhandle() Change 647 on 2001/09/18 by (Graham Barr) Release 1.06 Change 645 on 2001/09/07 by (Graham Barr) Some platforms require the main executable to export symbols needed by modules. In 5.7.2 and prior releases of perl Perl_cxinc was not exported so we need to duplicate its functionality Change 644 on 2001/09/07 by (Graham Barr) Generate a typemap for NV for all perl version up to and including 5.006 Change 643 on 2001/09/07 by (Graham Barr) Document problems known with specific versions of perl Change 642 on 2001/09/05 by (Graham Barr) Release 1.05 Change 641 on 2001/09/05 by (Graham Barr) Fix shuffle() to compile with threaded perl Change 640 on 2001/09/05 by (Graham Barr) Release 1.04 Change 639 on 2001/09/05 by (Graham Barr) Fix context type (caused a core on Tru64) Call pp_rand via *(PL_ppaddr[OP_RAND]) Change 638 on 2001/09/05 by (Graham Barr) Documentation updates Change 637 on 2001/09/03 by (Graham Barr) Release 1.03 Change 636 on 2001/09/03 by (Graham Barr) More changes to help merging with core dist Change 635 on 2001/09/03 by (Graham Barr) Added List::Util::shuffle() similar to that described in the perl FAQ except it returns a shuffled list instead of modifying an array passed by reference Change 632 on 2001/09/03 by (Graham Barr) Handle tied variables passed for the number to dualvar() Preserve number type (IV/UV/NV) in dualvar() Change 631 on 2001/08/31 by (Graham Barr) Handle eval{} inside of the code blocks for first and reduce Change 629 on 2001/08/22 by (Graham Barr) perl5.004 does not like exit from within a BEGIN, it core dumps Change 628 on 2001/08/22 by (Graham Barr) Fix stack problem in first() and reduce() Align with core dist Change 483 on 2000/04/10 by (Graham Barr) Release 1.02 Change 482 on 2000/04/10 by (Graham Barr) Check for SvMAGICAL on argument for reftype and blessed Change 366 on 2000/03/03 by (Graham Barr) Release 1.01 Change 365 on 2000/03/03 by (Graham Barr) - Added auto-detection for a compiler and install the perl version if not found - Better perl implemenation of reftype, should be thread-safe now Change 364 on 2000/03/03 by (Graham Barr) - Added some examples of simple subs that have been requested but not added - Updated copyright dates Change 344 on 1999/11/10 by (Graham Barr) - Better testcase for reftype Change 343 on 1999/11/10 by (Graham Barr) - Modules are now called List::Util & Scalar::Util - Supports non-XS install - perl version of reftype now returns "REF" when it should Change 311 on 1999/06/01 by (Graham Barr) Updated README Change 275 on 1999/03/22 by (Graham Barr) Removed forall as it is very broken Change 274 on 1999/03/22 by (Graham Barr) Added List::Util::forall Change 273 on 1999/03/21 by (Graham Barr) Added weaken and isweak to Ref::Util Change 272 on 1999/03/21 by (Graham Barr) Add new .pm files to repository Change 271 on 1999/03/21 by (Graham Barr) - Split into three packages Ref::Util, List::Util and Scalar::DualVar - readonly and clock were removed in favor of other modules Change 270 on 1999/03/21 by (Graham Barr) Rename package Change 269 on 1999/03/21 by (Graham Barr) - Added reftype - improved reduce by not doing a sub call - reduce now uses $a and $b - now compiles with 5.005_5x Change 178 on 1998/07/26 by (Graham Barr) Modified XS code so it will compile with 5.004 and 5.005 Change 115 on 1998/02/21 by (Graham Barr) Fri Feb 20 1998 Graham Barr t/min.t, t/max.t - Change sor to do a numerical sort Fri Dec 19 1997 Graham Barr - Added readonly() Wed Nov 19 1997 Graham Barr - Initial release