Big-endian 64-bit patch from Raphael Manfredi.
[p5sagit/p5-mst-13.2.git] / ext / Storable / ChangeLog
1 Thu Aug 24 01:02:02 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
2
3 . Description:
4
5
6         ANSI-fied most of the code, preparing for Perl core integration.
7         The next version of Storable will be 0.8, and will be integrated
8         into the Perl core (development branch).
9
10         Dispatch tables were moved upfront to relieve some compilers,
11         especially on AIX and Windows platforms.
12
13         Merged 64-bit fixes from perl5-porters.
14
15 Mon Aug 14 09:22:04 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
16
17 . Description:
18
19         Added a refcnt dec in retrieve_tied_key(): sv_magic() increases
20         the refcnt on the mg_ptr as well.
21
22         Removed spurious dependency to Devel::Peek, which was used for
23         testing only in t/tied_items.t.  Thanks to Conrad Heiney
24         <conrad@fringehead.org> for spotting it first.
25
26 Sun Aug 13 22:12:59 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
27
28 . Description:
29
30         Marc Lehmann kindly contributed code to add overloading support
31         and to handle references to tied variables.
32
33         Rewrote leading blurb about compatibility to make it clearer what
34         "backward compatibility" is about: when I say 0.7 is backward
35         compatible with 0.6, it means the revision 0.7 can read files
36         produced by 0.6.
37
38         Mention new Clone(3) extension in SEE ALSO.
39
40         Was wrongly optimizing for "undef" values in hashes by not
41         fully recursing: as a result, tied "undef" values were incorrectly
42         serialized.
43
44 Sun Jul 30 12:59:17 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
45
46         First revision of Storable 0.7.
47
48         The serializing format is new, known as version 2.0.  It is fully
49         backward compatible with 0.6.  Earlier formats are deprecated and
50         have not even been tested: next version will drop pre-0.6 format.
51
52         Changes since 0.6@11:
53
54         - Moved interface to the "beta" status.  Some tiny parts are still
55           subject to change, but nothing important enough to warrant an "alpha"
56           status any longer.
57
58         - Slightly reduced the size of the Storable image by factorizing
59           object class names and removing final object storage notification due
60           to a redesign of the blessed object storing.
61
62         - Classes can now redefine how they wish their instances to be serialized
63           and/or deep cloned.  Serializing hooks are written in Perl code.
64
65         - The engine is now fully re-entrant.
66
67 Sun Apr  2 23:47:50 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
68
69 . Description:
70
71         Added provision to detect more recent binary formats, since
72         the new upcoming Storable-0.7 will use a different format.
73         In order to prevent attempting the de-serialization of newer
74         formats by older versions, I'm adding this now to the 0.6 series.
75
76         I'm expecting this revision to be the last of the 0.6 series.
77         Unless it does not work with perl 5.6, which I don't use yet,
78         and therefore against which I cannot test.
79
80 Wed Mar 29 19:55:21 MEST 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
81
82 . Description:
83
84         Added note about format incompatibilities with old versions
85         (i.e. pre 0.5@9 formats, which cannot be understood as there
86         was no versionning information in the file by then).
87
88         Protect all $@ variables when eval {} used, to avoid corrupting
89         it when store/retrieve is called within an exception handler.
90
91         Mistakenly included "patchlevel.h" instead of <patchlevel.h>,
92         preventing Perl's patchlevel from being included, which is
93         needed starting from 5.6.
94
95 Tue May 12 09:15:15 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
96
97 . Description:
98
99         Fixed shared "undef" bug in hashes, which did not remain shared
100         through store/retrieve.
101
102 Thu Feb 10 19:48:16 MET 2000   Raphael Manfredi <Raphael_Manfredi@pobox.com>
103
104 . Description:
105
106         added last_op_in_netorder() predicate
107         documented last_op_in_netorder()
108         added tests for the new last_op_in_netorder() predicate
109
110 Wed Oct 20 19:07:36 MEST 1999   Raphael Manfredi <Raphael_Manfredi@pobox.com>
111
112 . Description:
113
114         Forgot to update VERSION
115
116 Tue Oct 19 21:25:02 MEST 1999   Raphael Manfredi <Raphael_Manfredi@pobox.com>
117
118 . Description:
119
120         Added mention of japanese translation for the manual page.
121
122         Fixed typo in macro that made threaded code not compilable,
123         especially on Win32 platforms.
124
125         Changed detection of older perls (pre-5.005) by testing PATCHLEVEL
126         directly instead of relying on internal symbols.
127
128 Tue Sep 14 22:13:28 MEST 1999   Raphael Manfredi <Raphael_Manfredi@pobox.com>
129
130 . Description:
131
132         Integrated "thread-safe" patch from Murray Nesbitt.
133         Note that this may not be very efficient for threaded code,
134         see comment in the code.
135
136         Try to avoid compilation warning on 64-bit CPUs. Can't test it,
137         since I don't have access to such machines.
138
139 Mon Jul 12 14:37:19 METDST 1999   Raphael Manfredi <Raphael_Manfredi@pobox.com>
140
141 . Description:
142
143         changed my e-mail to pobox.
144
145         mentionned it is not thread-safe.
146
147         updated version number.
148
149         uses new internal PL_* naming convention.
150
151 Fri Jul  3 13:38:16 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
152
153 . Description:
154
155         Updated benchmark figures due to recent optimizations done in
156         store(): tagnums are now stored as-is in the hash table, so
157         no surrounding SV is created. And the "shared keys" mode for
158         hash table was turned off.
159
160         Fixed backward compatibility (wrt 0.5@9) for retrieval of
161         blessed refs. That old version did something wrong, but the
162         bugfix prevented correct retrieval of the old format.
163
164 Mon Jun 22 11:00:48 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
165
166 . Description:
167
168         Changed benchmark figures.
169
170         Adjust refcnt of tied objects after calling sv_magic() to avoid
171         memory leaks.  Contributed by Jeff Gresham.
172
173 Fri Jun 12 11:50:04 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
174
175 . Description:
176
177         Added workaround for persistent LVALUE-ness in perl5.004. All
178         scalars tagged as being an lvalue are handled as if they were
179         not an lvalue at all.  Added test for that LVALUE bug workaround.
180
181         Now handles Perl immortal scalars explicitely, by storing &sv_yes
182         as such, explicitely.
183
184         Retrieval of non-immortal undef cannot be shared. Previous
185         version was over-optimizing by not creating a separate SV for
186         all undefined scalars seen.
187
188 Thu Jun  4 17:21:51 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
189
190 . Description:
191
192         Baseline for Storable-0.6@0.
193
194         This version introduces a binary incompatibility in the generated
195         binary image, which is more compact than older ones by approximatively
196         15%, depending on the exact degree of sharing in your structures.
197
198         The good news is that your older images can still be retrieved with
199         this version, i.e. backward compatibility is preserved. This version
200         of Storable can only generate new binaries however.
201
202         Another good news is that the retrieval of data structure is
203         significantly quicker than before, because a Perl array is used
204         instead of a hash table to keep track of retrieved objects, and
205         also because the image being smaller, less I/O function calls are
206         made.
207
208 Tue May 12 09:15:15 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
209
210 . Description:
211
212         Version number now got from Storable.pm directly.
213
214         Fixed overzealous sv_type() optimization, which would make
215         Storable fail when faced with an "upgraded" SV to the PVIV
216         or PVNV kind containing a reference.
217
218 Thu Apr 30 15:11:30 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
219
220 . Description:
221
222         Extended the SYNOPSIS section to give quick overview of the
223         routines and their signature.
224
225         Optimized sv_type() to avoid flags checking when not needed, i.e.
226         when their type makes it impossible for them to be refs or tied.
227         This slightly increases throughput by a few percents when refs
228         and tied variables are marginal occurrences in your data.
229
230         Stubs for XS now use OutputStream and InputStream file types to
231         make it work when the given file is actually a socket. Perl
232         makes a distinction for sockets in its internal I/O structures
233         by having both a read and a write structure, whereas plain files
234         share the same one.
235
236 Tue Jun  3 09:41:33 METDST 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
237
238 . Description:
239
240         Thanks to a contribution from Benjamin A. Holzman, Storable is now
241         able to correctly serialize tied SVs, i.e. tied arrays, hashes
242         and scalars.
243
244 Thu Apr  9 18:07:51 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
245
246 . Description:
247
248         I said SvPOK() had changed to SvPOKp(), but that was a lie...
249
250 Wed Apr  8 13:14:29 METDST 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
251
252 . Description:
253
254         Wrote sizeof(SV *) instead of sizeof(I32) when portable, which
255         in effect mangled the object tags and prevented portability
256         accross 32/64 bit architectures!
257
258 Wed Mar 25 14:57:02 MET 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
259
260 . Description:
261
262         Added code example for store_fd() and retrieve_fd() in the
263         man page, to emphasize that file descriptors must be passed as
264         globs, not as plain strings.
265
266         Cannot use SV addresses as tag when using nstore() on LP64. This
267         was the cause of problems when creating a storable image on an
268         LP64 machine and retrieving it on an ILP32 system, which is
269         exactly what nstore() is meant for...
270
271         However, we continue to use SV addresses as tags for plain store(),
272         because benchamarking shows that it saves up to 8% of the store
273         time, and store() is meant to be fast at the expense of lack
274         of portability.
275
276         This means there will be approximately an 8% degradation of
277         performance for nstore(), but it's now working as expected.
278         That cost may vary on your machine of course, since it is
279         solely caused by the memory allocation overhead used to create
280         unique SV tags for each distinct stored SV.
281
282 Tue Jan 20 09:21:53 MET 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
283
284 . Description:
285
286         Don't use any '_' in version number.
287
288 Tue Jan 13 17:51:50 MET 1998   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
289
290 . Description:
291
292         Updated version number.
293
294         added binmode() calls for systems where it matters.
295
296         Be sure to pass globs, not plain file strings, to C routines,
297         so that Storable can be used under the Perl debugger.
298
299 Wed Nov  5 10:53:22 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
300
301 . Description:
302
303         Fix memory leaks on seen hash table and returned SV refs.
304
305         Storable did not work properly when tainting enabled.
306
307         Fixed "Allocation too large" messages in freeze/thaw and added.
308         proper regression test in t/freeze.t.
309
310 Tue Jun  3 09:41:33 METDST 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
311
312 . Description:
313
314         Updated version number
315
316         Added freeze/thaw interface and dclone.
317
318 Fri May 16 10:45:47 METDST 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
319
320 . Description:
321
322         Forgot that AutoLoader does not export its own AUTOLOAD.
323         I could use
324
325                 use AutoLoader 'AUTOLOAD';
326         
327         but that would not be backward compatible. So the export is
328         done by hand...
329
330 Tue Mar 25 11:21:32 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
331
332 . Description:
333
334         Empty scalar strings are now "defined" at retrieval time.
335
336         New test to ensure an empty string is defined when retrieved.
337
338 Thu Feb 27 16:32:44 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
339
340 . Description:
341
342         Updated version number
343
344         Declare VERSION as being used
345
346         Fixed a typo in the PerlIO_putc remapping.
347         PerlIO_read and perlIO_write inverted size/nb_items.
348         (only relevant for pre-perl5.004 versions)
349
350 Thu Feb 27 15:58:31 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
351
352 . Description:
353
354         Updated version number
355
356         Added VERSION identification
357
358         Allow build with perl5.003, which is ante perlIO time
359
360 Mon Jan 13 17:53:18 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
361
362 . Description:
363
364         Random code fixes.
365
366 Wed Jan 22 15:19:56 MET 1997   Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com>
367
368 . Description:
369
370         Updated version number in Makefile.PL.
371
372         Added "thanks to" section to README.
373
374         Documented new forgive_me variable.
375
376         Made 64-bit clean.
377
378         Added forgive_me support to allow store() of data structures
379         containing non-storable items like CODE refs.
380