Skip to content

0.1.0-rc4

Pre-release
Pre-release

Choose a tag to compare

@nerdv2 nerdv2 released this 08 Aug 09:09
Immutable release. Only release title and notes can be modified.
  • Extracted the request-local memory tier into a dedicated MemoryTier collaborator owned by ObjectCache, delegating falsey-safe reads, object-cloning writes, per-key/group removal, and request-tier clearing. The public ObjectCache surface is unchanged and all tests remain green.
  • Moved the test-only ValueCodec::header_inline() fixture builder into the test support layer (ValueEnvelopeBuilder), so the production drop-in exposes only the public value-codec encode/decode surface.
  • Added a topology contract test asserting the Api diagnostics and Site Health paths share the single Topology classifier for standalone, cluster, sentinel, replica, and incomplete identities.
  • Documented the intentional try { adapter } catch { degrade + return-filled } boilerplate decision and the canonical persistent-connection identity subset used by PhpRedisAdapter::persistent_id().
  • Wired the multisite switch_blog action so blog scope flips automatically whenever WordPress switches or restores the current blog; global groups survive the switch while non-global groups are scoped to the current blog.
  • Added a wp_cache_supports() parity regression confirming the six advertised features (add_multiple, set_multiple, get_multiple, delete_multiple, flush_runtime, flush_group) are the only ones reported.
  • Added contract coverage for get_multiple() $force semantics (bypasses request memory, reads the backend, repopulates memory), suspended add_multiple() / wp_cache_add() behavior, and the WP_Object_Cache alias guard so a co-resident cache is never clobbered.
  • Broadened third-party interop fixtures with a page-builder admin/post-save path and a caching-adjacent get_multiple() / set_multiple()-heavy fixture, asserting no PHP diagnostics and populated hit/miss counters.
  • Re-verified the numeric contract matrix with no drift after the Phase 1 hot-path changes.
  • Memoized KeySpace::group_digest() per request so repeated key derivation hashes each group once, and cleaned up item_key() string assembly (implode) without changing the wire format.
  • Replaced the double request-memory array probe (exists() + index) on the read path with a single falsey-safe memory_read() probe across get(), get_multiple(), and the persistent read paths, preserving hit/miss accounting and cached false / 0 / '' / null semantics.
  • Added an opt-out measure_performance config key (default true) that skips microtime( true ) capture around backend commands while still counting backend_calls.
  • Added request-memory-focused before/after benchmark evidence and re-ran the controlled RC3→RC4 comparison (no command-count regression; request-memory hit latency improved).
  • Hardened memory safety: the value-envelope decoder now validates the declared payload length against the actual remaining bytes before slicing or allocating, and unit tests prove hostile/over/under-declared length fields are rejected as corrupt and that unserialize failures are contained with no warnings.
  • Added object-aliasing isolation tests (contract + persistent integration) proving mutating a returned object never changes the cached copy across set()+get(), persistent_get, and get_multiple().
  • Documented the request-tier growth policy (request-scoped, unbounded by design, freed at request end, eviction deferred to v1) and surfaced the live request-tier entry count as an on-demand Site Health / diagnostics field.
  • Added close-path correctness tests for runtime-only and degraded (circuit-open) states, and archived the RC3→RC4 request-memory before/after evidence (~99 bytes/entry, no regression).
  • Registered the immutable 0.1.0-rc3 drop-in checksum in the lifecycle ownership registry and updated the packaged lifecycle upgrade/rollback E2E testing for RC3 → RC4.