Skip to content

1.2.3

Latest

Choose a tag to compare

@RuiNelson RuiNelson released this 08 Jul 10:31

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 FIFO volume 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 a FIFO volume 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/fifo volumes is now a costly operation (up to O(live pages) of page copies per call). Batch deletions with deletePages(ids:wipe:durable:) or deletePagesRange(first:last:wipe:durable:) to amortize the cost. fixed volumes are unaffected.

  • libpcache — Fixed checkPagesRange leaving the underlying count_out untouched on an invalid-range error; it is now zeroed on every error return, matching getPagesRange.

  • 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 open silently ignoring a failure of the row-count query, which could send later FIFO writes down the fill-up path and insert rows beyond maxPages; opening now fails instead.