Wraps libpcache 1.1.5.
Version 1.2.3
Bug Fixes
-
libpcache — Fixed FIFO eviction order being corrupted by explicit deletes. Deleting a page from a
FIFOvolume could leave a stray empty slot that hijacked the implicit cursor, causing subsequent writes to evict the newest pages instead of the oldest — or to evict prematurely while capacity remained. Every delete on aFIFOvolume now ends with a compaction pass that merges holes into the cursor run while preserving circular age order; volumes left ambiguous by a crash, or written by earlier library versions, are repaired automatically on open.Note for adopters: deletion on
CapacityPolicy/fifovolumes is now a costly operation (up to O(live pages) of page copies per call). Batch deletions withdeletePages(ids:wipe:durable:)ordeletePagesRange(first:last:wipe:durable:)to amortize the cost.fixedvolumes are unaffected. -
libpcache — Fixed
checkPagesRangeleaving the underlyingcount_outuntouched on an invalid-range error; it is now zeroed on every error return, matchinggetPagesRange. -
libpcache — Fixed I/O errors from short reads/writes (e.g. a data file truncated by a crash) being reported without a valid POSIX error; short transfers now surface as
EIO. -
libpcache — Fixed a potential out-of-bounds write in the counter-based APIs on platforms with a 32-bit
size_t(e.g.arm64_32), where a huge counter position could wrap past the bounds check. -
libpcache — Fixed
opensilently ignoring a failure of the row-count query, which could send later FIFO writes down the fill-up path and insert rows beyondmaxPages; opening now fails instead.