Skip to content

v0.22.0

Latest

Choose a tag to compare

@cachekit-release-bot cachekit-release-bot released this 04 Oct 22:52
f05b830

0.22.0 (2026-10-04)

⚠ BREAKING CHANGES

  • cachekitio: replace httpx with urllib3 for CachekitIO requests (LAB-7931) (#502)
  • decorators: refuse an encrypting serializer at decoration (LAB-5320) (#467)

Features

  • cachekitio: replace httpx with urllib3 for CachekitIO requests (LAB-7931) (#502) (3fe6772)
  • cachekitio: send a cachekit-py/<version> User-Agent (LAB-7052) (#479) (9dc474a)
  • invalidation: announce each invalidation on a Redis pub/sub channel (LAB-652) (#470) (5733626)
  • invalidation: detect a silent Redis peer on the listener with TCP_USER_TIMEOUT (LAB-7586) (#499) (986e4ff)
  • invalidation: opt-in listener evicts L1 on other processes' invalidations (LAB-652) (#472) (1ae8f12)
  • l1: a forked child starts with an empty L1 (LAB-652) (#471) (5097c12)

Bug Fixes

  • arrow: reject dict values that pyarrow stores as the wrong column (LAB-7490) (#459) (5cec332)
  • cachekitio: build the sync client on HTTP/1.1 with a 32-connection pool (LAB-7062) (#489) (80dbf5c)
  • cachekitio: never reuse a parent's pooled connection after fork (LAB-7146) (#468) (15c1351)
  • cachekitio: parse X-CacheKit-Fresh-For with the spec grammar (LAB-7838) (#504) (6cb5f4d)
  • cachekitio: retry a write once on 503 with a short Retry-After (LAB-7686) (#477) (77a16a5)
  • circuit-breaker: stop the decorated function's exceptions tripping the breaker (LAB-5319) (#485) (af48926)
  • decorators: degrade on async lock errors instead of raising or polling (LAB-5346) (#473) (6f901f6)
  • decorators: refuse an encrypting serializer at decoration (LAB-5320) (#467) (ef4a7f2)
  • invalidation: delete the pre-0.20.0 twin on no-args invalidation (LAB-5308) (#464) (f8365d3)
  • invalidation: recommend --py-call-uwsgi-fork-hooks, never --py-call-osafterfork, for uWSGI (LAB-7855) (#491) (3e192f7)
  • invalidation: throttle the listener's reconnect WARNING to one a minute (LAB-7638) (#482) (b3a6c8a)
  • l1: bound one entry to an eighth of the L1 budget (LAB-7823) (#487) (35b6791)
  • metrics: size the duration and size histogram buckets for ms and bytes (LAB-7587) (#476) (f1a52bd)
  • object-cache: repair L1-only caches in a forked child (LAB-7856) (#494) (0a78131)
  • redaction: digest keys holding an unpaired surrogate instead of raising (LAB-7624) (#497) (000b110)
  • redis: decide on hiredis before redis imports so 3.14t keeps the GIL off (LAB-7077) (#465) (c19ab6b)
  • swr: release refresh slots stranded on stopped event loops (LAB-7295) (#488) (b41c626)

Performance Improvements

  • cachekitio: fan out whole-function invalidation deletes, 16 at a time (LAB-7070) (#478) (72026b1)
  • cachekitio: keep idle connections 390 s with TCP keepalive 60/10/3 (LAB-7061) (#483) (c695bf2)
  • cachekitio: skip the uncontended double-check read and release the miss lock in the background (LAB-7064) (#480) (f4b8dfe)
  • decorators: decide refresh_ttl_on_get from Fresh-For, refresh in the background (LAB-7074) (#435) (cc9bf65)
  • metrics: recover the perf-ir drift on the L2 and miss paths (LAB-7801) (#481) (d200c3a)
  • serializers: memoize CK frame headers and pack AutoSerializer values without rebuilding the tree (LAB-7069) (#441) (c2e907a)