Revision history for Perl extension Sereal-Decoder

****************************************************************
* Warning: For a seamless upgrade, upgrade to version 5        *
*          of the decoder before upgrading to version 5 of the *
*          encoder!                                            *
****************************************************************
5.010
    * Reset the pending frozen-object state (thaw_av and ref_thawhash) at the
      start of every decode. A decode that died before srl_finalize_structure
      ran -- a truncated document, for example -- left those populated, and the
      next decode on the same decoder then thawed items belonging to the failed
      document and looked up ref_thawhash keys pointing at freed AVs. That
      segfaulted or silently produced the wrong class.
      See https://github.com/Sereal/Sereal/pull/316

5.009
    * Only use Perl's C<$Config{ccflags}> when building bundled zstd on
      AIX / IBM toolchains, or when C<SEREAL_ZSTD_USE_CONFIG_CCFLAGS> is
      set. Other platforms now use the normal zstd build flags again.

5.008
    * Decoder now supports C<thaw_allow_classes> and C<thaw_deny_action>
      to control thaw callbacks during decoding. Thanks to James Rouzier
      for the patches.

5.007
    * Use $Config{ccflags} to compile ztd with. Should fix AIX.
      Thanks to Thomas Seeling for the suggestion.

5.006
    * Use miniz 3.1.1
    * Avoid deprecated ZSTD api.
    * Tidy and regen.

5.005 
    * Update spec to document changes from version 5
    * Security fixes - make sure that COPY tags cannot be used
      to read past end of buffer.

5.004_001
    * Update Zstd to 1.5.7, and other changes.
    * Thanks to Marco Fontani, Ricardo Signes, and James Rouzier

5.004
    * Fix thaw ordering for frozen objects. Nested THAW operations
      now happen in the documented LIFO order. Thanks to Marco
      Fontani for the report.

5.003
    * Production release of 5.002_001 and 5.002_002
    * OpenBSD build fixes. Gracious thanks to Andrew Hewus Fresh
      for providing guidance and access to an OpenBSD box to use to
      debug and fix this.
    * Update Miniz to 3.0.2, Zstd to 1.5.2 and Devel::CheckLib to 1.16
    * Assorted build fixes related to these updates.
    
5.002_002
    * OpenBSD build fixes. Gracious thanks to Andrew Hewus Fresh
      for providing guidance and access to an OpenBSD box to use to
      debug and fix this.

5.002_001
    * Update Miniz to 3.0.2, Zstd to 1.5.2 and Devel::CheckLib to 1.16
    * Assorted build fixes related to these updates.

5.002
    * Fixup Decoder tests to run on perl 5.8 which has no defined-or.
    - Consolidated changes from 5.001_00x:
    * Ensure that Encoder depends on the correct version of the Decoder.
      Gracious thanks to Slaven Rezic for being so patient in helping
      me get this release working properly.
    * Test compatibility fixes when no perl is already installed.
    * Add t/195_backcompat.t to check if the latest decoder will
      seamlessly handle reading output from older versions.
    * Test compatibility fixes with version 3 and earlier.

5.001_003
    * Ensure that Encoder depends on the correct version of the Decoder.
      Gracious thanks to Slaven Rezic for being so patient in helping
      me get 5.001_00x working properly.

5.001_002
    * Test compatibility fixes when no perl is already installed.
    * Add t/195_backcompat.t to check if the latest decoder will
      seamlessly handle reading output from older versions. 

5.001_001
    * Test compatibility fixes with version 3 and earlier.

5.001
    * First official release of protocol 5. Better support for non
      standard NV types. Support for the new Perl 5.36 bools.
      Upgrade *Sereal::Decoder* FIRST.

5.000_002
    * Prerelease CPAN testing. Build fixes for quadmath and
      longdouble perls. Certain tests were failing with the old
      versions which were subtly broken on quadmath or longdouble
      machines. These tests are now skipped on these builds. You
      will not be able to fully test this platform until you install
      the Decoder, and then install the Encoder.

5.000_001
    * Prerelease CPAN testing for 5.000_000.

5.000_000 Tue Aug 30, 2022
    * Support quadmath builds with FLOAT_128 tag type.
    * Support YES/NO tags for booleans. Requires perl 5.36.

---

4.025 Thr Jul 28, 2022
    * Release with build fixes for threaded perls and MANIFEST
      update. Oops.

4.024 Wed Jul 27, 2022
    * Total rework of how THAW is invoked to resolve issues with
      frozen representations containing blessed objects.


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 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 Weds June 10, 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
    * Update miniz
    * Update zstd
    * perltidy perl code to a standard style

4.009 Fri January 31, 2020
    * Update ppport.h for modern perls.

4.008 Thurs Jan 30, 2020
    * Build fixes for modern perls.
    * Pod fixes

4.007 Tues Apr 9, 2019
    * Tweak docs for looks_like_sereal/scalar_looks_like_sereal

4.006 Mon Apr 8, 2019
    * Version bump only

4.005 Tues Jan 23, 2018
    * Document and fix decode_from_file()

4.004 Sun Nov 12
    * Fix build issues from C++ style comments
    * Fixup build_requires

4.003 Sun Nov 12
    * Fixup Devel::CheckLib usage
    * Build fixes

4.002
    * Full release of Zstandard compression support etc.

4.001_001 Mon Feb  6 11:13:40 CEST 2017
  * Sereal v4 release with Zstandard compression support
    https://github.com/facebook/zstd

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 Dec  1 2015
  * Build fixes.

3.009 Nov 30 2015
  * Re-relase 3.008 with updated META files.

3.008 Nov 27 2015
  * FIX: Win32 build issues.

3.007 Nov 26 2015
  * Build fixes for boxes without any Sereal installed (it seems
    to be common on certain types of smokers, and not on others).
  * [ENCODER]: new sort orders added. 
  * Fix incremental parsing of utf8 strings. See
    https://rt.cpan.org/Public/Bug/Display.html?id=93892
  * Encoder 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!)
  * Sereal::Decoder::Constants will now have a defined $VERSION
  * 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 "set_readonly" option to decoder
  - Introduce "set_readonly_scalars" option to 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
  - 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)

Full change history available at https://github.com/Sereal/Sereal
