Skip to content

cachekit-rs: v0.8.0

Choose a tag to compare

@cachekit-release-bot cachekit-release-bot released this 30 Sep 05:23
Immutable release. Only release title and notes can be modified.
be761b3

0.8.0 (2026-09-29)

⚠ BREAKING CHANGES

  • intents: CacheKit::secure takes the master key as a hex string (master_key_hex: &str) instead of raw bytes (master_key: &[u8]). The key must decode to at least 32 bytes and is validated before any Redis connection is attempted. There is no longer a raw-bytes preset; decoded bytes go through CacheKitBuilder::encryption_from_bytes. The new CacheKit::secure_from_env reads the key from CACHEKIT_MASTER_KEY.
  • interop: reject reserved namespaces ns and nsapi (LAB-5876) (#89)
  • intents: CacheKit::minimal now enables an in-process L1 cache (1000 entries, no stale-while-revalidate, no cross-process invalidation). A minimal read may serve an L1 entry for up to its 300 s TTL after another writer changed the value in Redis. Chain .no_l1() on the returned builder to restore read-through-every-time behaviour.
  • intents: CacheKit::encrypted(url, key) is now CacheKit::secure(url, key), and the SecureCache accessor cache.secure() is now cache.secure_cache(). Migration: rename both call sites; behaviour, defaults and feature gates are unchanged.

Features

  • encryption: keyring rotation — previous_master_keys + sequential decrypt (LAB-686) (#63) (8b9e7ac)
  • encryption: surface hardware-acceleration detection (LAB-523) (fd03a12)
  • intents: CacheKit::io falls back to CACHEKIT_API_KEY via io_from_env (LAB-4647) (#86) (464b9d2)
  • intents: CacheKit::secure takes a hex master key, add secure_from_env (LAB-4645) (#88) (50211d3)
  • observability: live read counters, auto-wired SaaS telemetry, tracing events (LAB-521) (#81) (afe77ad)
  • rs: surface rotation drain signal via decrypt_indexed (LAB-1678) (#74) (15b94cf)

Bug Fixes

  • cachekitio: reject reserved cache-key segments in request path (LAB-2878) (#76) (0ed7e1d)
  • intents: CacheKit::minimal enables L1 with SWR off per intent-preset contract (LAB-4644) (#85) (e0d4388)
  • interop: reject reserved namespaces ns and nsapi (LAB-5876) (#89) (5e3aa2f)
  • secure: evict L1 copy when decryption fails (LAB-5570) (#87) (fe5170d)
  • serializer: enforce decode depth in the structural guard and vendor decode-bounds 1.1.0 (LAB-3481) (b45be1a)
  • serializer: own the msgpack decode depth bound and add a structural walk (LAB-2503) (#73) (306c1b1)

Code Refactoring

  • intents: rename CacheKit::encrypted to CacheKit::secure (LAB-4651) (#82) (11802d9)

Dependencies

  • The following workspace dependencies were updated
    • dependencies
      • cachekit-macros bumped from 0.7.0 to 0.8.0