c281ab9ec647dc94d4d87d05d9c04931e6c9a2ad
[p5sagit/p5-mst-13.2.git] / ext / Storable / ChangeLog
1 Sat May 25 22:38:39 BST 2002   Nicholas Clark <nick@ccl4.org>
2
3     Version 2.02
4                 
5         Rewrite Storable.xs so that the file header structure for write_magic
6         is built at compile time, and check_magic attempts to the header in
7         blocks rather than byte per byte. These changes make the compiled
8         extension 2.25% smaller, but are not significant enough to give a
9         noticeable speed up.
10
11 Thu May 23 22:50:41 BST 2002   Nicholas Clark <nick@ccl4.org>
12
13     Version 2.01
14
15         - New regression tests integer.t
16         - Add code to safely store large unsigned integers.
17         - Change code not to attempt to store large integers (ie > 32 bits)
18           in network order as 32 bits.
19         
20         *Never* underestimate the value of a pathological test suite carefully
21         crafted with maximum malice before writing a line of real code. It
22         prevents crafty bugs from stowing away in your released code.
23         It's much less embarrassing to find them before you ship.
24         (Well, never underestimate it if you ever want to work for me)
25         
26 Fri May 17 22:48:59 BST 2002   Nicholas Clark <nick@ccl4.org>
27
28     Version 2.0, binary format 2.5 (but writes format 2.4 on pre 5.7.3)
29
30         The perl5 porters have decided to make sure that Storable still
31         builds on pre-5.8 perls, and make the 5.8 version available on CPAN.
32         The VERSION is now 2.0, and it passes all tests on 5.005_03, 5.6.1
33         and 5.6.1 with threads. On 5.6.0 t/downgrade.t fails tests 34 and 37,
34         due to a bug in 5.6.0 - upgrade to 5.6.1.
35
36         Jarkko and I have collated the list of changes the perl5 porters have
37         from the perl5 Changes file:
38
39         - data features of upcoming perl 5.8.0 are supported: Unicode hash
40           keys (Unicode hash values have been supported since Storable 1.0.1)
41           and "restricted hashes" (readonly hashes and hash entries)
42         - a newer version of perl can now be used to serialize data which is
43           not supported in earlier perls: Storable will attempt to do the
44           right thing for as long as possible, croaking only when safe data
45           conversion simply isn't possible. Alternatively earlier perls can
46           opt to have a lossy downgrade data instead of croaking
47         - when built with perls pre 5.7.3 this Storable writes out files
48           with binary format 2.4, the same format as Storable 1.0.8 onwards.
49           This should mean that this Storable will inter-operate seamlessly
50           with any Storable 1.0.8 or newer on perls pre 5.7.3
51         - dclone() now works with empty string scalar objects
52         - retrieving of large hashes is now more efficient
53         - more routines autosplit out of the main module, so Storable should
54           load slightly more quickly
55         - better documentation
56         - the internal context objects are now freed explicitly, rather than
57           relying on thread or process exit
58         - bugs fixed in debugging trace code affecting builds made with 64 bit
59           IVs
60         - code tidy-ups to allow clean compiles with more warning options
61           turned on avoid problems with $@ getting corrupted on 5.005_03 if
62           Carp wasn't already loaded
63         - added &show_file_magic, so you can add to /etc/magic and teach
64           Unix's file command about Storable files
65
66         We plan to keep Storable on CPAN in sync with the Perl core, so
67         if you encounter bugs or other problems building or using Storable,
68         please let us know at perl5-porters@perl.org
69         Patches welcome!
70         
71 Sat Dec  1 14:37:54 MET 2001   Raphael Manfredi <Raphael_Manfredi@pobox.com>
72
73         This is the LAST maintenance release of the Storable module.
74         Indeed, Storable is now part of perl 5.8, and will be maintained
75         as part of Perl.  The CPAN module will remain available there
76         for people running pre-5.8 perls.
77
78         Avoid requiring Fcntl upfront, useful to embedded runtimes.
79         Use an eval {} for testing, instead of making Storable.pm
80         simply fail its compilation in the BEGIN block.
81
82         store_fd() will now correctly autoflush file if needed.
83
84 Tue Aug 28 23:53:20 MEST 2001   Raphael Manfredi <Raphael_Manfredi@pobox.com>
85
86         Fixed truncation race with lock_retrieve() in lock_store().
87         The file has to be truncated only once the exclusive lock is held.
88
89         Removed spurious debugging messages in .xs file.
90
91 Sun Jul  1 13:27:32 MEST 2001   Raphael Manfredi <Raphael_Manfredi@pobox.com>
92
93         Systematically use "=over 4" for POD linters.
94         Apparently, POD linters are much stricter than would
95         otherwise be needed, but that's OK.
96
97         Fixed memory corruption on croaks during thaw().  Thanks
98         to Claudio Garcia for reproducing this bug and providing the
99         code to exercise it.  Added test cases for this bug, adapted
100         from Claudio's code.
101
102         Made code compile cleanly with -Wall (from Jarkko Hietaniemi).
103
104         Changed tagnum and classnum from I32 to IV in context.  Also
105         from Jarkko.
106
107 Thu Mar 15 01:22:32 MET 2001   Raphael Manfredi <Raphael_Manfredi@pobox.com>
108
109         Last version was wrongly compiling with assertions on, due
110         to an edit glitch.  That did not cause any problem (apart from
111         a slight performance loss) excepted on Win* platforms, where the
112         assertion code does not compile.
113
114 Sat Feb 17 13:37:37 MET 2001   Raphael Manfredi <Raphael_Manfredi@pobox.com>
115
116     Version 1.0.10.
117
118         Forgot to increase version number at previous patch (there were
119         two of them, which is why we jump from 1.0.8 to 1.0.10).
120
121 Sat Feb 17 13:35:00 MET 2001   Raphael Manfredi <Raphael_Manfredi@pobox.com>
122
123     Version 1.0.8, binary format 2.4.
124
125         Fixed incorrect error message.
126
127         Now bless objects ASAP at retrieve time, which is meant to fix
128         two bugs:
129
130         * Indirect references to overloaded object were not able to
131           restore overloading if the object was not blessed yet,
132           which was possible since blessing occurred only after the
133           recursive retrieval.
134
135         * Storable hooks asking for serialization of blessed ref could
136           get un-blessed refs at retrieval time, for the very same
137           reason.
138
139         The fix implemented here was suggested by Nick Ing-Simmons.
140
141         Added support for blessed ref to tied structures.  This is the
142         cause for the binary format change.
143
144         Added EBCDIC version of the compatibility test with 0.6.11,
145         from Peter Prymmer
146
147         Added tests for the new features, and to make sure the bugs they
148         are meant to fix are indeed fixed.
149
150 Wed Jan  3 10:43:18 MET 2001   Raphael Manfredi <Raphael_Manfredi@pobox.com>
151
152         Removed spurious 'clean' entry in Makefile.PL.
153
154         Added CAN_FLOCK to determine whether we can flock() or not,
155         by inspecting Perl's configuration parameters, as determined
156         by Configure.
157
158         Trace offending package when overloading cannot be restored
159         on a scalar.
160
161         Made context cleanup safer to avoid dup freeing, mostly in the
162         presence of repeated exceptions during store/retrieve (which can
163         cause memory leaks anyway, so it's just additional safety, not a
164         definite fix).
165
166 Sun Nov  5 18:23:48 MET 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
167
168     Version 1.0.6.
169
170         Fixed severe "object lost" bug for STORABLE_freeze returns,
171         when refs to lexicals, taken within the hook, were to be
172         serialized by Storable.  Enhanced the t/recurse.t test to
173         stress hook a little more with refs to lexicals.
174
175 Thu Oct 26 19:14:38 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
176
177     Version 1.0.5.
178
179         Documented that store() and retrieve() can return undef.
180         That is, the error reporting is not always made via exceptions,
181         as the paragraph on error reporting was implying.
182
183         Auto requires module of blessed ref when STORABLE_thaw misses.
184         When the Storable engine looks for the STORABLE_thaw hook and
185         does not find it, it now tries to require the package into which
186         the blessed reference is.
187
188         Just check $^O, in t/lock.t: there's no need to pull the whole
189         Config module for that.
190
191 Mon Oct 23 20:03:49 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
192
193     Version 1.0.4.
194
195         Protected calls to flock() for DOS platform: apparently, the
196         flock/fcnlt emulation is reported to be broken on that
197         platform.
198
199         Added logcarp emulation if they don't have Log::Agent, since
200         we now use it to carp when lock_store/lock_retrieve is used
201         on DOS.
202
203 Fri Sep 29 21:52:29 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
204
205     Version 1.0.3.
206
207         Avoid using "tainted" and "dirty" since Perl remaps them via
208         cpp (i.e. #define).  This is deeply harmful when threading
209         is enabled.  This concerned both the context structure and
210         local variable and argument names.  Brrr..., scary!
211
212 Thu Sep 28 23:46:39 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
213
214     Version 1.0.2.
215
216         Fixed spelling in README.
217
218         Added lock_store, lock_nstore, and lock_retrieve (advisory locking)
219         after a proposal from Erik Haugan <erik@solbors.no>.
220
221         Perls before 5.004_04 lack newSVpvn, added remapping in XS.
222
223         Fixed stupid typo in the t/utf8.t test.
224
225 Sun Sep 17 18:51:10 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
226
227     Version 1.0.1, binary format 2.3.
228
229         Documented that doubles are stored stringified by nstore().
230
231         Added Salvador Ortiz Garcia in CREDITS section,  He identified
232         a bug in the store hooks and proposed the right fix: the class
233         id was allocated too soon.  His bug case was also added to
234         the regression test suite.
235
236         Now only taint retrieved data when source was tainted.  A bug
237         discovered by Marc Lehmann.
238
239         Added support for UTF-8 strings, a contribution of Marc Lehmann.
240         This is normally only activated in post-5.6 perls.
241
242 Thu Aug 31 23:06:06 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
243
244         First official release Storable 1.0, for inclusion in perl 5.7.0.
245         The license scheme is now compatible with Perl's.
246
247 Thu Aug 24 01:02:02 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
248
249         ANSI-fied most of the code, preparing for Perl core integration.
250         The next version of Storable will be 0.8, and will be integrated
251         into the Perl core (development branch).
252
253         Dispatch tables were moved upfront to relieve some compilers,
254         especially on AIX and Windows platforms.
255
256         Merged 64-bit fixes from perl5-porters.
257
258 Mon Aug 14 09:22:04 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
259
260         Added a refcnt dec in retrieve_tied_key(): sv_magic() increases
261         the refcnt on the mg_ptr as well.
262
263         Removed spurious dependency to Devel::Peek, which was used for
264         testing only in t/tied_items.t.  Thanks to Conrad Heiney
265         <conrad@fringehead.org> for spotting it first.
266
267 Sun Aug 13 22:12:59 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
268
269         Marc Lehmann kindly contributed code to add overloading support
270         and to handle references to tied variables.
271
272         Rewrote leading blurb about compatibility to make it clearer what
273         "backward compatibility" is about: when I say 0.7 is backward
274         compatible with 0.6, it means the revision 0.7 can read files
275         produced by 0.6.
276
277         Mention new Clone(3) extension in SEE ALSO.
278
279         Was wrongly optimizing for "undef" values in hashes by not
280         fully recursing: as a result, tied "undef" values were incorrectly
281         serialized.
282
283 Sun Jul 30 12:59:17 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
284
285     First revision of Storable 0.7.
286
287         The serializing format is new, known as version 2.0.  It is fully
288         backward compatible with 0.6.  Earlier formats are deprecated and
289         have not even been tested: next version will drop pre-0.6 format.
290
291         Changes since 0.6@11:
292
293         - Moved interface to the "beta" status.  Some tiny parts are still
294           subject to change, but nothing important enough to warrant an "alpha"
295           status any longer.
296
297         - Slightly reduced the size of the Storable image by factorizing
298           object class names and removing final object storage notification due
299           to a redesign of the blessed object storing.
300
301         - Classes can now redefine how they wish their instances to be serialized
302           and/or deep cloned.  Serializing hooks are written in Perl code.
303
304         - The engine is now fully re-entrant.
305
306 Sun Apr  2 23:47:50 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
307
308         Added provision to detect more recent binary formats, since
309         the new upcoming Storable-0.7 will use a different format.
310         In order to prevent attempting the de-serialization of newer
311         formats by older versions, I'm adding this now to the 0.6 series.
312
313         I'm expecting this revision to be the last of the 0.6 series.
314         Unless it does not work with perl 5.6, which I don't use yet,
315         and therefore against which I cannot test.
316
317 Wed Mar 29 19:55:21 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
318
319         Added note about format incompatibilities with old versions
320         (i.e. pre 0.5@9 formats, which cannot be understood as there
321         was no versionning information in the file by then).
322
323         Protect all $@ variables when eval {} used, to avoid corrupting
324         it when store/retrieve is called within an exception handler.
325
326         Mistakenly included "patchlevel.h" instead of <patchlevel.h>,
327         preventing Perl's patchlevel from being included, which is
328         needed starting from 5.6.
329
330 Tue May 12 09:15:15 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
331
332         Fixed shared "undef" bug in hashes, which did not remain shared
333         through store/retrieve.
334
335 Thu Feb 10 19:48:16 MET 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
336
337         added last_op_in_netorder() predicate
338         documented last_op_in_netorder()
339         added tests for the new last_op_in_netorder() predicate
340
341 Wed Oct 20 19:07:36 MEST 1999   Raphael Manfredi <Raphael_Manfredi@pobox.com>
342
343         Forgot to update VERSION
344
345 Tue Oct 19 21:25:02 MEST 1999   Raphael Manfredi <Raphael_Manfredi@pobox.com>
346
347         Added mention of japanese translation for the manual page.
348
349         Fixed typo in macro that made threaded code not compilable,
350         especially on Win32 platforms.
351
352         Changed detection of older perls (pre-5.005) by testing PATCHLEVEL
353         directly instead of relying on internal symbols.
354
355 Tue Sep 14 22:13:28 MEST 1999   Raphael Manfredi <Raphael_Manfredi@pobox.com>
356
357         Integrated "thread-safe" patch from Murray Nesbitt.
358         Note that this may not be very efficient for threaded code,
359         see comment in the code.
360
361         Try to avoid compilation warning on 64-bit CPUs. Can't test it,
362         since I don't have access to such machines.
363
364 Mon Jul 12 14:37:19 METDST 1999   Raphael Manfredi <Raphael_Manfredi@pobox.com>
365
366         changed my e-mail to pobox.
367
368         mentionned it is not thread-safe.
369
370         updated version number.
371
372         uses new internal PL_* naming convention.
373
374 Fri Jul  3 13:38:16 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
375
376         Updated benchmark figures due to recent optimizations done in
377         store(): tagnums are now stored as-is in the hash table, so
378         no surrounding SV is created. And the "shared keys" mode for
379         hash table was turned off.
380
381         Fixed backward compatibility (wrt 0.5@9) for retrieval of
382         blessed refs. That old version did something wrong, but the
383         bugfix prevented correct retrieval of the old format.
384
385 Mon Jun 22 11:00:48 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
386
387         Changed benchmark figures.
388
389         Adjust refcnt of tied objects after calling sv_magic() to avoid
390         memory leaks.  Contributed by Jeff Gresham.
391
392 Fri Jun 12 11:50:04 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
393
394         Added workaround for persistent LVALUE-ness in perl5.004. All
395         scalars tagged as being an lvalue are handled as if they were
396         not an lvalue at all.  Added test for that LVALUE bug workaround.
397
398         Now handles Perl immortal scalars explicitely, by storing &sv_yes
399         as such, explicitely.
400
401         Retrieval of non-immortal undef cannot be shared. Previous
402         version was over-optimizing by not creating a separate SV for
403         all undefined scalars seen.
404
405 Thu Jun  4 17:21:51 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
406
407     Baseline for Storable-0.6@0.
408
409         This version introduces a binary incompatibility in the generated
410         binary image, which is more compact than older ones by approximatively
411         15%, depending on the exact degree of sharing in your structures.
412
413         The good news is that your older images can still be retrieved with
414         this version, i.e. backward compatibility is preserved. This version
415         of Storable can only generate new binaries however.
416
417         Another good news is that the retrieval of data structure is
418         significantly quicker than before, because a Perl array is used
419         instead of a hash table to keep track of retrieved objects, and
420         also because the image being smaller, less I/O function calls are
421         made.
422
423 Tue May 12 09:15:15 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
424
425         Version number now got from Storable.pm directly.
426
427         Fixed overzealous sv_type() optimization, which would make
428         Storable fail when faced with an "upgraded" SV to the PVIV
429         or PVNV kind containing a reference.
430
431 Thu Apr 30 15:11:30 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
432
433         Extended the SYNOPSIS section to give quick overview of the
434         routines and their signature.
435
436         Optimized sv_type() to avoid flags checking when not needed, i.e.
437         when their type makes it impossible for them to be refs or tied.
438         This slightly increases throughput by a few percents when refs
439         and tied variables are marginal occurrences in your data.
440
441         Stubs for XS now use OutputStream and InputStream file types to
442         make it work when the given file is actually a socket. Perl
443         makes a distinction for sockets in its internal I/O structures
444         by having both a read and a write structure, whereas plain files
445         share the same one.
446
447 Tue Jun  3 09:41:33 METDST 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
448
449         Thanks to a contribution from Benjamin A. Holzman, Storable is now
450         able to correctly serialize tied SVs, i.e. tied arrays, hashes
451         and scalars.
452
453 Thu Apr  9 18:07:51 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
454
455         I said SvPOK() had changed to SvPOKp(), but that was a lie...
456
457 Wed Apr  8 13:14:29 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
458
459         Wrote sizeof(SV *) instead of sizeof(I32) when portable, which
460         in effect mangled the object tags and prevented portability
461         accross 32/64 bit architectures!
462
463 Wed Mar 25 14:57:02 MET 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
464
465         Added code example for store_fd() and retrieve_fd() in the
466         man page, to emphasize that file descriptors must be passed as
467         globs, not as plain strings.
468
469         Cannot use SV addresses as tag when using nstore() on LP64. This
470         was the cause of problems when creating a storable image on an
471         LP64 machine and retrieving it on an ILP32 system, which is
472         exactly what nstore() is meant for...
473
474         However, we continue to use SV addresses as tags for plain store(),
475         because benchamarking shows that it saves up to 8% of the store
476         time, and store() is meant to be fast at the expense of lack
477         of portability.
478
479         This means there will be approximately an 8% degradation of
480         performance for nstore(), but it's now working as expected.
481         That cost may vary on your machine of course, since it is
482         solely caused by the memory allocation overhead used to create
483         unique SV tags for each distinct stored SV.
484
485 Tue Jan 20 09:21:53 MET 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
486
487         Don't use any '_' in version number.
488
489 Tue Jan 13 17:51:50 MET 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
490
491         Updated version number.
492
493         added binmode() calls for systems where it matters.
494
495         Be sure to pass globs, not plain file strings, to C routines,
496         so that Storable can be used under the Perl debugger.
497
498 Wed Nov  5 10:53:22 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
499
500         Fix memory leaks on seen hash table and returned SV refs.
501
502         Storable did not work properly when tainting enabled.
503
504         Fixed "Allocation too large" messages in freeze/thaw and added.
505         proper regression test in t/freeze.t.
506
507 Tue Jun  3 09:41:33 METDST 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
508
509         Updated version number
510
511         Added freeze/thaw interface and dclone.
512
513 Fri May 16 10:45:47 METDST 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
514
515         Forgot that AutoLoader does not export its own AUTOLOAD.
516         I could use
517
518                 use AutoLoader 'AUTOLOAD';
519         
520         but that would not be backward compatible. So the export is
521         done by hand...
522
523 Tue Mar 25 11:21:32 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
524
525         Empty scalar strings are now "defined" at retrieval time.
526
527         New test to ensure an empty string is defined when retrieved.
528
529 Thu Feb 27 16:32:44 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
530
531         Updated version number
532
533         Declare VERSION as being used
534
535         Fixed a typo in the PerlIO_putc remapping.
536         PerlIO_read and perlIO_write inverted size/nb_items.
537         (only relevant for pre-perl5.004 versions)
538
539 Thu Feb 27 15:58:31 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
540
541         Updated version number
542
543         Added VERSION identification
544
545         Allow build with perl5.003, which is ante perlIO time
546
547 Mon Jan 13 17:53:18 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
548
549         Random code fixes.
550
551 Wed Jan 22 15:19:56 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
552
553         Updated version number in Makefile.PL.
554
555         Added "thanks to" section to README.
556
557         Documented new forgive_me variable.
558
559         Made 64-bit clean.
560
561         Added forgive_me support to allow store() of data structures
562         containing non-storable items like CODE refs.