memcached extension changelog

Version 3.1.5 (2019-12-03)
--------------------------

	* Fix build with PHP 7.4 release due to ulong typedef removal (#445)

Version 3.1.4 (2019-10-06)
--------------------------

	* Test on PHP 7.4 as well as 8.0 (#440)
	* Fix segfault for unknown memcached flags (#431)
	* Update documented defaults for sess_lock_retries( #432)
	* Remove stray instances of the TSRMLS_CC macro for PHP 8 compatibility (#444)

Version 3.1.3 (2018-12-24)
--------------------------

	* Fix --disable-memcached-session by ifdef-ing session INI handler callbacks (#396, #420)

Version 3.1.2 (2018-12-22)
--------------------------

	* Fix --enable-memcached-protocol was set to yes by default, reverted to no (#418)

Version 3.1.1 (2018-12-21)
--------------------------

	* Fix --disable-memcached-sasl and --disable-memcached-session replaced by --enable variants (#416)

Version 3.1.0 (2018-12-21)
--------------------------

	New
	* Support for PHP 7.3 (#385, #390)
	* Add INI setting to choose session consistent hash (ketama or ketama_weighted) (#344, #392)
	* Add support for libmemcached encryption (#345, #381)
	* Add error reporting to session code (#165)
	* Expose build configuration via PECL (#383)

	Fixes
	* Fix hanging getStats() when binary protocol and non-blocking are both enabled (#348)
	* Fix session persistence by checking memcached behavior values before setting (#379)
	* Fix memcached.sess_persistent not working with memcached.sess_binary_protocol = On (#375)
	* Configure warns if libmemcached needs sasl.h (#341, #380)
	* Resolve various INI deviations in 3.0.3 (#351)
	* Turn off sess_binary_protocol by default with older libmemcached (#330)

	Changes
	* Impove Windows builds (#411)
	* Support Homebrew ZLIB path (#410)
	* Remove forgotten unused comment about -lpthread (#406)
	* Git ignore configure.ac (#405)
	* Replace obsolete macros AC_TRY_FOO with AC_FOO_IFELSE (#403)
	* Remove unused defines (#354)
	* Change session_lock and sess_prefix default ini values (#340, #350)
	* Use new fast_zpp parameter parsing API (#302, #311)

Version 3.0.4 (2017-11-20)
--------------------------

	* Fix corrupted interned strings (#338)
	* Fix unit tests for compatibility with PHP 7.2 (#358, #359)
	* Fix \x0a in key name locks up connection and triggers a fatal timeout error (#339)
	* Fix missing optional parameter getStats($type) (#337)
	* Fix typo in skip message (#331)
	* Fix build warnings (#329)
	* Document GET_EXTENDED flag, add/rename other missing/misnamed constants (#335)

Version 3.0.3 (2017-02-19)
--------------------------

	* Fix crash when checking session data with older versions of libmemcached (#328)
	* Fix crash due to zend_mm_corrupted when fetching session data (#327)

Version 3.0.2 (2017-02-12)
--------------------------

	* Update warning for touch command in binary protocol mode with libmemcached < 1.0.18 (#322)
	* Add tests for 64-bit increment/decrement/incrementByKey/decrementByKey (#321)
	* Fix tests for 32-bit increment/decrement/incrementByKey/decrementByKey (#319)

Version 3.0.1 (2017-02-07)
--------------------------

	* Add API entries for flushBuffers() and getAllKeys() (#316)
	* Ignore specific errors from memcached_dump for getAllKeys() with newer memcached servers (#315)
	* Fix compiling with memcached binary protocol enabled (#312)
	* Restore php_libmemcached_compat with workaround for missing memcached_exists (#314)
	* Travis CI purge old versions of memcached and libmemcached (#309)

Version 3.0.0 (2017-01-27)
--------------------------
	* Support for PHP 7.0 and PHP 7.1
	* Fix compiling with SASL disabled
	* Improved the test suite and Travis CI test runners
	* Fix small string compression / decompression
	* Fix increment/decrement with adjustments greater than 32-bit integers
	* Fix session.gc_maxlifetime to handle both relative and absolute times
	* Fix inability to reset OPT_PREFIX_KEY

Version 3.0.0a1 (2016-02-22)
----------------------------
	Dependencies
	 * Support for PHP 7.0
	 * Requires libmemcached 1.0 or higher
	 * Optional extension igbinary must 2.0 or higher
	 * Optional extension msgpack must be 2.0 or higher

	API
	 * The method signature of get, getByKey, getMulti, and getMultiByKey changed.
	 * get* and getMulti* commands no longer take cas or user flags parameters.
	 * get* and getMulti* commands now take the Memcached::GET_EXTENDED flag to retrieve user flags and cas tokens.
	 * Fixes getStats command to return all stats from all servers
	 * Fixes allKeys command behaviour
	 * Fixes error where cache callback for get command was not setting expiration time properly
	 * Added server type to server list
	 * Remove use_sasl ini-variable and initialise sasl as needed
	 * CAS tokens are returned as integers and they overflow to strings as needed

	Session handler
	 * The session memcached protocol config name was changed, and the default protocol was changed from text to binary protocol. If your memcached setup does not support the binary protocol(e.g. if using twemproxy), then set memcached.sess_binary_protocol = Off. (Previously called memcached.sess_binary)
	 * Session lock algorithm updated (new ini-values memcached.sess_lock_wait_min, memcached.sess_lock_wait_max and memcached.sess_lock_retries)
	 * Session extension uses PHP allocators (still some work to do on the rest of the extension)
	 * Ini-values take effect during session_start or session_regenerate_id
	 * Fixes crash with session_regenerate_id (work-around for PHP bug)

	Tests
	 * Fix several problematic tests

Version 2.2.0 (2014-04-01)
--------------------------
	* Added the OPT_SERVER_TIMEOUT_LIMIT behaviour

Version 2.2.0RC1 (2014-03-12)
-----------------------------
	* Added the OPT_SERVER_TIMEOUT_LIMIT behaviour
	* Fixes incorrect size when compressing serialized objects
	* Fixes endianess of compressed values

Version 2.2.0b1 (2013-10-28)
----------------------------
	* Reinstate support for libememcached 0.x series
	* Added SASL support to session handler
	* Added Memcached::flushBuffers as per GH #78
	* Fixes GH #54: Fixed UDP server adding with newer libmemcached
	* Fixed PHP bug #65334: (Segfault if uncompress value failed)
	* Fixes GH #14: get with cas token fails to fetch all results
	* Fixes GH #68: memcached 2.1.0 requires libmemcached 1.0.10
	* Fixes GH #69: compiling on CentOS 6.4 with libmemcached 1.0.17
	* Merged PR #91: memcached.sess_lock_wait and memcached.sess_lock_max_wait
	*  Added session handler settings:
		- memcached.sess_number_of_replicas
		- memcached.sess_randomize_replica_read
		- memcached.sess_remove_failed
		- memcached.sess_connect_timeout
	* Added support for memcached protocol handlers
	* Added Memcached::setBucket for virtual bucket support
	* Added support for msgpack serialization
	* Memcached::setSaslAuthData returns correct status on success
	* Added support for user-defined flags in set and get operations

Version 2.1.0 (2012-08-06)
--------------------------
	* Drop support for libmemcached 0.x series, now 1.0.x is required
	* Add support for virtual bucket distribution
	* Fix compilation against PHP 5.2

Version 2.0.1 (2012-03-03)
--------------------------
	* Fix embedded version number to be not -dev

Version 2.0.0 (2012-03-02)
--------------------------
	* Add touch() and touchByKey() methods
	* Add resetServerList() and quit() methods
	* Support binary protocol in sessions
	* Make it work with libmemcached up to 1.0.4
	* Test against PHP 5.4.0

Version 2.0.0b2 (2011-06-24)
----------------------------
	* Add OPT_REMOVE_FAILED_SERVERS option.
	* Make it work with libmemcached up to 0.49.
	* Fix a case where invalid session ID could lock the script.
	* Improve session support:
		- Add support for libmemcached config string
		- Add persistence support via PERSISTENT=persistent_id prefix
		  of the save_path
	* Add 3rd parameter to the __construct() that allows specification
	  of libmemcached configuration string
	* Fix a possible crash in __construct() when using persistent
	  connections
	* Add work-around a bug in libmemcached < 0.50 that causes truncation
	  of last character of server key prefix
	* When using multiple servers implement transparent fail-over
	* Fix php_memc_cas_impl() implementation when server_key is not being used
	* Add support for incrementByKey() and decrementByKey()
	* Make increment/decrement initialize value when it is not available (when
	  using binary protocol)

Version 2.0.0b1 (2011-03-12)
----------------------------
	* Add fastlz library that provides better/faster payload compression
	* Add configure switch to enable/disable JSON serialization support
	* Add getAllKeys() method
	* Add deleteMulti() and deleteMultiByKey() methods
	* Add isPristine() and isPersistent() methods
	* Add setOptions() method to set multiple options at once
	* Add SERIALIZER_JSON_ARRAY type that decodes JSON payloads as arrays
	  instead of objects
	* Add support for Unix domain socket connections
	* Add memcached.compression_threshold INI setting
	* Add memcached.compression_factor INI setting
	* Add memcached.compression_type INI setting
	* Implement a few speed optimizations
	* Many bug fixes and memory leaks plugged
	* Add several more tests
	* Add constants for libmemcached 0.37+:
	    - Memcached::OPT_NUMBER_OF_REPLICAS
	    - Memcached::OPT_RANDOMIZE_REPLICA_READ
	* Add 'on_new' callback to constructor
	* Add SASL support

Version 1.0.2 (2010-05-03)
--------------------------
	* Fix build for libmemcached-0.39 (memcached_server_list() issue)

Version 1.0.1 (2010-03-11)
--------------------------
	* Fix JSON API handling to account for PHP 5.2/5.3 version differences.
	* Add memcached.sess_locking, memcached.sess_lock_wait, and
	  memcached.sess_prefix INI entries.
	* Add OPT_AUTO_EJECT_HOSTS option.

Version 1.0.0 (2009-07-04)
--------------------------
	* First stable release.
	* Add getResultMessage() method.
	* Fix OPT_RECV_TIMEOUT definition.
	* Initialize Session lock wait to max execution time (if max execution
	  time is unlimited, default to 30 seconds).

Version 0.2.0 (2009-06-04)
--------------------------
	* Add JSON serializer support, requires PHP 5.2.10+.
	* Add HAVE_JSON and HAVE_IGBINARY class constants that indicate
	  whether the respective serializers are available.
	* Add 'flags' parameter to getMulti() and getMultiByKey().
	* Add GET_PRESERVE_ORDER class constant that can be used with
	  abovementioned flags parameter to make the order of the keys in the
	  response match the request.
	* Fix an issue with retrieving 0-length payloads (FALSE boolean value).
	* Refactor the way payload types are stored in memcached flags to optimize
	  the structure and allow for future expansion. WARNING! You have to flush
	  the cache when upgrading to this version.
	* Add several tests.

Version 0.1.5 (2009-03-31)
--------------------------
	* Implement getVersion().
	* Add support for preserving boolean value types.
	* Fix crash when child class does not call constructor.
	* Fix bug #16084 (Crash when addServers is called with an associative array).
	* ZTS compilation fixes.

Version 0.1.4 (2009-02-13)
--------------------------
	* Fix compilation against PHP 5.3.
	* Add support for 'igbinary' serializer (Oleg Grenrus)

Version 0.1.3 (2009-02-06)
--------------------------
	* Bludgeon bug #15896 (Memcached setMulti error) into submission.

Version 0.1.2 (2009-02-06)
--------------------------
	* Fix bug #15896 (Memcached setMulti error).
	* Check for empty key in getServerByKey().
	* Allow passing 'null' for callbacks.
	* get() with cas token fetching wasn't erroring out properly.
	* Rename certain parameters in the API to be more clear.
	* Allow only strings as the append/prepend value.
	* Remove expiration parameter from append/prepend.

Version 0.1.1 (2009-02-02)
--------------------------
	* Add OPT_LIBKETAMA_COMPATIBLE option.
	* Implement addServers() method.
	* Swap internal compressed and serialized flags to be compatible with other clients.

Version 0.1.0 (2009-01-29)
--------------------------
	* Initial release
