| Changelog for yac |
| Release |
What has changed? |
| 2.4.2 |
- String values are decoded straight into the zend_string handed back to PHP, no second copy per read
- Copying a value and checksumming it are a single pass on writes as well as reads
- The next probe slot is prefetched while the current one's lock, load and compare are in flight
- Faster argument parsing for add/set/get/delete/dump
- dump() builds its result array in bulk instead of one insert per entry
- Overwriting an entry whose value outgrew its block skips the checksum of the block being replaced
- CRC-32C picks its implementation by probing the CPU at runtime, so a binary built with -msse4.2 still runs on older hardware
- Fixed get() crashing under concurrency: find() bumped the hit count and access time without holding the slot, overwriting the type flag a concurrent write had just published
- flush() now takes every slot before clearing the table; it could previously land mid-publish and leave a slot permanently unusable
- dump() returns an empty result while a flush() is in progress instead of reporting half-cleared slots
- Fixed a wild-pointer read in the block-value guard of find()
- Fixed dump() on PHP older than 7.4
- Fixed the packaged tarball missing storage/crc, which made it fail to build |
| 2.4.1 |
- Integrity-check every value with CRC-32C on read: three interleaved hardware chains for values over 1KB on x86-64/ARM64, sliced-by-8 software table elsewhere
- Eviction rework: separate expired sweep, victims picked by remaining ttl (ties fall to least hit), corrupt blocks tombstoned on find
- A single MurmurHash64A drives home slot and probe stride (two hashes before)
- hits/miss accumulated per process and folded once at request end, off the shared-counter hot path
- Default memory raised: keys 4M to 8M, values 32M to 64M; compression on by default at 4K
- Fixed a refcount leak on the multi-get $default
- Entries failing to decompress are now invalidated instead of being evicted over and over
- Fixed crc sampling and the decompression check
- Fixed spurious kicks
- Fixed the JSON serializer decoding from an unterminated buffer
- Fixed info() folding miss counts into the hits counter |
| 2.4.0 |
- Embed small scalars directly in the hash slot, avoiding value allocations for tiny entries
- Switch compression from FastLZ to LZ4 (better ratio and speed)
- get() accepts an optional $default argument (returned on miss instead of NULL)
- dump() gains an $offset parameter and reports hits, atime, embedded and c_len per entry
- Per-entry hit counters and start_time exposed in info()/dump()
- Multi-get omits missing keys (filled with $default when given) instead of false placeholders
- Field-by-field slot commits and spinlock backoff (pause/yield) reduce contention overhead
- Fixed a startup hang when values_memory_size is below the 4M segment minimum
- Fixed Windows shared memory cleanup (view unmapped exactly once)
- Fixed valgrind-reported leaks and uninitialized reads (MINFO output, compression error paths) |
| 2.3.2 |
- PHP 8.2, 8.3, 8.4, 8.5 and 8.6 support
- Added ARMv8 hardware CRC32C support
- Fixed dead SSE4.2 CRC32 detection, modernized config.m4
- Retry on CAS failures in set()
- Treat decode/decompression failures as silent cache misses
- Fixed delete() returning true for non-existent keys
- Added PIE (PHP Installer for Extensions) support |
| 2.3.1 |
- PHP8.1 Supports |
| 2.3.0 |
- PHP8 Supported |
| 2.2.1 |
- Refactor key manipulation, avoding memory allocation
- Refactor Yac::__set/__get by using native objects_handler |
| 2.2.0 |
- Added json serializer
- Added igbinary serializer
- change yac.serilalizer to string, "php", "json" etc |
| 2.1.2 |
- Also use crc32_u32 in 64 bits
- Fixed crc32c only pick the first byte |
| 2.1.1 |
- Implemnented CAS based lock-free protection
- Use SSE4.2 _mm_crc32 instead of normal crc32 to make speedup
- Some optimization to avoding memory usage
- Fixed PECL package (missed yac_atomic.h) |
| 2.1.0 |
- Implemnented CAS based lock-free protection
- Some optimization to avoding memory usage |
| 2.0.4 |
- Fixed PHP-7.4 windows build |
| 2.0.3 |
- Fixed PHP-7.4 Compatiblity |
| 2.0.2 |
- Fixed PHP-7.2 Compatiblity |
| 2.0.1 |
- Fixed issue #63 (include smart_str.h) |
| 2.0.0 |
- Release yac for PHP7 |
| 0.9.2 |
- Add --with-system-fastlz option |
| 0.9.1 |
- Try to fix windows build |
| 0.9.0 |
- first release |