1Release history for Storable 2 33.32 - 2023-05-26 21:36:00 demerphq 4 5 - Update security advisory to be more clear 6 73.31 - 2023-02-26 00:31:32 demerphq 8 9 - Fixup for ppport fix in 3.30 10 113.30 - 2023-02-22 09:56:27 leont 12 13 - Use ppport for all modules in dist. 14 153.29 - 2023-01-04 17:33:24 iabyn 16 17 - Store code fixes identified from refcounted stack patch 18 193.28 - 2022-11-08 10:12:46 tony 20 21 - Store hook error reporting improvements 22 23 - Store hook handles regex objects properly. 24 253.27 - 2022-06-20 20:32:29 toddr 26 27 - Use cBOOL instead of !! in xs code 28 293.26 - 2022-04-18 17:36:00 toddr 30 31 - Conform to ppport.h 3.68 recommendations 32 333.25 - 2021-08-30 07:46:52 nwclark 34 35 - No changes from previous version 36 373.24_50 - 2021-08-25 08:05:16 nwclark 38 39 - Remove code and tests only present to support perls before 5.6.1 40 Storable implicitly needs >= v5.6.1. 41 42 - Use SvPVCLEAR from ppport.h 43 44 - Remove XS code "commented" out with #if 0 45 46 - Refactor store_lhash() to remove some code duplication 47 48 - Avoid calling hv_iterval() twice for each hash entry 49 50 - Fix a bug in the recursion depth check in store_lhash() 51 523.24 - unreleased 53 54 - Fix a (possible) typo in Sntohl 55 563.23 - unreleased 57 58 - Fix typos 59 60 - avoid stderr noise in t/canonical.t 61 623.22 - 2020-07-31 19:36:37 atoomic 63 64 - use PERL_COMPARE macros 65 663.21 - 2020-04-23 13:33:05 ilmari 67 68 - fix repeated-word typos 69 70 - fix t/huge.t PERL_TEST_MEMORY diagnostic messages 71 723.20 - 2020-01-27 10:27:00 TonyC 73 74 - fix a format string and arguments for some debugging text 75 76 - linkify references to alternatives to Storable 77 783.19 - 2020-01-27 11:01:00 TonyC 79 80 - add casts to match some I32 parameters to "%d" formats (#17339) 81 82 - fix dependencies in Makefile.PL -> META (#17422) 83 84 - make use of note() optional, this requires a newer version of 85 Test::More and there's a circular dependency between later 86 versions of Test::More and Storable (#17422) 87 883.18 - 2019-11-19 07:59:39 TonyC 89 90 - update bug tracker to point at github (#17298) 91 92 - disallow vstring magic strings over 2GB-1 (#17306) 93 94 - mark some ASCII dependent tests as ASCII platform only 95 963.17 - 2019-08-08 11:48:00 TonyC 97 98 - correct a data type to ensure the check for too large results from 99 STORABLE_freeze() are detected correctly (detected by Coverity) 100 101 - removed remains of stack size detection from the build process. 102 103 - moved CAN_FLOCK detection into XS to simplify the build process. 104 1053.16 - 2019-06-11 10:43:00 TonyC 106 107 - (perl #134179) fix self-referencing structures that include regexps 108 109 - bless regexps to preserve bless qr//, "Foo" 110 1113.15 - 2019-04-23 16:00:00 xsawyerx 112 113 - Fix leaking. 114 1153.14 - unreleased 116 117 - (perl #133708) don't build-time probe for stack limits at all 118 1193.12 - unreleased 120 121 - (perl #133411) don't probe for stack limits with -Dusecrosscompile 122 1233.11 - 2018-04-27 20:40:00 xsawyerx 124 125 - Fix Strawberry Perl build failures. 126 1273.10 - 2018-04-21 22:00:00 xsawyerx 128 129 - Fix binary artifacts from distribution. 130 1313.09 - 2018-04-21 16:49:00 xsawyerx 132 133 - Fix "provides" in metadata (META.yml/META.json) to use the Storable 134 template instead of a small other file (which also didn't exist). 135 1363.08 - 2018-04-21 11:23:00 xsawyerx 137 138 - (perl #132849) try to disable core files when deliberatly segfaulting. 139 140 - (perl #127743) don't probe Storable limits so much. 141 142 - (perl #132893) don't probe for Storable recursion limits on old Win32. 143 144 - (perl #132870) workaround VC2017 compiler bug. 145 146 - (perl #127743) re-work for debugging builds with MSVC. 147 148 - (perl #133039) dont build a Storable.so/.dll with a static perl build. 149 1503.06 - 2018-02-07 15:08:00 tonyc 151 152 - support large object ids. The code in theory supported arrays 153 with more than 2**32 elements, but references to the elements 154 emitted at the end of the array with be retrieved as references to 155 the wrong elements. 156 157 - 32-bit object ids over 2**31-1 weren't correctly handled. 158 159 - hook object id generation now supports 64-bit ids where needed 160 161 - writing 64-bit lengths in network order now works 162 163 - reading 64-bit lengths in network order now reads the components 164 in the correct order. 165 166 - retrieving large object tags are now only handled on 64-bit 167 platforms, large object tags should only be emitted for objects 168 that are too large for the 32-bit address space, so it was only 169 wasted code. 170 171 - reading 32-bit lengths for LSCALAR and LUTF8STR as unsigned 172 (perl #131990) 173 174 - reading flagged large object hashes didn't read the flags 175 176 - treat the 32-bit size of hook data as unsigned, values over 2GB 177 were treated as large (close to 2**64) parameters to NEWSV(). 178 (perl #131999) 179 180 - added support for hook data over 4GB in size 181 182 - zero length data receievd from STORABLE_freeze() no longer 183 results in an invalid SV being passed to STORABLE_thaw/_attach() 184 (perl #118551) 185 186 - where practical, padding is now cleared when emitting a long 187 double (perl #131136) 188 189 - cache the value of $Storable::DEBUGME (since cperl enabled 190 Storable TRACEME builds for all -DDEBUGGING builds) 191 192 - no longer discard exceptions thrown by 193 STORABLE_freeze/_thaw/attach() (perl #25933) 194 195 - fix dependencies used to build Storable.pm from __Storable__.pm 196 197 - add experimental support for freezing/thawing regular 198 expressions (perl #50608) 199 200 - re-work recursion limiting to store the limit in a perl variable 201 instead of baked into Storable.$so. This allows static Storable 202 builds to work, and avoids the kind of circular reference on 203 Storable.$so. 204 2053.05_13 - 2017-07-24 13:57:13 rurban 206 207 - mingw fix: use safe defaults, not segfaulting defaults. 208 mingw fails on the stacksize binary search, leaving it empty. 209 2103.05_12 - Wed Apr 19 09:11:07 2017 +0200 Reini Urban <rurban@cpan.org> 211 212 - enhance stack reserve from 8 to 16 213 214 - fix LD_LIBRARY_PATH usage for CORE 215 216 - fixed some coverity warnings and leaks 217 218 - added a release make target 219 2203.05_11 - Wed Mar 29 21:04:28 2017 +0200 Reini Urban <rurban@cpan.org> 221 222 - croak on sizes read > I32_MAX 223 224 - simplify last_op_in_netorder 225 226 - protect from empty retrieve_vstring 227 228 - protect store_other error buf, potential static 229 buffer overflow. 230 2313.05_10 - Tue Mar 14 09:52:20 2017 +0100 Reini Urban <rurban@cpan.org> 232 233 - CORE-only improvements to stacksize 234 2353.05_09 - Thu Mar 9 19:20:19 2017 +0100 Reini Urban <rurban@cpan.org> 236 237 - compute the stacksizes, improve cleanup within croak 238 from stack exhaustion. 239 240 - added stack_depth and stack_depth_hash getters. 241 2423.05_08 - Wed Mar 8 21:03:43 CET 2017 Reini Urban <rurban@cpan.org> 243 244 - finetune the max stack limit, for C++, DEBUGGING and 32bit. 245 246 - fix t/blessed.t for cperl5.22 247 2483.05_07 - Sun Mar 5 13:36:47 2017 +0100 Reini Urban <rurban@cpan.org> 249 250 - Fixed a podchecker issue 251 2523.05_06 - Sun Mar 5 11:42:04 2017 +0100 Reini Urban <rurban@cpan.org> 253 254 - Fixed wrong recursion depth error with large arrays containing 255 another array. L<[cperl #257]|https://github.com/perl11/cperl/issues/257> 256 2573.05_05 - Thu Feb 2 12:40:44 2017 +0100 Reini Urban <rurban@cpanel.net> 258 259 - Add leak tests for [cpan #97316], [perl #121928] 260 261 - Limit the max recursion depth to 1200 on 32bit systems. 262 We have no max_depth option yet, as in JSON::XS. 263 2643.05_04 - Thu Feb 2 11:59:21 2017 +0100 Reini Urban <rurban@cpanel.net> 265 266 - Fix retrieve_tied_array which fails since 5.16 267 [cpan #84705] 268 269 - Improve t/blessed.t in the creation of sv_yes/sv_no 270 with threaded perls. 271 2723.05_03 - Tue Jan 31 02:55:30 2017 +0100 Reini Urban <rurban@cpanel.net> 273 274 - Tune t/recurse.t stack-overflow limit more. 275 2763.05_02 - Mon Jan 30 19:50:29 2017 +0100 Reini Urban <rurban@cpanel.net> 277 278 - Tune t/recurse.t stack-overflow limit. Small 64bit systems overflow 279 even with depth 3000, where 32bit are ok. 280 2813.05_01 - Mon Jan 30 15:13:38 2017 +0100 Reini Urban <rurban@cpanel.net> 282 283 - Protect against stack overflows with nested arrays and hashes 284 [cpan #97526]. This imposes a new limit to your nested structures, 285 but JSON::XS has a limit of 512. We use a max_depth of 3000 for the 286 typical stack limit of 8k. 287 2883.05 - Sun Jan 29 11:36:43 2017 +0100 Reini Urban <rurban@cpanel.net> 289 290 - Protect against classname len overflow on the stack 291 and 2x on the heap with retrieve_bless and retrieve_hook. 292 A serious security issue with malcrafted storable files or buffers, 293 but p5p accepts no CVE on Storable attacks. See RT #130635 294 (reported by JD). 295 296 - Fix NULL ptr SEGVs with retrieve_code and retrieve_other. 297 See RT #130098 (reported and fixed by JD) 298 299 - Fix wrong huge LOBJECT support, broken since 3.00c. 300 Repro with `export PERL_TEST_MEMORY=8` 301 302 - Fix the few remaining 2-arg open calls. 303 304 - Portability and backport fixes back to 5.6.2 305 3063.04c - Sat Jan 7 09:01:29 2017 +0100 Reini Urban <rurban@cpanel.net> 307 308 - fix printf types and warnings, esp. for 32bit use64bitint 309 310 - Change sv_setpvn(…, "…", …) to sv_setpvs(…, "…") 311 3123.03c - Tue Jul 26 11:49:33 2016 +1000 Tony Cook <tony@develop-help.com> 313 314 - remove . from @INC when loading optional modules 315 3163.02c - Sun Nov 20 18:06:45 2016 +0100 Reini Urban <rurban@cpanel.net> 317 318 - Fix -Wc++11-compat warnings, fix -Wchar-subscripts 319 3203.01c - Fri Sep 16 01:32:59 2016 +0200 Reini Urban <rurban@cpanel.net> 321 322 - Added warn_security("Movable-Type CVE-2015-1592 Storable metasploit attack") 323 when detecting the third destructive metasploit vector, 324 thawing bless \"mt-config.cgi", "CGITempFile". 325 3263.00c - Thu Mar 31 17:10:27 2016 +0200 Reini Urban <rurban@cpanel.net> 327 328 - Added support for u64 strings, arrays and hashes >2G 329 via a new LOBJECT tag. This is for 32bit systems and lengths 330 between 2GB and 4GB (I32-U32), and 64bit (>I32). 331 332 - Bumped STORABLE_BIN_MINOR and STORABLE_BIN_WRITE_MINOR from 10 to 11 333 334 - fix parallel tests, use unique filenames. 335 336 - fixed 2 instances of 2arg open, 337 338 - added optional flag arguments to skip tie and bless on retrieve/thaw, 339 340 - added SECURITY WARNING and Large data support to docs 341 342 - compute CAN_FLOCK at compile-time 343 344 - reformat everything consistently 345 346 - enable DEBUGME tracing and asserts with -DDEBUGGING 347 348 - fix all 64 bit compiler warnings 349 350 - added some abstraction methods to avoid code duplication 351 3522.65 - unreleased 353 354 - Replace multiple 'use vars' by 'our' 355 356 - remove Config dependency 357 3582.51 - Wed Jul 2 16:25:25 IST 2014 Abhijit Menon-Sen <ams@toroid.org> 359 360 - [perl #121928] Fix memory leak for dclone inside freeze hook 361 (Alex Solovey) 362 363 - Do not call DESTROY for empty objects 364 (Vladimir Timofeev) 365 366 - Other bugfixes 367 3682.45 - Sat Jul 13 18:34:27 IST 2013 Abhijit Menon-Sen <ams@toroid.org> 369 370 - [perl #118829] Memory leaks in STORABLE_attach 371 (Vladimir Timofeev) 372 373 - [perl #118139] Don't SEGV during global destruction 374 (Nicholas Clark, report/test from Reini Urban) 375 376 - Added security warnings section (Steffen Mueller) 377 378 - Update INSTALLDIRS to favour installation in 'site' 379 (James E Keenan) 380 3812.39 - Tue 11 Sep 06:51:11 IST 2012 Abhijit Menon-Sen <ams@toroid.org> 382 383 - Various bugfixes, including compatibility fixes for older versions of Perl 384 and vstring handling. 385 3862.29 - Sun 3 Jul 09:10:11 IST 2011 Abhijit Menon-Sen <ams@toroid.org> 387 388 - Various bugfixes, notably including preventing nfreeze from incorrectly 389 stringifying integers. 390 3912.25 - Fri 3 Dec 14:12:32 GMT 2010 David Leadbeater <dgl@dgl.cx> 392 393 - Support for serializing coderefs containing UTF-8. 394 3952.24 - Fri Nov 12 10:52:19 IST 2010 Abhijit Menon-Sen <ams@toroid.org> 396 397 - Performance improvement for overloaded classes from Benjamin Holzman. 398 3992.23 - Fri Nov 12 10:36:22 IST 2010 Abhijit Menon-Sen <ams@toroid.org> 400 401 - Release the latest version from the Perl repository. 402 4032.21 - Thu Aug 6 10:55:50 IST 2009 Abhijit Menon-Sen <ams@toroid.org> 404 405 - Includes hints/hpux.pl that was inadvertently left out of 2.20. 406 4072.20 - Mon May 18 09:38:20 IST 2009 Abhijit Menon-Sen <ams@toroid.org> 408 409 - Fix bug handling blessed references to overloaded objects, plus other 410 miscellaneous fixes. 411 4122.19 413 414 - released with perl 5.8.9. 415 4162.18 - Thu Nov 22 13:24:18 IST 2007 Abhijit Menon-Sen <ams@toroid.org> 417 418 - Compile fixes for older Perls. (No functional changes.) 419 4202.17 - Sat Nov 17 02:12:12 IST 2007 Abhijit Menon-Sen <ams@toroid.org> 421 422 - Various broken tests fixed. (No functional changes.) 423 4242.16 - Sat Mar 31 06:11:06 IST 2007 Abhijit Menon-Sen <ams@toroid.org> 425 426 - Fixes to Storable::dclone, read_magic, retrieve_lscalar 427 428 - Storable 0.1 compatibility 429 430 - Miscellaneous compile/leak/test/portability fixes 431 4322.15 - Mon May 23 22:48:49 IST 2005 Abhijit Menon-Sen <ams@wiw.org> 433 434 - Minor changes to address a couple of compile problems. 435 4362.14 - Mon Apr 25 07:29:14 IST 2005 Abhijit Menon-Sen <ams@wiw.org> 437 438 - Store weak references 439 440 - Add STORABLE_attach hook. 441 4422.13 - Thu Jun 17 12:26:43 BST 2004 Nicholas Clark <nick@ccl4.org> 443 444 - Don't change the type of top level overloaded references to RV - 445 they are perfectly correct as PVMG 446 447 - Storable needs to cope with incoming frozen data that happens to be 448 utf8 encoded. 449 4502.12 - Wed Mar 17 15:40:29 GMT 2004 Nicholas Clark <nick@ccl4.org> 451 452 - Add regression tests for the auto-require of STORABLE_thaw 453 454 - Add auto-require of modules to restore overloading (and tests) 455 456 - Change to no context (should give speedup with ithreads) 457 4582.11 - Sat Mar 13 20:11:03 GMT 2004 Nicholas Clark <nick@ccl4.org> 459 460 - Storing restricted hashes in canonical order would SEGV. Fixed. 461 462 - It was impossible to retrieve references to PL_sv_no and 463 PL_sv_undef from STORABLE_thaw hooks. 464 465 - restrict.t was failing on 5.8.0, due to 5.8.0's unique 466 implementation of restricted hashes using PL_sv_undef 467 468 - These changes allow a space optimisation for restricted hashes. 469 4702.10 - Sat Jan 24 16:22:32 IST 2004 Abhijit Menon-Sen <ams@wiw.org> 471 472 - Thread safety: Storable::CLONE/init_perlinterp() now create 473 a new Perl context for each new ithread. 474 (From Stas Bekman and Jan Dubois.) 475 476 - Fix a tag count mismatch with $Storable::Deparse that caused 477 all back-references after a stored sub to be off-by-N (where 478 N was the number of code references in between). 479 (From Sam Vilain.) 480 481 - Prevent CODE references from turning into SCALAR references. 482 (From Slaven Rezic.) 483 4842.09 - Sat Jan 3 18:49:18 GMT 2004 Nicholas Clark <nick@ccl4.org> 485 486 - Fix minor problems with the CPAN release 487 488 - Make Storable.xs work on 5.8.2 and later (already in the core) 489 490 - Ship the linux hints file 491 492 - Ship Test::More for the benefit of Perls pre 5.6.2 493 494 - Correct Makefile.PL to only install in core for 5.8.0 and later 495 4962.08 - Sat Sep 6 01:08:20 IST 2003 Abhijit Menon-Sen <ams@wiw.org> 497 498 - This release works around a 5.8.0 bug which caused hashes to not 499 be marked as having key flags even though an HEK had HEK_WASUTF8 500 set. (Note that the only reasonable solution is to silently drop 501 the flag from the affected key.) 502 503 - Users of RT 3 who were seeing assertion failures should upgrade. 504 (Perl 5.8.1 will have the bug fixed.) 505 5062.07 - Mon May 5 10:24:16 IST 2003 Abhijit Menon-Sen <ams@wiw.org> 507 508 - Minor bugfixes (self-tied objects are now correctly stored, as 509 are the results of additions larger than INT_MAX). 510 5112.06 - Mon Oct 7 21:56:38 BST 2002 Nicholas Clark <nick@ccl4.org> 512 513 - Remove qr// from t/downgrade.t so that it will run on 5.004 514 515 - Mention $File::Spec::VERSION a second time in t/forgive.t so that it 516 runs without warnings in 5.004 (this may be a 5.00405 bug I'm working 517 round) 518 519 - Fix t/integer.t initialisation to actually generate 64 bits of 9c 520 521 - Fix comparison tests to use eval to get around 64 bit IV conversion 522 issues on 5.6.x, following my t/integer.t ^ precedence bug found by 523 Rafael Garcia-Suarez 524 525 - Alter t/malice.t to work with Test/More.pm in t/, and skip individual 526 subtests that use $Config{ptrsize}, so that the rest of the test can 527 now be run with 5.004 528 529 - Change t/malice.t and the error message in check_magic in Storable.xs 530 from "Pointer integer size" to "Pointer size" 531 532 - Remove prerequisite of Test::More from Makefile.PL 533 534 - Ship Test::Builder, Test::Simple and Test::More in t 535 5362.05 - Thu Oct 3 08:57:22 IST 2002 Abhijit Menon-Sen <ams@wiw.org> 537 538 - Adds support for CODE references from Slaven Rezic 539 <slaven.rezic@berlin.de>. 540 5412.04 - Fri Jun 7 23:55:41 BST 2002 Nicholas Clark 542 543 - Bug fix from Radu Greab <radu@netsoft.ro> (plus regression test) 544 to fix a recently introduced bug detected by Dave Rolsky. 545 Bug was that for a non threaded build, the class information was 546 being lost at freeze time on the first object with a STORABLE_freeze 547 hook. Consequentially the object was not blessed at all when thawed. 548 (The presence (or lack) of STORABLE_thaw was irrelevant; this was 549 a store-time data lost bug, caused by failure to initialize internal 550 context) 551 The bug was introduced as development perl change 16442 (on 552 2002/05/07), so has been present since 2.00. 553 Patches to introduce more regression tests to reduce the chance of 554 a reoccurrence of this sort of goof are always welcome. 555 5562.03 - Thu May 30 20:31:08 BST 2002 Nicholas Clark <nick@ccl4.org> 557 558 - Header changes on 5.6.x on Unix where IV is long long 559 560 5.6.x introduced the ability to have IVs as long long. However, 561 Configure still defined BYTEORDER based on the size of a long. 562 Storable uses the BYTEORDER value as part of the header, but 563 doesn't explicitly store sizeof(IV) anywhere in the header. 564 Hence on 5.6.x built with IV as long long on a platform that 565 uses Configure (ie most things except VMS and Windows) headers 566 are identical for the different IV sizes, despite the files 567 containing some fields based on sizeof(IV) 568 569 5.8.0 is consistent; all platforms have BYTEORDER in config.h 570 based on sizeof(IV) rather than sizeof(long). This means that 571 the value of BYTEORDER will change from (say) 4321 to 87654321 572 between 5.6.1 and 5.8.0 built with the same options to Configure 573 on the same machine. This means that the Storable header will 574 differ, and the two versions will wrongly thing that they are 575 incompatible. 576 577 For the benefit of long term consistency, Storable now 578 implements the 5.8.0 BYTEORDER policy on 5.6.x. This means that 579 2.03 onwards default to be incompatible with 2.02 and earlier 580 (ie the large 1.0.x installed base) on the same 5.6.x perl. 581 582 To allow interworking, a new variable 583 $Storable::interwork_56_64bit is introduced. It defaults to 584 false. Set it to true to read and write old format files. Don't 585 use it unless you have existing stored data written with 5.6.x 586 that you couldn't otherwise read, or you need to interwork with 587 a machine running older Storable on a 5.6.x with long long IVs 588 (i.e., you probably don't need to use it). 589 5902.02 - Sat May 25 22:38:39 BST 2002 Nicholas Clark <nick@ccl4.org> 591 592 - Rewrite Storable.xs so that the file header structure for write_magic 593 is built at compile time, and check_magic attempts to the header in 594 blocks rather than byte per byte. These changes make the compiled 595 extension 2.25% smaller, but are not significant enough to give a 596 noticeable speed up. 597 5982.01 - Thu May 23 22:50:41 BST 2002 Nicholas Clark <nick@ccl4.org> 599 600 - New regression tests integer.t 601 602 - Add code to safely store large unsigned integers. 603 604 - Change code not to attempt to store large integers (ie > 32 bits) 605 in network order as 32 bits. 606 607 - *Never* underestimate the value of a pathological test suite carefully 608 crafted with maximum malice before writing a line of real code. It 609 prevents crafty bugs from stowing away in your released code. 610 It's much less embarrassing to find them before you ship. 611 (Well, never underestimate it if you ever want to work for me) 612 6132.0 - Fri May 17 22:48:59 BST 2002 Nicholas Clark <nick@ccl4.org> 614 615 - binary format 2.5 (but writes format 2.4 on pre 5.7.3) 616 617 The perl5 porters have decided to make sure that Storable still 618 builds on pre-5.8 perls, and make the 5.8 version available on CPAN. 619 The VERSION is now 2.0, and it passes all tests on 5.005_03, 5.6.1 620 and 5.6.1 with threads. On 5.6.0 t/downgrade.t fails tests 34 and 37, 621 due to a bug in 5.6.0 - upgrade to 5.6.1. 622 623 - Jarkko and I have collated the list of changes the perl5 porters have 624 from the perl5 Changes file: 625 626 - data features of upcoming perl 5.8.0 are supported: Unicode hash 627 keys (Unicode hash values have been supported since Storable 1.0.1) 628 and "restricted hashes" (readonly hashes and hash entries) 629 630 - a newer version of perl can now be used to serialize data which is 631 not supported in earlier perls: Storable will attempt to do the 632 right thing for as long as possible, croaking only when safe data 633 conversion simply isn't possible. Alternatively earlier perls can 634 opt to have a lossy downgrade data instead of croaking 635 636 - when built with perls pre 5.7.3 this Storable writes out files 637 with binary format 2.4, the same format as Storable 1.0.8 onwards. 638 This should mean that this Storable will inter-operate seamlessly 639 with any Storable 1.0.8 or newer on perls pre 5.7.3 640 641 - dclone() now works with empty string scalar objects 642 643 - retrieving of large hashes is now more efficient 644 645 - more routines autosplit out of the main module, so Storable should 646 load slightly more quickly 647 648 - better documentation 649 650 - the internal context objects are now freed explicitly, rather than 651 relying on thread or process exit 652 653 - bugs fixed in debugging trace code affecting builds made with 64 bit 654 IVs 655 656 - code tidy-ups to allow clean compiles with more warning options 657 turned on avoid problems with $@ getting corrupted on 5.005_03 if 658 Carp wasn't already loaded 659 660 - added &show_file_magic, so you can add to /etc/magic and teach 661 Unix's file command about Storable files 662 663 - We plan to keep Storable on CPAN in sync with the Perl core, so 664 if you encounter bugs or other problems building or using Storable, 665 please let us know at perl5-porters@perl.org 666 Patches welcome! 667 6681.014 - Sat Dec 1 14:37:54 MET 2001 Raphael Manfredi <Raphael_Manfredi@pobox.com> 669 670 - This is the LAST maintenance release of the Storable module. 671 Indeed, Storable is now part of perl 5.8, and will be maintained 672 as part of Perl. The CPAN module will remain available there 673 for people running pre-5.8 perls. 674 675 - Avoid requiring Fcntl upfront, useful to embedded runtimes. 676 Use an eval {} for testing, instead of making Storable.pm 677 simply fail its compilation in the BEGIN block. 678 679 - store_fd() will now correctly autoflush file if needed. 680 6811.013 - Tue Aug 28 23:53:20 MEST 2001 Raphael Manfredi <Raphael_Manfredi@pobox.com> 682 683 - Fixed truncation race with lock_retrieve() in lock_store(). 684 The file has to be truncated only once the exclusive lock is held. 685 686 - Removed spurious debugging messages in .xs file. 687 6881.012 - Sun Jul 1 13:27:32 MEST 2001 Raphael Manfredi <Raphael_Manfredi@pobox.com> 689 690 - Systematically use "=over 4" for POD linters. 691 Apparently, POD linters are much stricter than would 692 otherwise be needed, but that's OK. 693 694 - Fixed memory corruption on croaks during thaw(). Thanks 695 to Claudio Garcia for reproducing this bug and providing the 696 code to exercise it. Added test cases for this bug, adapted 697 from Claudio's code. 698 699 - Made code compile cleanly with -Wall (from Jarkko Hietaniemi). 700 701 - Changed tagnum and classnum from I32 to IV in context. Also 702 from Jarkko. 703 7041.011 - Thu Mar 15 01:22:32 MET 2001 Raphael Manfredi <Raphael_Manfredi@pobox.com> 705 706 - Last version was wrongly compiling with assertions on, due 707 to an edit glitch. That did not cause any problem (apart from 708 a slight performance loss) excepted on Win* platforms, where the 709 assertion code does not compile. 710 7111.010 - Sat Feb 17 13:37:37 MET 2001 Raphael Manfredi <Raphael_Manfredi@pobox.com> 712 713 - Forgot to increase version number at previous patch (there were 714 two of them, which is why we jump from 1.0.8 to 1.0.10). 715 7161.008 - Sat Feb 17 13:35:00 MET 2001 Raphael Manfredi <Raphael_Manfredi@pobox.com> 717 718 - binary format 2.4. 719 720 - Fixed incorrect error message. 721 722 - Now bless objects ASAP at retrieve time, which is meant to fix 723 two bugs: 724 725 * Indirect references to overloaded object were not able to 726 restore overloading if the object was not blessed yet, 727 which was possible since blessing occurred only after the 728 recursive retrieval. 729 730 * Storable hooks asking for serialization of blessed ref could 731 get un-blessed refs at retrieval time, for the very same 732 reason. 733 734 * The fix implemented here was suggested by Nick Ing-Simmons. 735 736 - Added support for blessed ref to tied structures. This is the 737 cause for the binary format change. 738 739 - Added EBCDIC version of the compatibility test with 0.6.11, 740 from Peter Prymmer 741 742 - Added tests for the new features, and to make sure the bugs they 743 are meant to fix are indeed fixed. 744 7451.007 - Wed Jan 3 10:43:18 MET 2001 Raphael Manfredi <Raphael_Manfredi@pobox.com> 746 747 - Removed spurious 'clean' entry in Makefile.PL. 748 749 - Added CAN_FLOCK to determine whether we can flock() or not, 750 by inspecting Perl's configuration parameters, as determined 751 by Configure. 752 753 - Trace offending package when overloading cannot be restored 754 on a scalar. 755 756 - Made context cleanup safer to avoid dup freeing, mostly in the 757 presence of repeated exceptions during store/retrieve (which can 758 cause memory leaks anyway, so it's just additional safety, not a 759 definite fix). 760 7611.006 - Sun Nov 5 18:23:48 MET 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com> 762 763 - Fixed severe "object lost" bug for STORABLE_freeze returns, 764 when refs to lexicals, taken within the hook, were to be 765 serialized by Storable. Enhanced the t/recurse.t test to 766 stress hook a little more with refs to lexicals. 767 7681.005 - Thu Oct 26 19:14:38 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com> 769 770 - Documented that store() and retrieve() can return undef. 771 That is, the error reporting is not always made via exceptions, 772 as the paragraph on error reporting was implying. 773 774 - Auto requires module of blessed ref when STORABLE_thaw misses. 775 When the Storable engine looks for the STORABLE_thaw hook and 776 does not find it, it now tries to require the package into which 777 the blessed reference is. 778 779 - Just check $^O, in t/lock.t: there's no need to pull the whole 780 Config module for that. 781 7821.004 - Mon Oct 23 20:03:49 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com> 783 784 - Protected calls to flock() for DOS platform: apparently, the 785 flock/fcnlt emulation is reported to be broken on that 786 platform. 787 788 - Added logcarp emulation if they don't have Log::Agent, since 789 we now use it to carp when lock_store/lock_retrieve is used 790 on DOS. 791 7921.003 - Fri Sep 29 21:52:29 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com> 793 794 - Avoid using "tainted" and "dirty" since Perl remaps them via 795 cpp (i.e. #define). This is deeply harmful when threading 796 is enabled. This concerned both the context structure and 797 local variable and argument names. Brrr..., scary! 798 7991.002 - Thu Sep 28 23:46:39 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com> 800 801 - Fixed spelling in README. 802 803 - Added lock_store, lock_nstore, and lock_retrieve (advisory locking) 804 after a proposal from Erik Haugan <erik@solbors.no>. 805 806 - Perls before 5.004_04 lack newSVpvn, added remapping in XS. 807 808 - Fixed stupid typo in the t/utf8.t test. 809 8101.001 - Sun Sep 17 18:51:10 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com> 811 812 - binary format 2.3. 813 814 - Documented that doubles are stored stringified by nstore(). 815 816 - Added Salvador Ortiz Garcia in CREDITS section, He identified 817 a bug in the store hooks and proposed the right fix: the class 818 id was allocated too soon. His bug case was also added to 819 the regression test suite. 820 821 - Now only taint retrieved data when source was tainted. A bug 822 discovered by Marc Lehmann. 823 824 - Added support for UTF-8 strings, a contribution of Marc Lehmann. 825 This is normally only activated in post-5.6 perls. 826 8271.000 - Thu Aug 31 23:06:06 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com> 828 829 - First official release Storable 1.0, for inclusion in perl 5.7.0. 830 831 - The license scheme is now compatible with Perl's. 832 8330.703 - Thu Aug 24 01:02:02 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com> 834 835 - ANSI-fied most of the code, preparing for Perl core integration. 836 The next version of Storable will be 0.8, and will be integrated 837 into the Perl core (development branch). 838 839 - Dispatch tables were moved upfront to relieve some compilers, 840 especially on AIX and Windows platforms. 841 842 - Merged 64-bit fixes from perl5-porters. 843 8440.702 - Mon Aug 14 09:22:04 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com> 845 846 - Added a refcnt dec in retrieve_tied_key(): sv_magic() increases 847 the refcnt on the mg_ptr as well. 848 849 - Removed spurious dependency to Devel::Peek, which was used for 850 testing only in t/tied_items.t. Thanks to Conrad Heiney 851 <conrad@fringehead.org> for spotting it first. 852 8530.701 - Sun Aug 13 22:12:59 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com> 854 855 - Marc Lehmann kindly contributed code to add overloading support 856 and to handle references to tied variables. 857 858 - Rewrote leading blurb about compatibility to make it clearer what 859 "backward compatibility" is about: when I say 0.7 is backward 860 compatible with 0.6, it means the revision 0.7 can read files 861 produced by 0.6. 862 863 - Mention new Clone(3) extension in SEE ALSO. 864 865 - Was wrongly optimizing for "undef" values in hashes by not 866 fully recursing: as a result, tied "undef" values were incorrectly 867 serialized. 868 8690.700 - Sun Jul 30 12:59:17 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com> 870 871 - The serializing format is new, known as version 2.0. It is fully 872 backward compatible with 0.6. Earlier formats are deprecated and 873 have not even been tested: next version will drop pre-0.6 format. 874 875 - Moved interface to the "beta" status. Some tiny parts are still 876 subject to change, but nothing important enough to warrant an "alpha" 877 status any longer. 878 879 - Slightly reduced the size of the Storable image by factorizing 880 object class names and removing final object storage notification due 881 to a redesign of the blessed object storing. 882 883 - Classes can now redefine how they wish their instances to be serialized 884 and/or deep cloned. Serializing hooks are written in Perl code. 885 886 - The engine is now fully re-entrant. 887 8880.611 - Sun Apr 2 23:47:50 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com> 889 890 - Added provision to detect more recent binary formats, since 891 the new upcoming Storable-0.7 will use a different format. 892 In order to prevent attempting the de-serialization of newer 893 formats by older versions, I'm adding this now to the 0.6 series. 894 895 - I'm expecting this revision to be the last of the 0.6 series. 896 Unless it does not work with perl 5.6, which I don't use yet, 897 and therefore against which I cannot test. 898 8990.610 - Wed Mar 29 19:55:21 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com> 900 901 - Added note about format incompatibilities with old versions 902 (i.e. pre 0.5@9 formats, which cannot be understood as there 903 was no versionning information in the file by then). 904 905 - Protect all $@ variables when eval {} used, to avoid corrupting 906 it when store/retrieve is called within an exception handler. 907 908 - Mistakenly included "patchlevel.h" instead of <patchlevel.h>, 909 preventing Perl's patchlevel from being included, which is 910 needed starting from 5.6. 911 9120.609 - Thu Feb 10 19:48:16 MET 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com> 913 914 - Fixed shared "undef" bug in hashes, which did not remain shared 915 through store/retrieve. 916 917 - added last_op_in_netorder() predicate 918 919 - documented last_op_in_netorder() 920 921 - added tests for the new last_op_in_netorder() predicate 922 9230.607 - Wed Oct 20 19:07:36 MEST 1999 Raphael Manfredi <Raphael_Manfredi@pobox.com> 924 925 - Forgot to update VERSION 926 9270.606 - Tue Oct 19 21:25:02 MEST 1999 Raphael Manfredi <Raphael_Manfredi@pobox.com> 928 929 - Added mention of japanese translation for the manual page. 930 931 - Fixed typo in macro that made threaded code not compilable, 932 especially on Win32 platforms. 933 934 - Changed detection of older perls (pre-5.005) by testing PATCHLEVEL 935 directly instead of relying on internal symbols. 936 9370.605 - Tue Sep 14 22:13:28 MEST 1999 Raphael Manfredi <Raphael_Manfredi@pobox.com> 938 939 - Integrated "thread-safe" patch from Murray Nesbitt. 940 Note that this may not be very efficient for threaded code, 941 see comment in the code. 942 943 - Try to avoid compilation warning on 64-bit CPUs. Can't test it, 944 since I don't have access to such machines. 945 9460.604 - Mon Jul 12 14:37:19 METDST 1999 Raphael Manfredi <Raphael_Manfredi@pobox.com> 947 948 - changed my e-mail to pobox. 949 950 - mentioned it is not thread-safe. 951 952 - updated version number. 953 954 - uses new internal PL_* naming convention. 955 9560.603 - Fri Jul 3 13:38:16 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 957 958 - Updated benchmark figures due to recent optimizations done in 959 store(): tagnums are now stored as-is in the hash table, so 960 no surrounding SV is created. And the "shared keys" mode for 961 hash table was turned off. 962 963 - Fixed backward compatibility (wrt 0.5@9) for retrieval of 964 blessed refs. That old version did something wrong, but the 965 bugfix prevented correct retrieval of the old format. 966 9670.602 - Mon Jun 22 11:00:48 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 968 969 - Changed benchmark figures. 970 971 - Adjust refcnt of tied objects after calling sv_magic() to avoid 972 memory leaks. Contributed by Jeff Gresham. 973 9740.601 - Fri Jun 12 11:50:04 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 975 976 - Added workaround for persistent LVALUE-ness in perl5.004. All 977 scalars tagged as being an lvalue are handled as if they were 978 not an lvalue at all. Added test for that LVALUE bug workaround. 979 980 - Now handles Perl immortal scalars explicitly, by storing &sv_yes 981 as such, explicitly. 982 983 - Retrieval of non-immortal undef cannot be shared. Previous 984 version was over-optimizing by not creating a separate SV for 985 all undefined scalars seen. 986 9870.600 - Thu Jun 4 17:21:51 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 988 989 - This version introduces a binary incompatibility in the generated 990 binary image, which is more compact than older ones by approximatively 991 15%, depending on the exact degree of sharing in your structures. 992 993 - The good news is that your older images can still be retrieved with 994 this version, i.e. backward compatibility is preserved. This version 995 of Storable can only generate new binaries however. 996 997 - Another good news is that the retrieval of data structure is 998 significantly quicker than before, because a Perl array is used 999 instead of a hash table to keep track of retrieved objects, and 1000 also because the image being smaller, less I/O function calls are 1001 made. 1002 10030.509 - Tue May 12 09:15:15 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 1004 1005 - Version number now got from Storable.pm directly. 1006 1007 - Fixed overzealous sv_type() optimization, which would make 1008 Storable fail when faced with an "upgraded" SV to the PVIV 1009 or PVNV kind containing a reference. 1010 10110.508 - Thu Apr 30 15:11:30 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 1012 1013 - Extended the SYNOPSIS section to give quick overview of the 1014 routines and their signature. 1015 1016 - Optimized sv_type() to avoid flags checking when not needed, i.e. 1017 when their type makes it impossible for them to be refs or tied. 1018 This slightly increases throughput by a few percents when refs 1019 and tied variables are marginal occurrences in your data. 1020 1021 - Stubs for XS now use OutputStream and InputStream file types to 1022 make it work when the given file is actually a socket. Perl 1023 makes a distinction for sockets in its internal I/O structures 1024 by having both a read and a write structure, whereas plain files 1025 share the same one. 1026 10270.507 - Fri Apr 24 17:29:23 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 1028 1029 - Thanks to a contribution from Benjamin A. Holzman, Storable is now 1030 able to correctly serialize tied SVs, i.e. tied arrays, hashes 1031 and scalars. 1032 10330.506 - Thu Apr 9 18:07:51 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 1034 1035 - I said SvPOK() had changed to SvPOKp(), but that was a lie... 1036 10370.505 - Wed Apr 8 13:14:29 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 1038 1039 - Wrote sizeof(SV *) instead of sizeof(I32) when portable, which 1040 in effect mangled the object tags and prevented portability 1041 across 32/64 bit architectures! 1042 10430.504 - Wed Mar 25 14:57:02 MET 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 1044 1045 - Added code example for store_fd() and retrieve_fd() in the 1046 man page, to emphasize that file descriptors must be passed as 1047 globs, not as plain strings. 1048 1049 - Cannot use SV addresses as tag when using nstore() on LP64. This 1050 was the cause of problems when creating a storable image on an 1051 LP64 machine and retrieving it on an ILP32 system, which is 1052 exactly what nstore() is meant for... 1053 1054 - However, we continue to use SV addresses as tags for plain store(), 1055 because benchmarking shows that it saves up to 8% of the store 1056 time, and store() is meant to be fast at the expense of lack 1057 of portability. 1058 1059 - This means there will be approximately an 8% degradation of 1060 performance for nstore(), but it's now working as expected. 1061 That cost may vary on your machine of course, since it is 1062 solely caused by the memory allocation overhead used to create 1063 unique SV tags for each distinct stored SV. 1064 10650.503 - Tue Jan 20 09:21:53 MET 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 1066 1067 - Don't use any '_' in version number. 1068 10690.5_02 - Tue Jan 13 17:51:50 MET 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 1070 1071 - Updated version number. 1072 1073 - added binmode() calls for systems where it matters. 1074 1075 - Be sure to pass globs, not plain file strings, to C routines, 1076 so that Storable can be used under the Perl debugger. 1077 10780.5_01 - Wed Nov 5 10:53:22 MET 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 1079 1080 - Fix memory leaks on seen hash table and returned SV refs. 1081 1082 - Storable did not work properly when tainting enabled. 1083 1084 - Fixed "Allocation too large" messages in freeze/thaw and added. 1085 proper regression test in t/freeze.t. 1086 10870.5 - Tue Jun 10 18:47:47 MET 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 1088 1089 - Fix storing in network order where it isn't native 1090 1091 - Fix size calculation when storing to memory or cloning 1092 10930.4_07 - Tue Jun 3 09:41:33 METDST 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 1094 1095 - Added freeze/thaw interface and dclone. 1096 10970.4_06 - Fri May 16 10:45:47 METDST 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 1098 1099 - Forgot that AutoLoader does not export its own AUTOLOAD. 1100 I could use 1101 1102 use AutoLoader 'AUTOLOAD'; 1103 1104 but that would not be backward compatible. So the export is 1105 done by hand... 1106 11070.4_05 - Tue Mar 25 11:21:32 MET 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 1108 1109 - Empty scalar strings are now "defined" at retrieval time. 1110 1111 - New test to ensure an empty string is defined when retrieved. 1112 11130.4_04 - Thu Feb 27 16:32:44 MET 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 1114 1115 - Declare VERSION as being used 1116 1117 - Fixed a typo in the PerlIO_putc remapping. 1118 PerlIO_read and perlIO_write inverted size/nb_items. 1119 (only relevant for pre-perl5.004 versions) 1120 11210.4_03 - Thu Feb 27 15:58:31 MET 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 1122 1123 - Added VERSION identification 1124 1125 - Allow build with perl5.003, which is ante perlIO time 1126 11270.4_02 - Wed Jan 22 15:19:56 MET 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 1128 1129 - Added "thanks to" section to README. 1130 1131 - Documented new forgive_me variable. 1132 1133 - Made 64-bit clean. 1134 1135 - Added forgive_me support to allow store() of data structures 1136 containing non-storable items like CODE refs. 1137 11380.4 - Wed Jan 14 19:25:57 MET 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 1139 1140 - Avoid changing directory in tests 1141 1142 - Add a separate type for storing longer strings 1143 1144 - Use PerlIO APIs 1145 11460.3 - Tue Jan 13 16:12:36 MET 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 1147 1148 - Encode integers as integers even if they have NOK flag 1149 1150 - Avoid extra increment of ref count when retreiving scalar references 1151 1152 - Fix mutability of hash slots decoded from undefs 1153 11540.2_02 - Mon Jan 13 17:53:18 MET 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 1155 1156 - Added MTG statistics. 1157 1158 - Updated statistics with MTG performance (1 Mbyte/s on store) 1159 1160 - Missed Changelog in MANIFEST. 1161 11620.2 - Mon Jan 13 17:20:55 MET 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 1163 1164 - Croak only after having closed the file 1165 1166 - Removed erroneous line in retrieve_fd 1167 1168 - Forgot to take network order into account for lengths 1169 11700.1 - Mon Oct 2 11:50:02 MET 1995 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> 1171 1172 - Initial release 1173