4.023 Sun Feb 20, 2022
* Make it possible to upgrade with passing tests when using
Sereal::Decoder 4.015 - 4.019 on threaded debugging perls.
IF YOU USE THREADED PERLS YOU ARE STRONGLY ADVISED TO UPDATE
TO THIS VERSION OR LATER. *UPGRADE THE DECODER IMMEDIATELY.*
4.022 Sat Feb 19, 2022
4.021 Fri Feb 18, 2022
* Early but incomplete versions of 4.023, skip these releases.
4.020 Thurs Feb 17, 2022
* Fix "panic: free from wrong pool" errors on threaded debugging builds.
This error is only visible on DEBUGGING perls however it exists
regardless. If you are using a threaded build upgrade to this!
Thanks to Andreas J. Koenig for finding the bug, and Nicholas Clark
for suggesting valgrind to debug and fix it.
4.019 Mon Feb 7, 2022
* Fix build issue with latest perl - Thanks to Nicholas Clark
* Update zstd to 1.5.1
4.018 Thurs Aug 3, 2020
* Fix issue with gcc 10 with snappy compression.
4.017 Thurs July 9, 2020
* The build fixes in 4.016 didn't work correctly, this should fix them.
4.016 Thurs July 9, 2020
* Fix some dependency issues in build process
4.015 Weds July 8, 2020
* Build fixes (missing dependency)
* Hardening against corrupted data
* New thresholds to manage decoding process
4.014 Thurs June 11, 2020
* Fix build issue on non-win32 platforms.
* Update zstd to 1.4.5
4.012 Tues February 4, 2020
* Fix memory leak in looks_like_sereal(), thanks to Kirill Sysoev
4.011 Tues February 4, 2020
* Fix and test custom opcode logic for 5.31.2 and later.
4.010 Tues February 4, 2020
* Encoder/Decoder: Update miniz
* Encoder/Decoder: Update zstd
* Sereal/Encoder/Decoder: perltidy perl code to a standard style
4.004 Sun Nov 12
* Fix build issues from C++ style comments
* Fixup build_requires
4.003 Sun Nov 12
* Fixup Devel::CheckLib usage
* Do not compress using Snappy if the buffer is larger 2**32
* Build fixes
3.015 Thu Sep 1 20:18:44 CEST 2016
* Fix builds under 5.25+
* Fix various buffer overun bugs found using AFL (thanks to dgryski)
* Fix issue in decode_from_file()
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 Nov 30 2015
* Fix silly build issue for Sereal. We do some magic so that things
"Just Work" when building from withing the git repo, but that magic
was failing due to a precedence issue in the magic detection logic.
This mean that users building in a git based .cpan dir would see
breakage.
3.009 Nov 30 2015
* Re-relase 3.008 with updated META files.
3.008 Nov 27 2015
* [ENCODER] 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.
* [ENCODER] FIX: Precedence issue related to sort keys options.
Thanks to Petr Písař <ppisar@redhat.com> for the report and fix.
* [ENCODER/DECODER] FIX: Win32 build issues.
3.007 Nov 26 2015
* [DECODER] Build fixes for boxes without any Sereal installed (it seems
to be common on certain types of smokers, and not on others).
* [ENCODER]: Base sort order changed, new sort orders added.
Rework sort logic to be more efficient, fix sorted tied hashes,
define new sort order.
See Sereal::Encoders CHANGES files.
* [ENCODER] Handle PVLV undefs
* [ENCODER] General optimizations.
* [ENCODER] Build fixes for 5.8.9
* [ENCODER] Doc patches
* Win32 build fixes.
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
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
- Encoder: Introduce "canonical" option to encoder
- Encoder: Introduce "canonical_refs" option to encoder
- Decoder: Introduce "set_readonly" option to decoder
- Decooder: Introduce "set_readonly_scalars" option to decoder
* Decoder Bug fixes
- Fix assertion fails in DEBUG perls (Brian Fraser)
- Fix segfault with "into" interface when decoding references and
strings into the same target SV. See new test t/550_decode_into.t
* 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
- Production release 1 of protocol version 3
- Zlib support
- CANONICAL_UNDEF,
- new magic header to make it easier to detect
UTF8 encoded data.
- Minor changes to how scalar values are serialized
to favour more compact representations.
This is an experimental module. Before using it in production, please get
in touch with the authors!
Sereal is an efficient, compact-output, binary and feature-rich
serialization protocol. The Perl encoder is implemented as the
Sereal::Encoder module, the Perl decoder correspondingly as
Sereal::Decoder. They are distributed separately to allow for safe
upgrading without downtime. (Hint: Upgrade the decoder everywhere first,
then the encoder.)
This Sereal module is a very thin wrapper around both Sereal::Encoder and
Sereal::Decoder. It depends on both and loads both. So if you have a user
of both encoder and decoder, it is enough to depend on a particular version
of Sereal and you'll get the most recent released versions of
Sereal::Encoder and Sereal::Decoder whose version is smaller than or equal
to the version of Sereal you depend on.
The protocol specification and many other bits of documentation can be
found in the github repository. Right now, the specification is at
https://github.com/Sereal/Sereal/blob/master/sereal_spec.pod, there is a
discussion of the design objectives in
https://github.com/Sereal/Sereal/blob/master/README.pod, and the output of
our benchmarks can be seen at
https://github.com/Sereal/Sereal/wiki/Sereal-Comparison-Graphs.