Igbinary is a drop in replacement for the standard php serializer. Instead of
time and space consuming textual representation, igbinary stores php data
structures in a compact binary form. Savings are significant when using
memcached or similar memory based storages for serialized data.
* Update php version check to allow igbinary to be statically built in PHP 8.0+
* Fix bug in out of memory error handling in __sleep, slightly speed up serializing with __sleep.
* Continue serializing remaining properties if a missing property name is returned from __sleep.
* Speed up serializing by optimizing for the case where there is no memory manager override.
When there is a memory manager override, only use that for allocating the string to return.
(benchmarks/serialize-scalar-int.b.php showed a speedup from 0.22 to 0.18 seconds for repeated serialization of a single scalar,
and from 0.186 to 0.180 seconds for benchmarks/serialize-stringarray.b.php for an array of strings)
* Speed up unserializing arrays in php 7.2-8.0 by adding optimized code for finding the hash bucket of
a string/integer key of an array, or creating a placeholder if it does not already exist.
|3.2.1||* Fix crash when unserializing if __serialize was defined but __unserialize was undefined in php 8.0+ (due to typo).|
* Use PHP's shared empty array instance when unserializing empty arrays in php 7.3+.
(helps slightly with memory usage when repeatedly unserializing,
when removing elements from arrays before unserializing them,
or when serializing values including an empty array that was unserialized)
* Emit a deprecation notice when serializing resources.
PHP itself is converting many resources to objects that throw an Error on serialization attempts.
Continue to represent resources as null in the serialized data.
* Fix memory management bug when unserializing invalid data (duplicate properties in objects (e.g. from `__sleep`) or duplicate fields in arrays (impossible for valid data)).
* Speed up calls to `__serialize`/`__unserialize` in php 8.0+.
* Fix error messages for unserialize_callback_func: make messages properly refer to the autoload function.
* Optimize unserializing alternative names for private/protected constants that were previously public.
* Fix build failure with older C standard (e.g. building on CentOS 6).
* Otherwise, identical to 3.1.6RC1.
|3.1.6RC1||* Fix igbinary_serialize incorrectly deduplicating arrays/objects/references when they were garbage collected/freed during serialization.|