3.1.6RC1 2020-10-07
=======

* Fix igbinary_serialize incorrectly deduplicating arrays/objects/references when they were garbage collected/freed during serialization.

3.1.5 2020-09-02
=======

* Update unit test expectation to match behavior in php 8 due to changes in php's handling of cyclic references in arrays.
* Support API changes in php 8.0.0beta3.

3.1.4 2020-07-05
=======

* Fix unserialization of PHP references to internal/user-defined classes using PHP 7.4's `__unserialize` (e.g. `ArrayObject`)

3.1.3 2020-07-04
=======

* Properly serialize reference groups of size 1 (these can be created by array_walk_recursive and other functions).
  Note that this does not fix the general case where values not being serialized are in the same reference group as a value being serialized.
* PHP 8.0 compatibility fixes.

3.1.2 2020-01-16
=======

* Speed up object, array, reference, and string serialization.
* Speed up unserializing integers between 0 and 65535 (as values and array keys).
* Speed up unserializing objects with declared properties.

3.1.1 2020-01-16
=======

* Fix bug causing incorrect serialization for 1 in 2**32 strings on 64-bit php installations when string hashes collide.
  (https://github.com/igbinary/igbinary/issues/260)

3.1.1a1 2020-01-11
=======

* Throw when an uninitialized php 7.4 typed property is included in the result of __sleep(),
  instead of emitting a notice and attempting to represent the unset/uninitialized value as null (#258).
  See https://bugs.php.net/bug.php?id=79002

  Uninitialized properties without types (from __sleep) continue to cause igbinary to emit notices and are represented as null.

3.1.0 2019-12-27
=======

* Same as 3.1.0b4.

3.1.0b4 2019-12-20
=======

* Don't call __destruct for objects where deferred __unserialize calls were not started (e.g. due to Serializable::unserialize throwing).

3.1.0b3 2019-12-10
=======

* Skip over object properties that are uninitialized or unset when serializing, instead of serializing them as null.
  This is done to avoid Errors when unserializing their values for php 7.4 typed properties.

3.1.0b2 2019-12-09
=======

* Fix crashes related to unserializing instances of classes with php 7.4 typed properties.

3.1.0b1 2019-12-08
=======

* Support php 7.4's __serialize/__unserialize the same way serialize()/unserialize() does.
  This deliberately only supports __serialize/__unserialize in php 7.4, to making switching to/from serialize()/unserialize() as straightforward as possible.

3.0.1 2019-03-20
=======

* Fix version check when statically building igbinary inside of the php-src folder.

3.0.0 2019-02-17
=======

* Identical to 3.0.0a2

3.0.0a2 2019-02-13
=======

* Don't use empty string for serializing empty $_SESSION array, it breaks some save handlers. (Issue #231)
  Continue treating the empty string as the empty $_SESSION array when unserializing.

3.0.0a1 2019-02-08
=======

* This release line drops support for PHP5.
* Drop support for APC (APC was only available for PHP5 - It is the predecessor of APCu)
* Emit a warning and return null if igbinary_unserialize() is passed more data to unserialize than expected.
* Fix compilation against PHP 7.4-dev. Igbinary does NOT yet properly serialize/unserialize all classes with PHP 7.4-dev's typed properties.
* The serialization format is exactly the same as igbinary 2.x

2.0.8 2018-10-20
=======

* Be more aggressive about deduplication when generating serialization of arrays in php 7.0+.
* Define HAVE_IGBINARY on Unix/Linux. (previously defined only on Windows)
* Update formatting/wording of documentation.

2.0.7 2018-06-27
=======

* Fix compiler warnings about format strings, for errors that should not occur during normal igbinary usage.

2.0.6 2018-05-12
=======

* Same as 2.0.6RC1

2.0.6RC1 2018-04-01
=======

* Fix a bug in Windows debug builds.
* Emit more specific warnings when __sleep() returns a declared property that was unset.
* Fix harmless compiler warnings during builds.
* Fix a build error on PHP7.3-dev.

2.0.5 2017-11-04
========

* Same as 2.0.5RC1 (no bugs were reported in that release candidate)

2.0.5RC1 2017-10-15
========
* Improve performance when unserializing objects/arrays and serializing objects/arrays/strings in php 5/7.
* Update unserialization of integer object keys for php 7.2: Make those keys accessible when unserializing.
* Properly pick up presence of gcc for default compiler flags (`cc --version` doesn't contain gcc).
  Add -O2 to default gcc compiler flags.
* Use empty string for serializing empty $_SESSION array, similar to "session.serialize_handler=php".
  Older igbinary releases already unserialize the empty string to the empty array.

2.0.4 2017-04-14
========
* Fixes bug #129: Should not call __wakeup() on data which was created by Serializable::unserialize()

2.0.3 2017-03-31
========
* Fixes bug #126: Fatal error: "igbinary_serialize_zval: zval has unknown type 0" (IS_UNDEF)
  Make this a warning instead of a fatal error (and serialize as null instead), since IS_UNDEF is a known type.
  Later releases will fix the root cause of the warning, and consistently omit array/object/other entries for IS_UNDEF.

2.0.2 2017-02-27
========
* Compatible with PHP 5.2 - 7.1
* Fixes crash in Memcached->setMulti (in php 7.0+) when the first level of array elements have references as values.
  Other extensions using igbinary shouldn't be affected.

2.0.1 2016-11-19
========
* Compatible with PHP 5.2 - 7.0
* Fixes bug in session decoder not calling __wakeup() in php 7.0+
* (Enhancement) Reuses identical strings when unserializing objects and arrays in php 7.0+

2.0.0 2016-10-30
========
* Compatible with PHP 5.2 - 7.0 (Adds PHP 7 support)
* Serialization format is unchanged
* Performance improvements for serialization and unserialization in PHP 5.2 - 7.0
* (PHP 7) Don't call __destruct if __wakeup threw an exception (or __wakeup wasn't called yet)
* Ports integration with other extensions to PHP 7.0 (session serialization, Memcached, Redis, APCu, etc.)
* Fixes Windows PECL builds for PHP 5.6+
* Reword warnings for invalid header bytes of serialized data (in igbinary_unserialize).

1.2.1 2014-08-29
========
* Compatible with PHP 5.2 - 5.6

1.2.0 2014-08-28
========
* PECL bug #22614, igbinary_unserialize(FALSE) must return FALSE
* PHP bug #54662, unserializing nested objects cause crash
* Other fixes

1.1.1 2011-01-17
========
* Critical crash fix. Thanks to Ilia Alshanetsky for spotting and fixing.

1.1.0 2011-01-17
========
* New ini setting to disable duplicate string compacting
* APC serializer registration (APC 3.1.7 beta)
* Windows support (PHP 5.3)
* Updated serialized binary format (1.1 reads 1.0.x format)
* Minor performance improvements
* Bug fixes
* New source repository at https://github.com/igbinary/igbinary

1.0.2
========
* Bug fix release

1.0.1 2008-07-05
========
* unserialize_callback_func support
* slight speedup when serializing scalars

1.0.0 2008-06-25
========
* Public version
