1 Mon Aug 14 09:22:04 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com>
5 Added a refcnt dec in retrieve_tied_key(): sv_magic() increases
6 the refcnt on the mg_ptr as well.
8 Removed spurious dependency to Devel::Peek, which was used for
9 testing only in t/tied_items.t. Thanks to Conrad Heiney
10 <conrad@fringehead.org> for spotting it first.
12 Sun Aug 13 22:12:59 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com>
16 Marc Lehmann kindly contributed code to add overloading support
17 and to handle references to tied variables.
19 Rewrote leading blurb about compatibility to make it clearer what
20 "backward compatibility" is about: when I say 0.7 is backward
21 compatible with 0.6, it means the revision 0.7 can read files
24 Mention new Clone(3) extension in SEE ALSO.
26 Was wrongly optimizing for "undef" values in hashes by not
27 fully recursing: as a result, tied "undef" values were incorrectly
30 Sun Jul 30 12:59:17 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com>
32 First revision of Storable 0.7.
34 The serializing format is new, known as version 2.0. It is fully
35 backward compatible with 0.6. Earlier formats are deprecated and
36 have not even been tested: next version will drop pre-0.6 format.
40 - Moved interface to the "beta" status. Some tiny parts are still
41 subject to change, but nothing important enough to warrant an "alpha"
44 - Slightly reduced the size of the Storable image by factorizing
45 object class names and removing final object storage notification due
46 to a redesign of the blessed object storing.
48 - Classes can now redefine how they wish their instances to be serialized
49 and/or deep cloned. Serializing hooks are written in Perl code.
51 - The engine is now fully re-entrant.
53 Sun Apr 2 23:47:50 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com>
57 Added provision to detect more recent binary formats, since
58 the new upcoming Storable-0.7 will use a different format.
59 In order to prevent attempting the de-serialization of newer
60 formats by older versions, I'm adding this now to the 0.6 series.
62 I'm expecting this revision to be the last of the 0.6 series.
63 Unless it does not work with perl 5.6, which I don't use yet,
64 and therefore against which I cannot test.
66 Wed Mar 29 19:55:21 MEST 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com>
70 Added note about format incompatibilities with old versions
71 (i.e. pre 0.5@9 formats, which cannot be understood as there
72 was no versionning information in the file by then).
74 Protect all $@ variables when eval {} used, to avoid corrupting
75 it when store/retrieve is called within an exception handler.
77 Mistakenly included "patchlevel.h" instead of <patchlevel.h>,
78 preventing Perl's patchlevel from being included, which is
79 needed starting from 5.6.
81 Tue May 12 09:15:15 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
85 Fixed shared "undef" bug in hashes, which did not remain shared
86 through store/retrieve.
88 Thu Feb 10 19:48:16 MET 2000 Raphael Manfredi <Raphael_Manfredi@pobox.com>
92 added last_op_in_netorder() predicate
93 documented last_op_in_netorder()
94 added tests for the new last_op_in_netorder() predicate
96 Wed Oct 20 19:07:36 MEST 1999 Raphael Manfredi <Raphael_Manfredi@pobox.com>
100 Forgot to update VERSION
102 Tue Oct 19 21:25:02 MEST 1999 Raphael Manfredi <Raphael_Manfredi@pobox.com>
106 Added mention of japanese translation for the manual page.
108 Fixed typo in macro that made threaded code not compilable,
109 especially on Win32 platforms.
111 Changed detection of older perls (pre-5.005) by testing PATCHLEVEL
112 directly instead of relying on internal symbols.
114 Tue Sep 14 22:13:28 MEST 1999 Raphael Manfredi <Raphael_Manfredi@pobox.com>
118 Integrated "thread-safe" patch from Murray Nesbitt.
119 Note that this may not be very efficient for threaded code,
120 see comment in the code.
122 Try to avoid compilation warning on 64-bit CPUs. Can't test it,
123 since I don't have access to such machines.
125 Mon Jul 12 14:37:19 METDST 1999 Raphael Manfredi <Raphael_Manfredi@pobox.com>
129 changed my e-mail to pobox.
131 mentionned it is not thread-safe.
133 updated version number.
135 uses new internal PL_* naming convention.
137 Fri Jul 3 13:38:16 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
141 Updated benchmark figures due to recent optimizations done in
142 store(): tagnums are now stored as-is in the hash table, so
143 no surrounding SV is created. And the "shared keys" mode for
144 hash table was turned off.
146 Fixed backward compatibility (wrt 0.5@9) for retrieval of
147 blessed refs. That old version did something wrong, but the
148 bugfix prevented correct retrieval of the old format.
150 Mon Jun 22 11:00:48 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
154 Changed benchmark figures.
156 Adjust refcnt of tied objects after calling sv_magic() to avoid
157 memory leaks. Contributed by Jeff Gresham.
159 Fri Jun 12 11:50:04 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
163 Added workaround for persistent LVALUE-ness in perl5.004. All
164 scalars tagged as being an lvalue are handled as if they were
165 not an lvalue at all. Added test for that LVALUE bug workaround.
167 Now handles Perl immortal scalars explicitely, by storing &sv_yes
168 as such, explicitely.
170 Retrieval of non-immortal undef cannot be shared. Previous
171 version was over-optimizing by not creating a separate SV for
172 all undefined scalars seen.
174 Thu Jun 4 17:21:51 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
178 Baseline for Storable-0.6@0.
180 This version introduces a binary incompatibility in the generated
181 binary image, which is more compact than older ones by approximatively
182 15%, depending on the exact degree of sharing in your structures.
184 The good news is that your older images can still be retrieved with
185 this version, i.e. backward compatibility is preserved. This version
186 of Storable can only generate new binaries however.
188 Another good news is that the retrieval of data structure is
189 significantly quicker than before, because a Perl array is used
190 instead of a hash table to keep track of retrieved objects, and
191 also because the image being smaller, less I/O function calls are
194 Tue May 12 09:15:15 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
198 Version number now got from Storable.pm directly.
200 Fixed overzealous sv_type() optimization, which would make
201 Storable fail when faced with an "upgraded" SV to the PVIV
202 or PVNV kind containing a reference.
204 Thu Apr 30 15:11:30 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
208 Extended the SYNOPSIS section to give quick overview of the
209 routines and their signature.
211 Optimized sv_type() to avoid flags checking when not needed, i.e.
212 when their type makes it impossible for them to be refs or tied.
213 This slightly increases throughput by a few percents when refs
214 and tied variables are marginal occurrences in your data.
216 Stubs for XS now use OutputStream and InputStream file types to
217 make it work when the given file is actually a socket. Perl
218 makes a distinction for sockets in its internal I/O structures
219 by having both a read and a write structure, whereas plain files
222 Tue Jun 3 09:41:33 METDST 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
226 Thanks to a contribution from Benjamin A. Holzman, Storable is now
227 able to correctly serialize tied SVs, i.e. tied arrays, hashes
230 Thu Apr 9 18:07:51 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
234 I said SvPOK() had changed to SvPOKp(), but that was a lie...
236 Wed Apr 8 13:14:29 METDST 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
240 Wrote sizeof(SV *) instead of sizeof(I32) when portable, which
241 in effect mangled the object tags and prevented portability
242 accross 32/64 bit architectures!
244 Wed Mar 25 14:57:02 MET 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
248 Added code example for store_fd() and retrieve_fd() in the
249 man page, to emphasize that file descriptors must be passed as
250 globs, not as plain strings.
252 Cannot use SV addresses as tag when using nstore() on LP64. This
253 was the cause of problems when creating a storable image on an
254 LP64 machine and retrieving it on an ILP32 system, which is
255 exactly what nstore() is meant for...
257 However, we continue to use SV addresses as tags for plain store(),
258 because benchamarking shows that it saves up to 8% of the store
259 time, and store() is meant to be fast at the expense of lack
262 This means there will be approximately an 8% degradation of
263 performance for nstore(), but it's now working as expected.
264 That cost may vary on your machine of course, since it is
265 solely caused by the memory allocation overhead used to create
266 unique SV tags for each distinct stored SV.
268 Tue Jan 20 09:21:53 MET 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
272 Don't use any '_' in version number.
274 Tue Jan 13 17:51:50 MET 1998 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
278 Updated version number.
280 added binmode() calls for systems where it matters.
282 Be sure to pass globs, not plain file strings, to C routines,
283 so that Storable can be used under the Perl debugger.
285 Wed Nov 5 10:53:22 MET 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
289 Fix memory leaks on seen hash table and returned SV refs.
291 Storable did not work properly when tainting enabled.
293 Fixed "Allocation too large" messages in freeze/thaw and added.
294 proper regression test in t/freeze.t.
296 Tue Jun 3 09:41:33 METDST 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
300 Updated version number
302 Added freeze/thaw interface and dclone.
304 Fri May 16 10:45:47 METDST 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
308 Forgot that AutoLoader does not export its own AUTOLOAD.
311 use AutoLoader 'AUTOLOAD';
313 but that would not be backward compatible. So the export is
316 Tue Mar 25 11:21:32 MET 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
320 Empty scalar strings are now "defined" at retrieval time.
322 New test to ensure an empty string is defined when retrieved.
324 Thu Feb 27 16:32:44 MET 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
328 Updated version number
330 Declare VERSION as being used
332 Fixed a typo in the PerlIO_putc remapping.
333 PerlIO_read and perlIO_write inverted size/nb_items.
334 (only relevant for pre-perl5.004 versions)
336 Thu Feb 27 15:58:31 MET 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
340 Updated version number
342 Added VERSION identification
344 Allow build with perl5.003, which is ante perlIO time
346 Mon Jan 13 17:53:18 MET 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
352 Wed Jan 22 15:19:56 MET 1997 Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
356 Updated version number in Makefile.PL.
358 Added "thanks to" section to README.
360 Documented new forgive_me variable.
364 Added forgive_me support to allow store() of data structures
365 containing non-storable items like CODE refs.