APCu: Changelog

Version Message
5.1.24 - Make compatible with PHP 8.4.
- apc.php: Preserve search parameter when deleting entry.
- apc.PHP: Allow arbitrary search regex.
5.1.23 - Revert use of monotonic clock for TTL (#451)
- Fix a crash when serializing packed arrays (e.g. lists) in PHP 8.2+ with `apc.serializer=default`.
- Reduce memory usage when serializing packed arrays (e.g. lists) in PHP 8.2+ with `apc.serializer=default`.
- Speed up serializing arrays with `apc.serializer=default`.
- Reduce memory usage when unserializing instances of the empty array in PHP 7.3+.
- Removed no longer working apcue extension.
- Increased limit on maximum number of slots.
- Made tests compatible with PHP 8.3.
5.1.22 - PHP 8.2 compatibility
- PHP 8.1 compatibility in apc.php
- Fix --enable-apcu-rwlocks configure option
- Enable transparent huge pages for mmap memory
- Use monotonic clock for TTL
5.1.21 - Fixed compatibility with PHP 8.1 by adding return types to APCUIterator.
- APCUIterator::current() and ::key() can no longer be called on an invalid iterator.
5.1.20 - Fix deadlocks when other apcu_* functions are used inside apcu_entry(). It should now be safe to use any functions inside the apcu_entry() callback.
- Fix division by zero exception in apc.php.
- Fix handling of references in PHP 8 if "default" serializer is used (which is not the default).
- Fix string reuse handling if "default" serializer is used (which is not the default).
- Check for failures when acquiring read locks to report problems earlier (write locks were already checked previously).
- Adjust tests for current PHP 8.1 development branch.
- Remove *_api.h headers. Use apc_cache.h instead of apc_cache_api.h etc.
5.1.19 - Fixed apcu_store() with integer keys (#388).
- Made apc.use_request_time=0 the default (#391).
- Made apcu compatible with PHP 8.0.
5.1.18 - Implement apcu_inc() and apcu_dec() using atomic operations. This means that these functions no longer have to acquire a write lock. These functions will now wraparound on overflow, instead of saturating to a floating point value.
- Make table header in apc.php sticky.
- Fix compile warnings related to mktemp() usage.
- Fix compatibility with PHP 8.0.
- Fix required number of arguments for apcu_store() returned by Reflection.
5.1.17 - Fixed compatibility with PHP 7.4 and PHP 8.0.
5.1.16 - Fix build on OSX.
5.1.15 - Restore apc.serializer=php as the default, as the "default" serializer still/again has issues.
- Fix possible issues in persistence of arrays with the "default" serializer.
- Attempt to reduce shared memory fragementation.
5.1.14 - Fixed GH #347: Disable slam defense by default.
- Fix potential issue with destruction of locks. This does not affect Linux, but might affect Windows and BSD.
- Use mutex instead of rwlock for shared memory allocator (if pthreads mutex available).
- Require only read-lock for apcu_cas(), by using atomic compare-and-swap.
5.1.13 - Reimplement persistence logic using precise allocation rather than memory pools. This reduces
memory usage of cache entries, especially for small values, and improves performance of persisting
and unpersisting values.
- Fixed GH #335: Stampede protection is broken.
- Fixed GH #328: Segfault in apcu_key_info() if APCu is disabled.
- Generally make the behavior of functions if APCu is disabled more consistent.
- Fixed PHP bug #72980: Empty strings are now consistently allowed as cache keys.
- Optimized apcu_key_info() and apcu_cache_info() by using interned strings.
- Fix build against PHP master (PHP 7.4).
- Many changes to internal C APIs.
5.1.12 - gh#307: Fix 'Timout' sort option (apc.php).
- gh#308: Keep search parameter on cache entry detail link (apc.php).
- Fix --enable-apcu-clear-signal support.
- Show entries with expired global TTL in APCuIterator.
- Respect TTL when calculating APCuIterator totals.
- The per-entry TTL now always takes precedence over the global TTL.
- The global TTL is now always relative to the access time.
- apcu_inc() and apcu_dec() no longer update hard-expired entries. Instead a new entry is created.
- Added optional $ttl argument to apcu_inc() and apcu_dec(), used when creating a new entry.
- PHP bug #76145: Fix use of APCu inside Serializer::(un)serialize().
- gh#304: If apcu_cas() is used on a non-existing entry, don't insert it.
- gh#295: Improve APCuIterator performance by using PCRE JIT and preallocating key strings.
- Reduce the memory overhead of cache entries.
- Prevent potential memory corruption in the cache slam defense implementation.
- Ensure cache entry references are released on bailout during unserialization.
- Make support for atomic operations a hard requirement for building APCu.
- Check write-lock acquisition for failure, to help debugging deadlock situations.
- Make sure apcu_inc/dec are atomic when working on a non-existing entry.
- Many changes to internal C APIs.
5.1.11 - fix gh#246 apcu_entry hangs
- fix gh#259 deadlock in apcu_store
- fix gh#281 undefined variable in apc.php
- fix handling of fatal errors in apcu_entry
- check string lengths when looking up keys
- many internal C APIs changed
5.1.10 - fix gh#247 when a NUL char is used as key, apcu_fetch(array) truncates the key
- fix gh#248 apcu_fetch may return values causing zend_mm_corruption or segfaults
when custom serializer is used
- fix gh#260 apcu.serializer=default results in segfault
- fix gh#274 non-portable shell == in config.m4
- fix crash when passing bad array to apcu_delete
- improve fix gh#266 refcounting errors in APCIterator
- fix for PHP 7.3 compatibility
5.1.9 - fix gh#234 mmap disabled when configure is called with --enable-apcu-mmap
- fix gh#226 Warning: apcu_fetch(): apc_fetch() expects a string or array of strings.
- mitigate gh#223 Fatal error when starting php on windows
- add support for PCRE2 in 7.3
- use row formatting for information in phpinfo() tables
- set IS_STR_PERSISTENT so refcounting failures are reported by -DRC_DEBUG=1
- fix gh#266 refcounting errors in APCIterator
5.1.8 - fix gh#207 Segmentation fault in apc_sma_api_free()
- fix gh#221 memory leak
- update to apc dashboard (Tyson Andre)
5.1.7 - fixes gh#19: hung apaches on pthread wrlocks
- fixes gh#203: segfaults in bailout / longjmp
5.1.6 - fixes gh#19: Hung apaches on pthread wrlocks
- fixes gh#188: Fix Segfault in ZTS build when locking (Tyson Andre)
- fixes gh#194: apcu_entry ttl not working
- fixes gh#189: SegFault in apc_copy_zval
- fixes gh#185: zend_mm_heap corrupted
- fixes gh#190: memory leak/failed check for duplicates
5.1.5 - fix version check in control panel page (gh#182, lennartwesdijk)
- do not create null strings, palloc may fail
5.1.4 - fix possible memory leak
- fix gh#168 drop trying to return strings from shm
- fix gh#170 do not create entries when serialization fails
5.1.3 - fixed macro using interlocked increment in Windows
- fix gh#158 apc_inc() with negative step value hangs the process
- fix gh#164 apc_inc() can take minutes with huge step value
5.1.2 - be really consistent with APC in use of atomics
5.1.0 - PHP 7 compatibility
- provide APC compatibility in "apc" optional extension
- move APCIterator to APC compatibility extension
- add APCuIterator without cache argument
- drop apcu_bin_* functions
- add apcu_entry(key, callback, ttl) function
- fix race on refcount of entry when using rwlocks (or on windows)
4.0.11 - fix #176 segfault when apc.preload_path contains bad data
- fix bad data used in test suite
4.0.10 - be really consistent with APC in use of atomics, avoid surprises
4.0.8 - fix inconsistent member names for entries in userland
- fix race on ref_count
4.0.7 - fix inconsistent member names for entries in userland
4.0.6 - fix issues with stddef inclusion causing compilation issue
4.0.5 - fix compile with 5.6 beta
4.0.4 - Fix deadlocking due to destroyed locks
- Fix various compatibility bugs
4.0.3 - Fix various compatibility problems
- Fix a few lingering faults
- Remove experimental eval serializer
- Fix iterator for compatibility
4.0.2 - Fixed bug #15 APC compatibility option broken. (Anatol)
- Fixed bug #20 APCu's APCIterator constructor is not compatable with APC. (Anatol)
- Fixed resource leak when data preload fails. (Anatol)
- Fixed issue #29 php_apcu.dll does not load anymore under X64. (Anatol)
4.0.1 - Fix crash in cli on apc_store where enable_cli=0
- Testing eval serializers
- Change apc_* to apcu_* in apc.php
- Fix exports in API
- Expose to userland whether APCu is compiled with the APC compatibility.
See the APCU_APC_FULL_BC constant. (Anatol)
- Fixed bin dump producing garbage data in multithreaded env. (Anatol)
4.0.0 All opcode caching abilities removed
The default locking is now rwlocks
APCu API installed in build environment
Please see TECHNOTES/README.md