This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
(perl #132876) define API macros on if the NEED_ macro is defined
[perl5.git] / dist / Storable / ChangeLog
CommitLineData
5b1bc101
TC
12018-02-07 15:08:00 tonyc
2 Version 3.06
3
4 * support large object ids. The code in theory supported arrays
5 with more than 2**32 elements, but references to the elements
6 emitted at the end of the array with be retrieved as references to
7 the wrong elements.
8 * 32-bit object ids over 2**31-1 weren't correctly handled.
9 * hook object id generation now supports 64-bit ids where needed
10 * writing 64-bit lengths in network order now works
11 * reading 64-bit lengths in network order now reads the components
12 in the correct order.
13 * retrieving large object tags are now only handled on 64-bit
14 platforms, large object tags should only be emitted for objects
15 that are too large for the 32-bit address space, so it was only
16 wasted code.
17 * reading 32-bit lengths for LSCALAR and LUTF8STR as unsigned
18 (perl #131990)
19 * reading flagged large object hashes didn't read the flags
20 * treat the 32-bit size of hook data as unsigned, values over 2GB
21 were treated as large (close to 2**64) parameters to NEWSV().
22 (perl #131999)
23 * added support for hook data over 4GB in size
24 * zero length data receievd from STORABLE_freeze() no longer
25 results in an invalid SV being passed to STORABLE_thaw/_attach()
26 (perl #118551)
27 * where practical, padding is now cleared when emitting a long
28 double (perl #131136)
29 * cache the value of $Storable::DEBUGME (since cperl enabled
30 Storable TRACEME builds for all -DDEBUGGING builds)
31 * no longer discard exceptions thrown by
32 STORABLE_freeze/_thaw/attach() (perl #25933)
33 * fix dependencies used to build Storable.pm from __Storable__.pm
34 * add experimental support for freezing/thawing regular
35 expressions (perl #50608)
36 * re-work recursion limiting to store the limit in a perl variable
37 instead of baked into Storable.$so. This allows static Storable
38 builds to work, and avoids the kind of circular reference on
39 Storable.$so.
40
2a4dadc5
RU
412017-07-24 13:57:13 rurban
42 Version 3.05_13
43
44 * mingw fix: use safe defaults, not segfaulting defaults.
45 mingw fails on the stacksize binary search, leaving it empty.
46
dab4d2bf
RU
47Wed Apr 19 09:11:07 2017 +0200 Reini Urban <rurban@cpan.org>
48 Version 3.05_12
49
50 * enhance stack reserve from 8 to 16
51 * fix LD_LIBRARY_PATH usage for CORE
52 * fixed some coverity warnings and leaks
53 * added a release make target
54
55Wed Mar 29 21:04:28 2017 +0200 Reini Urban <rurban@cpan.org>
56 Version 3.05_11
57
58 * croak on sizes read > I32_MAX
59 * simplify last_op_in_netorder
60 * protect from empty retrieve_vstring
61 * protect store_other error buf, potential static
62 buffer overflow.
63
578e86dc
RU
64Tue Mar 14 09:52:20 2017 +0100 Reini Urban <rurban@cpan.org>
65 Version 3.05_10
66
67 * CORE-only improvements to stacksize
68
dd7f75e0
RU
69Thu Mar 9 19:20:19 2017 +0100 Reini Urban <rurban@cpan.org>
70 Version 3.05_09
71
72 * compute the stacksizes, improve cleanup within croak
73 from stack exhaustion.
74 * added stack_depth and stack_depth_hash getters.
75
04ef8d9d
RU
76Wed Mar 8 21:03:43 CET 2017 Reini Urban <rurban@cpan.org>
77 Version 3.05_08
78
79 * finetune the max stack limit, for C++, DEBUGGING and 32bit.
80 * fix t/blessed.t for cperl5.22
81
6f282064
RU
82Sun Mar 5 13:36:47 2017 +0100 Reini Urban <rurban@cpan.org>
83 Version 3.05_07
84
85 * Fixed a podchecker issue
86
87Sun Mar 5 11:42:04 2017 +0100 Reini Urban <rurban@cpan.org>
88 Version 3.05_06
89
90 * Fixed wrong recursion depth error with large arrays containing
91 another array.
92 L<[cperl #257]|https://github.com/perl11/cperl/issues/257>
93
94Thu Feb 2 12:40:44 2017 +0100 Reini Urban <rurban@cpanel.net>
95 Version 3.05_05
96
97 * Add leak tests for [cpan #97316], [perl #121928]
98 * Limit the max recursion depth to 1200 on 32bit systems.
99 We have no max_depth option yet, as in JSON::XS.
100
101Thu Feb 2 11:59:21 2017 +0100 Reini Urban <rurban@cpanel.net>
102 Version 3.05_04
103
104 * Fix retrieve_tied_array which fails since 5.16
105 [cpan #84705]
106 * Improve t/blessed.t in the creation of sv_yes/sv_no
107 with threaded perls.
108
109Tue Jan 31 02:55:30 2017 +0100 Reini Urban <rurban@cpanel.net>
81c9046e
RU
110 Version 3.05_03
111
112 * Tune t/recurse.t stack-overflow limit more.
113
6f282064 114Mon Jan 30 19:50:29 2017 +0100 Reini Urban <rurban@cpanel.net>
17ab2b3c
RU
115 Version 3.05_02
116
117 * Tune t/recurse.t stack-overflow limit. Small 64bit systems overflow
118 even with depth 3000, where 32bit are ok.
119
6f282064 120Mon Jan 30 15:13:38 2017 +0100 Reini Urban <rurban@cpanel.net>
17ab2b3c
RU
121 Version 3.05_01
122
123 * Protect against stack overflows with nested arrays and hashes
124 [cpan #97526]. This imposes a new limit to your nested structures,
125 but JSON::XS has a limit of 512. We use a max_depth of 3000 for the
126 typical stack limit of 8k.
127
128
6f282064 129Sun Jan 29 11:36:43 2017 +0100 Reini Urban <rurban@cpanel.net>
fb502597 130 Version 3.05
a258c17c
RU
131
132 * Protect against classname len overflow on the stack
133 and 2x on the heap with retrieve_bless and retrieve_hook.
134 A serious security issue with malcrafted storable files or buffers,
91524bf0
RU
135 but p5p accepts no CVE on Storable attacks. See RT #130635
136 (reported by JD).
a258c17c 137 * Fix NULL ptr SEGVs with retrieve_code and retrieve_other.
91524bf0
RU
138 See RT #130098 (reported and fixed by JD)
139 * Fix wrong huge LOBJECT support, broken since 3.00c.
140 Repro with `export PERL_TEST_MEMORY=8`
141 * Fix the few remaining 2-arg open calls.
fb502597 142 * Portability and backport fixes back to 5.6.2
a258c17c 143
6f282064 144Sat Jan 7 09:01:29 2017 +0100 Reini Urban <rurban@cpanel.net>
a258c17c
RU
145 Version 3.04c
146
147 * fix printf types and warnings, esp. for 32bit use64bitint
148 * Change sv_setpvn(…, "…", …) to sv_setpvs(…, "…")
149
150Tue Jul 26 11:49:33 2016 +1000 Tony Cook <tony@develop-help.com>
151 Version 3.03c
152
153 * remove . from @INC when loading optional modules
154
6f282064 155Sun Nov 20 18:06:45 2016 +0100 Reini Urban <rurban@cpanel.net>
a258c17c
RU
156 Version 3.02c
157
158 * Fix -Wc++11-compat warnings, fix -Wchar-subscripts
159
6f282064 160Fri Sep 16 01:32:59 2016 +0200 Reini Urban <rurban@cpanel.net>
fc10c8b7
RU
161 Version 3.01c
162
163 * Added warn_security("Movable-Type CVE-2015-1592 Storable metasploit attack")
164 when detecting the third destructive metasploit vector,
165 thawing bless \"mt-config.cgi", "CGITempFile".
166
6f282064 167Thu Mar 31 17:10:27 2016 +0200 Reini Urban <rurban@cpanel.net>
1cb8a344
RU
168 Version 3.00c
169
170 * Added support for u64 strings, arrays and hashes >2G
171 via a new LOBJECT tag. This is for 32bit systems and lengths
172 between 2GB and 4GB (I32-U32), and 64bit (>I32).
173 * Bumped STORABLE_BIN_MINOR and STORABLE_BIN_WRITE_MINOR from 10 to 11
174 * fix parallel tests, use unique filenames.
175 * fixed 2 instances of 2arg open,
176 * added optional flag arguments to skip tie and bless on retrieve/thaw,
177 * added SECURITY WARNING and Large data support to docs
178 * compute CAN_FLOCK at compile-time
179 * reformat everything consistently
180 * enable DEBUGME tracing and asserts with -DDEBUGGING
181 * fix all 64 bit compiler warnings
182 * added some abstraction methods to avoid code duplication
183
ad2ec6b5
N
184?????? p5p <perl5-porters@perl.org>
185 Version 2.65
186
187 * Replace multiple 'use vars' by 'our'
188 * remove Config dependency
189
289e2b8e
AMS
190Wed Jul 2 16:25:25 IST 2014 Abhijit Menon-Sen <ams@toroid.org>
191 Version 2.51
192
193 * [perl #121928] Fix memory leak for dclone inside freeze hook
194 (Alex Solovey)
195 * Do not call DESTROY for empty objects
196 (Vladimir Timofeev)
197 * Other bugfixes
65206418 198
76b97db5
AMS
199Sat Jul 13 18:34:27 IST 2013 Abhijit Menon-Sen <ams@toroid.org>
200 Version 2.45
201
202 * [perl #118829] Memory leaks in STORABLE_attach
203 (Vladimir Timofeev)
204 * [perl #118139] Don't SEGV during global destruction
205 (Nicholas Clark, report/test from Reini Urban)
206 * Added security warnings section (Steffen Mueller)
207 * Update INSTALLDIRS to favour installation in 'site'
208 (James E Keenan)
664f237a 209
6ac1779f 210Tue 11 Sep 06:51:11 IST 2012 Abhijit Menon-Sen <ams@toroid.org>
7a950fe4 211 Version 2.39
6ac1779f
AMS
212
213 Various bugfixes, including compatibility fixes for older
214 versions of Perl and vstring handling.
215
cefcbacf
AMS
216Sun 3 Jul 09:10:11 IST 2011 Abhijit Menon-Sen <ams@toroid.org>
217 Version 2.29
218
219 Various bugfixes, notably including preventing nfreeze from
220 incorrectly stringifying integers.
221
3139f421
DL
222Fri 3 Dec 14:12:32 GMT 2010 David Leadbeater <dgl@dgl.cx>
223 Version 2.25
224
225 Support for serializing coderefs containing UTF-8.
226
51f77169
AMS
227Fri Nov 12 10:52:19 IST 2010 Abhijit Menon-Sen <ams@toroid.org>
228
229 Version 2.24
230
231 Performance improvement for overloaded classes from Benjamin
232 Holzman.
233
234Fri Nov 12 10:36:22 IST 2010 Abhijit Menon-Sen <ams@toroid.org>
235
236 Version 2.23
237
238 Release the latest version from the Perl repository.
239
70006c44
SH
240Thu Aug 6 10:55:50 IST 2009 Abhijit Menon-Sen <ams@toroid.org>
241
242 Version 2.21
243
244 Includes hints/hpux.pl that was inadvertently left out of 2.20.
245
5c24ba53
AMS
246Mon May 18 09:38:20 IST 2009 Abhijit Menon-Sen <ams@toroid.org>
247
248 Version 2.20
249
250 Fix bug handling blessed references to overloaded objects, plus
251 other miscellaneous fixes.
252
253 (Version 2.19 was released with 5.8.9.)
254
8c68d109
AMS
255Thu Nov 22 13:24:18 IST 2007 Abhijit Menon-Sen <ams@toroid.org>
256
257 Version 2.18
258
259 Compile fixes for older Perls. (No functional changes.)
260
b90d408e
AMS
261Sat Nov 17 02:12:12 IST 2007 Abhijit Menon-Sen <ams@toroid.org>
262
263 Version 2.17
264
265 Various broken tests fixed. (No functional changes.)
266
c268aba5
RGS
267Sat Mar 31 06:11:06 IST 2007 Abhijit Menon-Sen <ams@toroid.org>
268
269 Version 2.16
270
271 1. Fixes to Storable::dclone, read_magic, retrieve_lscalar
272 2. Storable 0.1 compatibility
273 3. Miscellaneous compile/leak/test/portability fixes
274
0bb78401
AMS
275Mon May 23 22:48:49 IST 2005 Abhijit Menon-Sen <ams@wiw.org>
276
277 Version 2.15
278
279 Minor changes to address a couple of compile problems.
280
2f796f32 281Mon Apr 25 07:29:14 IST 2005 Abhijit Menon-Sen <ams@wiw.org>
c3c53033
NC
282
283 Version 2.14
284
285 1. Store weak references
2f796f32 286 2. Add STORABLE_attach hook.
c3c53033 287
fa523c3a
NC
288Thu Jun 17 12:26:43 BST 2004 Nicholas Clark <nick@ccl4.org>
289
290 Version 2.13
291
292 1. Don't change the type of top level overloaded references to RV -
293 they are perfectly correct as PVMG
294 2. Storable needs to cope with incoming frozen data that happens to be
295 utf8 encoded.
296
754c00ca
NC
297Wed Mar 17 15:40:29 GMT 2004 Nicholas Clark <nick@ccl4.org>
298
3f575d8d
NC
299 Version 2.12
300
754c00ca 301 1. Add regression tests for the auto-require of STORABLE_thaw
165cc789 302 2. Add auto-require of modules to restore overloading (and tests)
3f575d8d 303 3. Change to no context (should give speedup with ithreads)
754c00ca 304
dfd91409
NC
305Sat Mar 13 20:11:03 GMT 2004 Nicholas Clark <nick@ccl4.org>
306
307 Version 2.11
308
309 1. Storing restricted hashes in canonical order would SEGV. Fixed.
310 2. It was impossible to retrieve references to PL_sv_no and and
311 PL_sv_undef from STORABLE_thaw hooks.
312 3. restrict.t was failing on 5.8.0, due to 5.8.0's unique
313 implementation of restricted hashes using PL_sv_undef
314 4. These changes allow a space optimisation for restricted hashes.
315
a8b7ef86
AMS
316Sat Jan 24 16:22:32 IST 2004 Abhijit Menon-Sen <ams@wiw.org>
317
318 Version 2.10
319
320 1. Thread safety: Storable::CLONE/init_perlinterp() now create
321 a new Perl context for each new ithread.
322 (From Stas Bekman and Jan Dubois.)
323 2. Fix a tag count mismatch with $Storable::Deparse that caused
324 all back-references after a stored sub to be off-by-N (where
325 N was the number of code references in between).
326 (From Sam Vilain.)
327 3. Prevent CODE references from turning into SCALAR references.
328 (From Slaven Rezic.)
329
dcf2e277
NC
330Sat Jan 3 18:49:18 GMT 2004 Nicholas Clark <nick@ccl4.org>
331
332 Version 2.09
333
334 Fix minor problems with the CPAN release
7224c650 335 1: Make Storable.xs work on 5.8.2 and later (already in the core)
dcf2e277
NC
336 2: Ship the linux hints file
337 3: Ship Test::More for the benefit of Perls pre 5.6.2
7224c650 338 4: Correct Makefile.PL to only install in core for 5.8.0 and later
dcf2e277 339
fcaa57e7
AMS
340Sat Sep 6 01:08:20 IST 2003 Abhijit Menon-Sen <ams@wiw.org>
341
342 Version 2.08
343
344 This release works around a 5.8.0 bug which caused hashes to not
345 be marked as having key flags even though an HEK had HEK_WASUTF8
346 set. (Note that the only reasonable solution is to silently drop
347 the flag from the affected key.)
348
349 Users of RT 3 who were seeing assertion failures should upgrade.
350 (Perl 5.8.1 will have the bug fixed.)
351
a5271820
AMS
352Mon May 5 10:24:16 IST 2003 Abhijit Menon-Sen <ams@wiw.org>
353
354 Version 2.07
355
356 Minor bugfixes (self-tied objects are now correctly stored, as
357 are the results of additions larger than INT_MAX).
358
a2307be4
NC
359Mon Oct 7 21:56:38 BST 2002 Nicholas Clark <nick@ccl4.org>
360
361 Version 2.06
362
363 Remove qr// from t/downgrade.t so that it will run on 5.004
364 Mention $File::Spec::VERSION a second time in t/forgive.t so that it
365 runs without warnings in 5.004 (this may be a 5.00405 bug I'm working
366 round)
367 Fix t/integer.t initialisation to actually generate 64 bits of 9c
368 Fix comparison tests to use eval to get around 64 bit IV conversion
369 issues on 5.6.x, following my t/integer.t ^ precedence bug found by
370 Rafael Garcia-Suarez
371 Alter t/malice.t to work with Test/More.pm in t/, and skip individual
372 subtests that use $Config{ptrsize}, so that the rest of the test can
373 now be run with 5.004
374 Change t/malice.t and the error message in check_magic in Storable.xs
375 from "Pointer integer size" to "Pointer size"
376 Remove prerequisite of Test::More from Makefile.PL
377 Ship Test::Builder, Test::Simple and Test::More in t
378
9cfdba97
AMS
379Thu Oct 3 08:57:22 IST 2002 Abhijit Menon-Sen <ams@wiw.org>
380
381 Version 2.05
382
383 Adds support for CODE references from Slaven Rezic
384 <slaven.rezic@berlin.de>.
385
17374ab3
NC
386Fri Jun 7 23:55:41 BST 2002 Nicholas Clark
387
388 Version 2.04
389
390 Bug fix from Radu Greab <radu@netsoft.ro> (plus regression test)
391 to fix a recently introduced bug detected by Dave Rolsky.
392 Bug was that for a non threaded build, the class information was
393 being lost at freeze time on the first object with a STORABLE_freeze
394 hook. Consequentially the object was not blessed at all when thawed.
395 (The presence (or lack) of STORABLE_thaw was irrelevant; this was
396 a store-time data lost bug, caused by failure to initialize internal
397 context)
398 The bug was introduced as development perl change 16442 (on
399 2002/05/07), so has been present since 2.00.
400 Patches to introduce more regression tests to reduce the chance of
a9ccbcd7 401 a reoccurrence of this sort of goof are always welcome.
17374ab3 402
ee0f7aac
NC
403Thu May 30 20:31:08 BST 2002 Nicholas Clark <nick@ccl4.org>
404
8932d55c
AMS
405 Version 2.03 Header changes on 5.6.x on Unix where IV is long long
406
407 5.6.x introduced the ability to have IVs as long long. However,
408 Configure still defined BYTEORDER based on the size of a long.
409 Storable uses the BYTEORDER value as part of the header, but
c4a6f826 410 doesn't explicitly store sizeof(IV) anywhere in the header.
8932d55c
AMS
411 Hence on 5.6.x built with IV as long long on a platform that
412 uses Configure (ie most things except VMS and Windows) headers
413 are identical for the different IV sizes, despite the files
414 containing some fields based on sizeof(IV)
415
416 5.8.0 is consistent; all platforms have BYTEORDER in config.h
417 based on sizeof(IV) rather than sizeof(long). This means that
418 the value of BYTEORDER will change from (say) 4321 to 87654321
419 between 5.6.1 and 5.8.0 built with the same options to Configure
420 on the same machine. This means that the Storable header will
421 differ, and the two versions will wrongly thing that they are
422 incompatible.
423
424 For the benefit of long term consistency, Storable now
425 implements the 5.8.0 BYTEORDER policy on 5.6.x. This means that
426 2.03 onwards default to be incompatible with 2.02 and earlier
427 (ie the large 1.0.x installed base) on the same 5.6.x perl.
428
429 To allow interworking, a new variable
430 $Storable::interwork_56_64bit is introduced. It defaults to
431 false. Set it to true to read and write old format files. Don't
432 use it unless you have existing stored data written with 5.6.x
433 that you couldn't otherwise read, or you need to interwork with
434 a machine running older Storable on a 5.6.x with long long IVs
435 (i.e., you probably don't need to use it).
436
2aeb6432
NC
437Sat May 25 22:38:39 BST 2002 Nicholas Clark <nick@ccl4.org>
438
25f64a11
AMS
439 Version 2.02
440
441 Rewrite Storable.xs so that the file header structure for write_magic
442 is built at compile time, and check_magic attempts to the header in
443 blocks rather than byte per byte. These changes make the compiled
444 extension 2.25% smaller, but are not significant enough to give a
445 noticeable speed up.
2aeb6432 446
db670f21
NC
447Thu May 23 22:50:41 BST 2002 Nicholas Clark <nick@ccl4.org>
448
25f64a11
AMS
449 Version 2.01
450
451 - New regression tests integer.t
452 - Add code to safely store large unsigned integers.
453 - Change code not to attempt to store large integers (ie > 32 bits)
454 in network order as 32 bits.
455
456 *Never* underestimate the value of a pathological test suite carefully
457 crafted with maximum malice before writing a line of real code. It
458 prevents crafty bugs from stowing away in your released code.
459 It's much less embarrassing to find them before you ship.
460 (Well, never underestimate it if you ever want to work for me)
461
8989364b
NC
462Fri May 17 22:48:59 BST 2002 Nicholas Clark <nick@ccl4.org>
463
25f64a11
AMS
464 Version 2.0, binary format 2.5 (but writes format 2.4 on pre 5.7.3)
465
466 The perl5 porters have decided to make sure that Storable still
467 builds on pre-5.8 perls, and make the 5.8 version available on CPAN.
468 The VERSION is now 2.0, and it passes all tests on 5.005_03, 5.6.1
469 and 5.6.1 with threads. On 5.6.0 t/downgrade.t fails tests 34 and 37,
470 due to a bug in 5.6.0 - upgrade to 5.6.1.
471
472 Jarkko and I have collated the list of changes the perl5 porters have
473 from the perl5 Changes file:
474
475 - data features of upcoming perl 5.8.0 are supported: Unicode hash
476 keys (Unicode hash values have been supported since Storable 1.0.1)
477 and "restricted hashes" (readonly hashes and hash entries)
478 - a newer version of perl can now be used to serialize data which is
479 not supported in earlier perls: Storable will attempt to do the
480 right thing for as long as possible, croaking only when safe data
481 conversion simply isn't possible. Alternatively earlier perls can
482 opt to have a lossy downgrade data instead of croaking
483 - when built with perls pre 5.7.3 this Storable writes out files
484 with binary format 2.4, the same format as Storable 1.0.8 onwards.
485 This should mean that this Storable will inter-operate seamlessly
486 with any Storable 1.0.8 or newer on perls pre 5.7.3
487 - dclone() now works with empty string scalar objects
488 - retrieving of large hashes is now more efficient
489 - more routines autosplit out of the main module, so Storable should
490 load slightly more quickly
491 - better documentation
492 - the internal context objects are now freed explicitly, rather than
493 relying on thread or process exit
494 - bugs fixed in debugging trace code affecting builds made with 64 bit
495 IVs
496 - code tidy-ups to allow clean compiles with more warning options
497 turned on avoid problems with $@ getting corrupted on 5.005_03 if
498 Carp wasn't already loaded
499 - added &show_file_magic, so you can add to /etc/magic and teach
500 Unix's file command about Storable files
501
502 We plan to keep Storable on CPAN in sync with the Perl core, so
503 if you encounter bugs or other problems building or using Storable,
504 please let us know at perl5-porters@perl.org
505 Patches welcome!
506
596596d5
JH
507Sat Dec 1 14:37:54 MET 2001 Raphael Manfredi <Raphael_Manfredi@pobox.com>
508
25f64a11
AMS
509 This is the LAST maintenance release of the Storable module.
510 Indeed, Storable is now part of perl 5.8, and will be maintained
511 as part of Perl. The CPAN module will remain available there
512 for people running pre-5.8 perls.
596596d5 513
25f64a11
AMS
514 Avoid requiring Fcntl upfront, useful to embedded runtimes.
515 Use an eval {} for testing, instead of making Storable.pm
516 simply fail its compilation in the BEGIN block.
596596d5 517
25f64a11 518 store_fd() will now correctly autoflush file if needed.
596596d5 519
6e0ac6f5
JH
520Tue Aug 28 23:53:20 MEST 2001 Raphael Manfredi <Raphael_Manfredi@pobox.com>
521
25f64a11
AMS
522 Fixed truncation race with lock_retrieve() in lock_store().
523 The file has to be truncated only once the exclusive lock is held.
6e0ac6f5 524
25f64a11 525 Removed spurious debugging messages in .xs file.
6e0ac6f5 526
e993d95c
JH
527Sun Jul 1 13:27:32 MEST 2001 Raphael Manfredi <Raphael_Manfredi@pobox.com>
528
25f64a11
AMS
529 Systematically use "=over 4" for POD linters.
530 Apparently, POD linters are much stricter than would
531 otherwise be needed, but that's OK.
e993d95c 532
25f64a11
AMS
533 Fixed memory corruption on croaks during thaw(). Thanks
534 to Claudio Garcia for reproducing this bug and providing the
535 code to exercise it. Added test cases for this bug, adapted
536 from Claudio's code.
e993d95c 537
25f64a11 538 Made code compile cleanly with -Wall (from Jarkko Hietaniemi).
e993d95c 539
25f64a11
AMS
540 Changed tagnum and classnum from I32 to IV in context. Also
541 from Jarkko.
e993d95c 542
8be2b38b
JH
543Thu Mar 15 01:22:32 MET 2001 Raphael Manfredi <Raphael_Manfredi@pobox.com>
544
25f64a11
AMS
545 Last version was wrongly compiling with assertions on, due
546 to an edit glitch. That did not cause any problem (apart from
547 a slight performance loss) excepted on Win* platforms, where the
548 assertion code does not compile.
8be2b38b
JH
549
550Sat Feb 17 13:37:37 MET 2001 Raphael Manfredi <Raphael_Manfredi@pobox.com>
551
25f64a11 552 Version 1.0.10.
8be2b38b 553
25f64a11
AMS
554 Forgot to increase version number at previous patch (there were
555 two of them, which is why we jump from 1.0.8 to 1.0.10).
8be2b38b 556
b12202d0
JH
557Sat Feb 17 13:35:00 MET 2001 Raphael Manfredi <Raphael_Manfredi@pobox.com>
558
25f64a11 559 Version 1.0.8, binary format 2.4.
b12202d0 560
25f64a11 561 Fixed incorrect error message.
b12202d0 562
25f64a11
AMS
563 Now bless objects ASAP at retrieve time, which is meant to fix
564 two bugs:
b12202d0 565
25f64a11
AMS
566 * Indirect references to overloaded object were not able to
567 restore overloading if the object was not blessed yet,
568 which was possible since blessing occurred only after the
569 recursive retrieval.
b12202d0 570
25f64a11
AMS
571 * Storable hooks asking for serialization of blessed ref could
572 get un-blessed refs at retrieval time, for the very same
573 reason.
b12202d0 574
25f64a11 575 The fix implemented here was suggested by Nick Ing-Simmons.
b12202d0 576
25f64a11
AMS
577 Added support for blessed ref to tied structures. This is the
578 cause for the binary format change.
b12202d0 579
25f64a11
AMS
580 Added EBCDIC version of the compatibility test with 0.6.11,
581 from Peter Prymmer
b12202d0 582
25f64a11
AMS
583 Added tests for the new features, and to make sure the bugs they
584 are meant to fix are indeed fixed.
b12202d0 585
862382c7
JH
586Wed Jan 3 10:43:18 MET 2001 Raphael Manfredi <Raphael_Manfredi@pobox.com>
587
25f64a11 588 Removed spurious 'clean' entry in Makefile.PL.
862382c7 589
25f64a11
AMS
590 Added CAN_FLOCK to determine whether we can flock() or not,
591 by inspecting Perl's configuration parameters, as determined
592 by Configure.
862382c7 593
25f64a11
AMS
594 Trace offending package when overloading cannot be restored
595 on a scalar.
862382c7 596
25f64a11
AMS
597 Made context cleanup safer to avoid dup freeing, mostly in the
598 presence of repeated exceptions during store/retrieve (which can
599 cause memory leaks anyway, so it's just additional safety, not a
600 definite fix).
862382c7 601
90826881
JH
602Sun Nov 5 18:23:48 MET 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com>
603
25f64a11 604 Version 1.0.6.
90826881 605
25f64a11
AMS
606 Fixed severe "object lost" bug for STORABLE_freeze returns,
607 when refs to lexicals, taken within the hook, were to be
608 serialized by Storable. Enhanced the t/recurse.t test to
609 stress hook a little more with refs to lexicals.
90826881 610
212e9bde
JH
611Thu Oct 26 19:14:38 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com>
612
25f64a11 613 Version 1.0.5.
212e9bde 614
25f64a11
AMS
615 Documented that store() and retrieve() can return undef.
616 That is, the error reporting is not always made via exceptions,
617 as the paragraph on error reporting was implying.
212e9bde 618
25f64a11
AMS
619 Auto requires module of blessed ref when STORABLE_thaw misses.
620 When the Storable engine looks for the STORABLE_thaw hook and
621 does not find it, it now tries to require the package into which
622 the blessed reference is.
212e9bde 623
25f64a11
AMS
624 Just check $^O, in t/lock.t: there's no need to pull the whole
625 Config module for that.
212e9bde 626
8be2b38b
JH
627Mon Oct 23 20:03:49 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com>
628
25f64a11 629 Version 1.0.4.
8be2b38b 630
25f64a11
AMS
631 Protected calls to flock() for DOS platform: apparently, the
632 flock/fcnlt emulation is reported to be broken on that
633 platform.
8be2b38b 634
25f64a11
AMS
635 Added logcarp emulation if they don't have Log::Agent, since
636 we now use it to carp when lock_store/lock_retrieve is used
637 on DOS.
8be2b38b 638
dd19458b
JH
639Fri Sep 29 21:52:29 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com>
640
25f64a11 641 Version 1.0.3.
dd19458b 642
25f64a11
AMS
643 Avoid using "tainted" and "dirty" since Perl remaps them via
644 cpp (i.e. #define). This is deeply harmful when threading
645 is enabled. This concerned both the context structure and
646 local variable and argument names. Brrr..., scary!
dd19458b
JH
647
648Thu Sep 28 23:46:39 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com>
649
25f64a11 650 Version 1.0.2.
dd19458b 651
25f64a11 652 Fixed spelling in README.
dd19458b 653
25f64a11
AMS
654 Added lock_store, lock_nstore, and lock_retrieve (advisory locking)
655 after a proposal from Erik Haugan <erik@solbors.no>.
dd19458b 656
25f64a11 657 Perls before 5.004_04 lack newSVpvn, added remapping in XS.
dd19458b 658
25f64a11 659 Fixed stupid typo in the t/utf8.t test.
dd19458b
JH
660
661Sun Sep 17 18:51:10 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com>
662
25f64a11 663 Version 1.0.1, binary format 2.3.
dd19458b 664
25f64a11 665 Documented that doubles are stored stringified by nstore().
dd19458b 666
25f64a11
AMS
667 Added Salvador Ortiz Garcia in CREDITS section, He identified
668 a bug in the store hooks and proposed the right fix: the class
669 id was allocated too soon. His bug case was also added to
670 the regression test suite.
dd19458b 671
25f64a11
AMS
672 Now only taint retrieved data when source was tainted. A bug
673 discovered by Marc Lehmann.
dd19458b 674
25f64a11
AMS
675 Added support for UTF-8 strings, a contribution of Marc Lehmann.
676 This is normally only activated in post-5.6 perls.
dd19458b 677
9e21b3d0
JH
678Thu Aug 31 23:06:06 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com>
679
25f64a11
AMS
680 First official release Storable 1.0, for inclusion in perl 5.7.0.
681 The license scheme is now compatible with Perl's.
9e21b3d0 682
f0ffaed8
JH
683Thu Aug 24 01:02:02 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com>
684
25f64a11
AMS
685 ANSI-fied most of the code, preparing for Perl core integration.
686 The next version of Storable will be 0.8, and will be integrated
687 into the Perl core (development branch).
f0ffaed8 688
25f64a11
AMS
689 Dispatch tables were moved upfront to relieve some compilers,
690 especially on AIX and Windows platforms.
f0ffaed8 691
25f64a11 692 Merged 64-bit fixes from perl5-porters.
f0ffaed8 693
7a6a85bf
RG
694Mon Aug 14 09:22:04 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com>
695
25f64a11
AMS
696 Added a refcnt dec in retrieve_tied_key(): sv_magic() increases
697 the refcnt on the mg_ptr as well.
7a6a85bf 698
25f64a11
AMS
699 Removed spurious dependency to Devel::Peek, which was used for
700 testing only in t/tied_items.t. Thanks to Conrad Heiney
701 <conrad@fringehead.org> for spotting it first.
7a6a85bf
RG
702
703Sun Aug 13 22:12:59 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com>
704
25f64a11
AMS
705 Marc Lehmann kindly contributed code to add overloading support
706 and to handle references to tied variables.
7a6a85bf 707
25f64a11
AMS
708 Rewrote leading blurb about compatibility to make it clearer what
709 "backward compatibility" is about: when I say 0.7 is backward
710 compatible with 0.6, it means the revision 0.7 can read files
711 produced by 0.6.
7a6a85bf 712
25f64a11 713 Mention new Clone(3) extension in SEE ALSO.
7a6a85bf 714
25f64a11
AMS
715 Was wrongly optimizing for "undef" values in hashes by not
716 fully recursing: as a result, tied "undef" values were incorrectly
717 serialized.
7a6a85bf
RG
718
719Sun Jul 30 12:59:17 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com>
720
25f64a11 721 First revision of Storable 0.7.
7a6a85bf 722
25f64a11
AMS
723 The serializing format is new, known as version 2.0. It is fully
724 backward compatible with 0.6. Earlier formats are deprecated and
725 have not even been tested: next version will drop pre-0.6 format.
7a6a85bf 726
25f64a11 727 Changes since 0.6@11:
7a6a85bf 728
25f64a11
AMS
729 - Moved interface to the "beta" status. Some tiny parts are still
730 subject to change, but nothing important enough to warrant an "alpha"
731 status any longer.
7a6a85bf 732
25f64a11
AMS
733 - Slightly reduced the size of the Storable image by factorizing
734 object class names and removing final object storage notification due
735 to a redesign of the blessed object storing.
7a6a85bf 736
25f64a11
AMS
737 - Classes can now redefine how they wish their instances to be serialized
738 and/or deep cloned. Serializing hooks are written in Perl code.
7a6a85bf 739
25f64a11 740 - The engine is now fully re-entrant.
7a6a85bf
RG
741
742Sun Apr 2 23:47:50 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com>
743
25f64a11
AMS
744 Added provision to detect more recent binary formats, since
745 the new upcoming Storable-0.7 will use a different format.
746 In order to prevent attempting the de-serialization of newer
747 formats by older versions, I'm adding this now to the 0.6 series.
7a6a85bf 748
25f64a11
AMS
749 I'm expecting this revision to be the last of the 0.6 series.
750 Unless it does not work with perl 5.6, which I don't use yet,
751 and therefore against which I cannot test.
7a6a85bf
RG
752
753Wed Mar 29 19:55:21 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com>
754
25f64a11
AMS
755 Added note about format incompatibilities with old versions
756 (i.e. pre 0.5@9 formats, which cannot be understood as there
757 was no versionning information in the file by then).
7a6a85bf 758
25f64a11
AMS
759 Protect all $@ variables when eval {} used, to avoid corrupting
760 it when store/retrieve is called within an exception handler.
7a6a85bf 761
25f64a11
AMS
762 Mistakenly included "patchlevel.h" instead of <patchlevel.h>,
763 preventing Perl's patchlevel from being included, which is
764 needed starting from 5.6.
7a6a85bf
RG
765
766Tue May 12 09:15:15 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
767
25f64a11
AMS
768 Fixed shared "undef" bug in hashes, which did not remain shared
769 through store/retrieve.
7a6a85bf
RG
770
771Thu Feb 10 19:48:16 MET 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com>
772
25f64a11
AMS
773 added last_op_in_netorder() predicate
774 documented last_op_in_netorder()
775 added tests for the new last_op_in_netorder() predicate
7a6a85bf
RG
776
777Wed Oct 20 19:07:36 MEST 1999 Raphael Manfredi <Raphael_Manfredi@pobox.com>
778
25f64a11 779 Forgot to update VERSION
7a6a85bf
RG
780
781Tue Oct 19 21:25:02 MEST 1999 Raphael Manfredi <Raphael_Manfredi@pobox.com>
782
25f64a11 783 Added mention of japanese translation for the manual page.
7a6a85bf 784
25f64a11
AMS
785 Fixed typo in macro that made threaded code not compilable,
786 especially on Win32 platforms.
7a6a85bf 787
25f64a11
AMS
788 Changed detection of older perls (pre-5.005) by testing PATCHLEVEL
789 directly instead of relying on internal symbols.
7a6a85bf
RG
790
791Tue Sep 14 22:13:28 MEST 1999 Raphael Manfredi <Raphael_Manfredi@pobox.com>
792
25f64a11
AMS
793 Integrated "thread-safe" patch from Murray Nesbitt.
794 Note that this may not be very efficient for threaded code,
795 see comment in the code.
7a6a85bf 796
25f64a11
AMS
797 Try to avoid compilation warning on 64-bit CPUs. Can't test it,
798 since I don't have access to such machines.
7a6a85bf
RG
799
800Mon Jul 12 14:37:19 METDST 1999 Raphael Manfredi <Raphael_Manfredi@pobox.com>
801
25f64a11 802 changed my e-mail to pobox.
7a6a85bf 803
c4a6f826 804 mentioned it is not thread-safe.
7a6a85bf 805
25f64a11 806 updated version number.
7a6a85bf 807
25f64a11 808 uses new internal PL_* naming convention.
7a6a85bf
RG
809
810Fri Jul 3 13:38:16 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
811
25f64a11
AMS
812 Updated benchmark figures due to recent optimizations done in
813 store(): tagnums are now stored as-is in the hash table, so
814 no surrounding SV is created. And the "shared keys" mode for
815 hash table was turned off.
7a6a85bf 816
25f64a11
AMS
817 Fixed backward compatibility (wrt 0.5@9) for retrieval of
818 blessed refs. That old version did something wrong, but the
819 bugfix prevented correct retrieval of the old format.
7a6a85bf
RG
820
821Mon Jun 22 11:00:48 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
822
25f64a11 823 Changed benchmark figures.
7a6a85bf 824
25f64a11
AMS
825 Adjust refcnt of tied objects after calling sv_magic() to avoid
826 memory leaks. Contributed by Jeff Gresham.
7a6a85bf
RG
827
828Fri Jun 12 11:50:04 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
829
25f64a11
AMS
830 Added workaround for persistent LVALUE-ness in perl5.004. All
831 scalars tagged as being an lvalue are handled as if they were
832 not an lvalue at all. Added test for that LVALUE bug workaround.
7a6a85bf 833
c4a6f826
PA
834 Now handles Perl immortal scalars explicitly, by storing &sv_yes
835 as such, explicitly.
7a6a85bf 836
25f64a11
AMS
837 Retrieval of non-immortal undef cannot be shared. Previous
838 version was over-optimizing by not creating a separate SV for
839 all undefined scalars seen.
7a6a85bf
RG
840
841Thu Jun 4 17:21:51 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
842
25f64a11 843 Baseline for Storable-0.6@0.
7a6a85bf 844
25f64a11
AMS
845 This version introduces a binary incompatibility in the generated
846 binary image, which is more compact than older ones by approximatively
847 15%, depending on the exact degree of sharing in your structures.
7a6a85bf 848
25f64a11
AMS
849 The good news is that your older images can still be retrieved with
850 this version, i.e. backward compatibility is preserved. This version
851 of Storable can only generate new binaries however.
7a6a85bf 852
25f64a11
AMS
853 Another good news is that the retrieval of data structure is
854 significantly quicker than before, because a Perl array is used
855 instead of a hash table to keep track of retrieved objects, and
856 also because the image being smaller, less I/O function calls are
857 made.
7a6a85bf
RG
858
859Tue May 12 09:15:15 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
860
25f64a11 861 Version number now got from Storable.pm directly.
7a6a85bf 862
25f64a11
AMS
863 Fixed overzealous sv_type() optimization, which would make
864 Storable fail when faced with an "upgraded" SV to the PVIV
865 or PVNV kind containing a reference.
7a6a85bf
RG
866
867Thu Apr 30 15:11:30 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
868
25f64a11
AMS
869 Extended the SYNOPSIS section to give quick overview of the
870 routines and their signature.
7a6a85bf 871
25f64a11
AMS
872 Optimized sv_type() to avoid flags checking when not needed, i.e.
873 when their type makes it impossible for them to be refs or tied.
874 This slightly increases throughput by a few percents when refs
875 and tied variables are marginal occurrences in your data.
7a6a85bf 876
25f64a11
AMS
877 Stubs for XS now use OutputStream and InputStream file types to
878 make it work when the given file is actually a socket. Perl
879 makes a distinction for sockets in its internal I/O structures
880 by having both a read and a write structure, whereas plain files
881 share the same one.
7a6a85bf
RG
882
883Tue Jun 3 09:41:33 METDST 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
884
25f64a11
AMS
885 Thanks to a contribution from Benjamin A. Holzman, Storable is now
886 able to correctly serialize tied SVs, i.e. tied arrays, hashes
887 and scalars.
7a6a85bf
RG
888
889Thu Apr 9 18:07:51 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
890
25f64a11 891 I said SvPOK() had changed to SvPOKp(), but that was a lie...
7a6a85bf
RG
892
893Wed Apr 8 13:14:29 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
894
25f64a11
AMS
895 Wrote sizeof(SV *) instead of sizeof(I32) when portable, which
896 in effect mangled the object tags and prevented portability
c4a6f826 897 across 32/64 bit architectures!
7a6a85bf
RG
898
899Wed Mar 25 14:57:02 MET 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
900
25f64a11
AMS
901 Added code example for store_fd() and retrieve_fd() in the
902 man page, to emphasize that file descriptors must be passed as
903 globs, not as plain strings.
7a6a85bf 904
25f64a11
AMS
905 Cannot use SV addresses as tag when using nstore() on LP64. This
906 was the cause of problems when creating a storable image on an
907 LP64 machine and retrieving it on an ILP32 system, which is
908 exactly what nstore() is meant for...
7a6a85bf 909
25f64a11 910 However, we continue to use SV addresses as tags for plain store(),
c4a6f826 911 because benchmarking shows that it saves up to 8% of the store
25f64a11
AMS
912 time, and store() is meant to be fast at the expense of lack
913 of portability.
7a6a85bf 914
25f64a11
AMS
915 This means there will be approximately an 8% degradation of
916 performance for nstore(), but it's now working as expected.
917 That cost may vary on your machine of course, since it is
918 solely caused by the memory allocation overhead used to create
919 unique SV tags for each distinct stored SV.
7a6a85bf
RG
920
921Tue Jan 20 09:21:53 MET 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
922
25f64a11 923 Don't use any '_' in version number.
7a6a85bf
RG
924
925Tue Jan 13 17:51:50 MET 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
926
25f64a11 927 Updated version number.
7a6a85bf 928
25f64a11 929 added binmode() calls for systems where it matters.
7a6a85bf 930
25f64a11
AMS
931 Be sure to pass globs, not plain file strings, to C routines,
932 so that Storable can be used under the Perl debugger.
7a6a85bf
RG
933
934Wed Nov 5 10:53:22 MET 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
935
25f64a11 936 Fix memory leaks on seen hash table and returned SV refs.
7a6a85bf 937
25f64a11 938 Storable did not work properly when tainting enabled.
7a6a85bf 939
25f64a11
AMS
940 Fixed "Allocation too large" messages in freeze/thaw and added.
941 proper regression test in t/freeze.t.
7a6a85bf
RG
942
943Tue Jun 3 09:41:33 METDST 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
944
25f64a11 945 Updated version number
7a6a85bf 946
25f64a11 947 Added freeze/thaw interface and dclone.
7a6a85bf
RG
948
949Fri May 16 10:45:47 METDST 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
950
25f64a11
AMS
951 Forgot that AutoLoader does not export its own AUTOLOAD.
952 I could use
7a6a85bf 953
25f64a11
AMS
954 use AutoLoader 'AUTOLOAD';
955
956 but that would not be backward compatible. So the export is
957 done by hand...
7a6a85bf
RG
958
959Tue Mar 25 11:21:32 MET 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
960
25f64a11 961 Empty scalar strings are now "defined" at retrieval time.
7a6a85bf 962
25f64a11 963 New test to ensure an empty string is defined when retrieved.
7a6a85bf
RG
964
965Thu Feb 27 16:32:44 MET 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
966
25f64a11 967 Updated version number
7a6a85bf 968
25f64a11 969 Declare VERSION as being used
7a6a85bf 970
25f64a11
AMS
971 Fixed a typo in the PerlIO_putc remapping.
972 PerlIO_read and perlIO_write inverted size/nb_items.
973 (only relevant for pre-perl5.004 versions)
7a6a85bf
RG
974
975Thu Feb 27 15:58:31 MET 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
976
25f64a11 977 Updated version number
7a6a85bf 978
25f64a11 979 Added VERSION identification
7a6a85bf 980
25f64a11 981 Allow build with perl5.003, which is ante perlIO time
7a6a85bf
RG
982
983Mon Jan 13 17:53:18 MET 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
984
25f64a11 985 Random code fixes.
7a6a85bf
RG
986
987Wed Jan 22 15:19:56 MET 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
988
25f64a11 989 Updated version number in Makefile.PL.
7a6a85bf 990
25f64a11 991 Added "thanks to" section to README.
7a6a85bf 992
25f64a11 993 Documented new forgive_me variable.
7a6a85bf 994
25f64a11 995 Made 64-bit clean.
7a6a85bf 996
25f64a11
AMS
997 Added forgive_me support to allow store() of data structures
998 containing non-storable items like CODE refs.