2.09 (2009-03-24)

Hashkeys ending in newline were incorrectly quoted. Sorry Ambrus.

Make it possible to hackily dump *GLOB{IO} objects. This is mostly
to make merijn happy. Afaik we dont have the information to do it

2.08 (2007-12-22 01:34:13)

Hashkeys starting with '-' were sometimes incorrectly quoted.
See RT #29608 at
Thanks to Maddingue for the heads up.

2.07 (2007-12-22 01:10:02)

Version 2.06 broke on Perls < 5.10 due to a stupid thinko. Should
build on the main Perls fine now.

2.06 (2007-12-21 22:27:45)

Finally got DDS running under blead/Perl 5.10

Currently we duplicate code that is in Perl 5.10's Hash::Util (*),
this code should not be compiled under Perl 5.10 and we should
just use Hash::Util instead.

(*) Actually Hash::Util duplicates this code, but whatever, thats
called progress. :-)

2.05 (2007-08-23 00:23:19)

Fix http://rt.cpan.org/Ticket/Display.html?id=28053, where undef
and '' are confused inside of repeat value folding logic.

2.04 (2007-08-23 00:09:55)

Remove various unsavoury items from INSTALL.SKIP and bump the version


Fixed some issues with dmping proxy objects with circular links.

Started integrating subversion into the perl build process to prevent
stuff like releasing unchecked in code, and to include the subversion
build number in the distribution file name.

Reversed the order of the change file so that newest stuff is at top.


Added OptSpace() which can be used to control optional whitespace.
Indent(0) automatically disables optional whitespace.

String compression support has been provided. Use Compress()
to specify how long a string should be before it is compressed.
Use Compressor() to supply a callback to handle the compression.

More tests, better documentation.


Bug fixes, documentation patches and a few more tests.

DumpNames() renamed to DumpVars().

This fixes test failures that were coming from lexicals.t


*WARNING* Interface change!!

This release is interface incompatible with earlier releases.

The whole framework for overriding how objects and classes are represented
has been changed, hopefully, to be more intuitive and easier to use.

All of the previous Freeze related functionality has been replaced by the
new Freezer() method and interface. There is now support for class
authors to add a DDS_freeze() method to control serialization and

HashKeys has had an interface change and has been renamed to KeyOrder.
HashKeys() is still maintained but undocumented at this time.

Added more documentation.

Added support for Padwalker functionality that Robin Housten implemented.

Long quoted strings are now split to be easier to read.


Jim Cromie put together a patch to make aliasing less intrusive. As the term alias was
fairly heavily used already I changed his 'alias' mechanism to 'as', blame me not him
for the silly name. Also includes a few minor fixes, and a little bit of pod cleanup.


Dan Brook noticed that closures that referenced closures were not being handled properly
as the code wasnt iterating into the nested closures. This is fixed now.


Reworked how objects blessed into classes with overloads are handled to prevent
any overloaded methods from firing during the eval of their dump. There may be
problems with this and the Freeze/Thaw processing so YMMV. Thanks to [diotalevi]
from perlmonks for the base implementation of this.

Added support for weakreferences. Under some circumstances weakrefs caused DDS
to get very confused, and there was no support for recreating weakrefs in the
structure. This has been rectified. Its possible that output including weakrefs
may not eval correctly as the restored data may be missing external references
that keep the overall data structure alive. For instance if everything in the
dump is a weakref the resulting vars may have returned to undef prior to completing
the eval. YMMV. Thanks to [ysth] from perlmonks for the pointer to how weakrefs work.

Added method behaviour to Dump() so its not just subroutine based. This should make
using it as a method more or less DWIM. Also thanks to [diotalevi]

Added support for dumping the lexical context of CODE refs. Heavily experimental,


Added dualvar support. Added support for a low purity mode and Purity() overall.
Refactored some code. More tests.


Changed the way DDS is implemented to something a little simpler. Also enhanced
the Makefile.pl stuff, and added mention of it to D::D::S's pod.


Doc fixes, and removed a relic of earlier development that polluted @INC.


Fixed some incorrect error messages in Streamer.xs. Updated CHANGES with 1.06
info which I forgot from that release. Fixed utf8 related error. Thanks to
Yitzchak for the patch. Provided a way to optionally install a 'DDS' alias
for the module so that its easier to use from the command line. Doesn't install
it by default, or via a normal CPAN install for namespace pollution reasons,
and because I hate modules that dont automatically install. If you do

  perl Makefile.PL DDS [STANDARD OPTS]

then it will be installed. To disable this once its enabled you can say

  perl Makefile.PL NODDS [STANDARD OPTS]


Added additional support for utf8 and some minor doc fixes. Thanks to
Yitzchak yet again for the patches and advice.


Added support for locked hashes. Probably there are still bugs in here,
but for now it looks good. Thanks to Yitzchak for pointing out this wasn't

Also started adding support for a "smart indent mode". Try using Indent(1)
instead of Indent(2).

1.03, 1.04

Enhanced format support for FORMAT refs. Yitzchak pointed out some
bugs in the original handling. DeparseFormat() has been removed. It
should never have existed in the first place. DeparseGlob() was the
correct method/attribute to use. FormatStub() attribute added.

This release I'm introducing some new testing code that im trying out.
Once im happy with it I intend to convert all my old tests to use it
and do away with the really quite horrible same() and _same() in


Changed test 14 of dump.t, added a few tests, and some support code
for future enhancements, and most notably support for deparsing
formats. Thanks to Yitzchak Scott-Thoennes for the latter.


Post-release minor fix to provide SortKeys and Hashkeys aliases to
both SortKeys and HashKeys. Thanks to Slaven Rezic for the heads up.
Added documentation improvements and fixes as well as a very slight
and subtle change to the behaviour of Dump() in list context.


Release version. Name changed to Data::Dump::Streamer which will be
future name.