Upstream changes:
3.014 Dec 7 2015
* Fix builds under 5.8.9
3.012 Dec 6 2015
* Yet another release related to broken META files.
ExtUtils::MakeMaker and CPAN::Meta need to be up to date
or the META files miss stuff.
3.011 Dec 6 2015
* No significant changes. Doc typo fixes, and build tweaks.
3.010 Dec 1 2015
* Build fixes.
3.009 Nov 30 2015
* Re-relase 3.008 with updated META files.
3.008 Nov 27 2015
* FIX: Make sure that reserializing a data structure created
using alias_varint_under does not produce a corrupted dataset.
Thanks to Iskra for the report.
* FIX: Precedence issue related to sort keys options. Thanks
to Petr P穩sa� <ppisar@redhat.com> for the report and fix.
* FIX: Win32 build issues, thanks to bulk88 for help.
3.007 Nov 26 2015
* FIX: sorting should now work with tied hashes, and
be in general faster.
* CHANGED: Sort order for sort_keys=1 is now defined to be
"in order by length of bytes, then by byte order of the
underlying string, then by utd8ness, with non-utf8 first".
This sort order was chosen because it requires the least
operations to perform in the most cases, has a bounded number
of cases where we would have to create any temporary SV's or
to do operations that require us to introspect codepoints in
utf8 strings. IOW purely performance. Note that so long
as you compare data created with the same sort_keys setting
you will ALWAYS get the same order *in process*, regardless
of what you choose. Backwards compatible support for the
old order is available via sort_keys=3.
ADDED: sort_keys=2 to provide "perl cmp order"
(Its just there because it is easy to do, not for any
good reason.)
ADDED: sort_keys=3 to provide "rev perl cmp order"
Legacy sort order was equivalent to sort_keys=3, use this
option *ONLY* if you are extremely sensitive to changes in the
sorted order (or "canonical form").
* [DECODER] Build fixes for boxes without any Sereal installed (it seems
to be common on certain types of smokers, and not on others).
* Fix issues with serializing blessed scalars where we see the
blessed scalar before we see the reference to it.
* Handle PVLV undefs
* Build fixes for 5.8.9
* Doc patches
* Optimizations
3.006 Nov 14 2015
* [DECODER] fix segfaults from heavily corrupted data. Guards
against various pathological cases which could cause segfaults
fixed. Thanks to Damian Gryski and "fuzzing sereal with afl"
for finding these cases.
* [ENCODER] Various subtle fixes to how we choose whether to serialize
the string or numeric version of a value, in particular to
ensure that "00" always round trips as "00", and related issues.
Note this fix has correctness and performance consequences. In
some cases values that used to serialized as integers (arguably
incorrectly) will be serialized as strings instead, and some code
maybe be slower to serialize.
NOTE: Some issues related to this subject are not fixable without
a protocol change. In particular this change may affect the behavior
of code that uses binary logical operators on values serialized
with Perl.
Thanks to Zefram, Tom, and others for help with this issue.
* Fixups for cast warnings under -Wint-to-ptr builds by using
using PTR2INT and INT2PTR for casting our objects.
* Win32 fixes
* Build improvements
* Changes to how we generate constants
Problems found with existing distfile:
distfiles/libiconv-1.13-cp932.patch.gz
No changes made to the libiconv distinfo file.
Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden). All existing
SHA1 digests retained for now as an audit trail.
****************************************************************
* Warning: For a seamless upgrade, upgrade to version 3 *
* of the decoder before upgrading to version 3 of the *
* encoder! *
****************************************************************
3.005 Jan 05 2015
* Build improvements related to char signedness being platform
dependent.
3.004 Dec 27 2014
* Performance optimizations and other miscellaneous changes.
* Build improvements.
* Win32 fixes for weakrefs.
3.003 Oct 19 2014
* Niko Tyni fixed the 64-bit big endian Sereal bug! (Yay Niko!)
* Setup META.yml correctly so that certain dependencies are
marked as being test dependencies and not build or run-time
dependencies.
* Allow one to build against an externally supplied version
of csnappy or miniz. Thanks to Petr Písař <ppisar@redhat.com>
3.002 Aug 20 2014
Summary of changes from 3.001 - 3.002
- Introduce "canonical" option to encoder
- Introduce "canonical_refs" option to encoder
* Test Infra Changes
- Split up bulk tests to speed up testing and make it easier
to see when a failure is restricted to a specific option.
* Big-Endian Support
- Improved support for Big-Endian machines. We now build and pass test
on Sparc and HP-UX and other platforms with big-endian or strict
alignedness requirements. Much thanks to Jarkko Hietaniemi,
Gregor Herrmann, and H. Merijn Brand for for their assistance with
this.
- We still have issues with s390x (Z/Os) with Sereal. If someone wants
to help it would be appreciated.
3.001
- Upgrade to version 3 of the protocol
* Add Zlib compression support to the protocol
* Add Zlib support to Encoder/Decoder
* Add CANONICAL_UNDEF tag to represent PL_sv_undef
* Change magic header so it is trivial to detect
and reject utf8 encoded Sereal packets.
- Change how we serialize variables which have more
than one of IOK, NOK, and POK set. In general we
favour the numeric form, with the exception of when
all three are set when we favour the string form
(this is to handle engineering notation like "0E0"
where numeric and string equivalence may differ)
Do it for all packages that
* mention perl, or
* have a directory name starting with p5-*, or
* depend on a package starting with p5-
like last time, for 5.18, where this didn't lead to complaints.
Let me know if you have any this time.
2.03 Tue Jan 7 20:00 2014 (AMS time)
- (Hopefully) final fixes to FREEZE/THAW functionality:
=> Add safe assertion to make sure that we don't segfault on invalid
data.
=> Fix encoding/decoding of data structures with repeated references
to the same instance of a class that has FREEZE/THAW hooks.
Thanks to Christian Hansen for a test case.
- Distribution dependency fix.
2.02 Mon Jan 6 15:00 2014 (AMS time)
- Fundamental fixes for FREEZE/THAW support in previous Sereal v2
releases. If you plan to use FREEZE/THAW, make sure you have 2.02
or better (dito for the decoder).
2.01 Tue Dec 31 08:15 2013 (AMS time)
- Promoting changes from 0.37 to 2.00_03 to a stable release.
(This being the first protocol v2 stable release.)
- Minor performance tweaks.
2.00_03 Sun Dec 29 10:33 2013 (AMS time)
- FREEZE/THAW hooks for object serialization.
- Test improvements (allowing for partial parallel run)
- Minor optimizations.
2.00_02 Mon Oct 28 19:32 2013 (AMS time)
- Sereal::Encoder now requires Sereal::Decoder for better testing.
- Fix Test::Warn dependency problem of 2.00_01.
2.00_01 tue Oct 1 07:34 2013 (AMS time)
- NEW PROTOCOL VERSION: V2
- User-data in header functionality: You may embed arbitrary
Sereal-serializable data in a document header. The document
header isn't compressed, so this is ideal for retrieving
small chunks of meta-data (eg. routing information) without
having to deserialize the entire document.
- Relocatable Sereal document bodies
- Encoder never emits non-incremental Snappy encoding for V2
- Offsets now 1-based in relocatable format, not 0
- Fixed VERY obscure (and rare) memory leak.
- Improved error messages
- Remove warning about Sereal not being production-grade
(because it IS).
- Detect when the Snappy compression was net negative in size
and back out
- C89/Windows fixes (bulk88)
- 5.18 compat: Skip test failing due to hash-randomization (Zefram)
converters/p5-Sereal-Encoder.
This library implements an efficient, compact-output, and feature-rich
serializer using a binary protocol called Sereal. Its sister module
Sereal::Decoder implements a decoder for this format. The two are released
separately to allow for independent and safer upgrading.
The Sereal protocol version emitted by this encoder implementation is
currently protocol version 1.