xref: /openbsd-src/gnu/usr.bin/perl/dist/Storable/ChangeLog (revision 3d61058aa5c692477b6d18acfbbdb653a9930ff9)
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