Skip to content

Commit 912976f

Browse files
committed
chore: release 0.8.0
Made-with: Cursor
1 parent df1b020 commit 912976f

5 files changed

Lines changed: 16 additions & 4 deletions

File tree

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.8.0] - 2026-04-22
11+
1012
### Breaking
1113
- `ClockRing::with_hasher` / `ClockRing::try_with_hasher` and the `ConcurrentClockRing` equivalents now require a third argument: a `KeysAreTrusted` marker. This forces every caller that opts out of the default DoS-resistant `RandomState` hasher to acknowledge the trade-off at the call site, making hash-collision-DoS exposure reviewable via `grep KeysAreTrusted`. Callers using `ClockRing::new` / `try_new` are unaffected. Migration: add `, KeysAreTrusted::new()` to existing `with_hasher` / `try_with_hasher` calls.
1214

@@ -42,6 +44,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
4244
- New `## Timing Side Channels` module-level section documenting that `HashMap`-backed lookup timing reveals key presence, and recommending `ClockRing` not be used as the backing store for caches whose key set must remain confidential against a co-located attacker.
4345
- `Extend<(K, V)> for ClockRing` impl now carries a memory-budget caveat pointing callers at `pop_victim`-based byte accounting when values are attacker-influenced; evicted entries are silently dropped by `Extend` and the aggregate memory use during a bulk insert is bounded only by `capacity × max(size_of(V_i))` across the iterator.
4446

47+
### Fixed (additional)
48+
- **KeyInterner** — hardening for hash-flooding and unbounded-growth DoS, fallible `try_intern`, `with_hasher` and capacity bounds, safe insert ordering, and key-redacted `Debug` (#99).
49+
- **GhostList** — configurable hasher, capacity clamp, key-redacted `Debug`, and security documentation for workloads with untrusted keys (#96).
50+
- **FixedHistory** — stricter `K` bound enforcement, `boxed` for large inline histories, key-redacted `Debug`, zeroing `clear`, and safer arithmetic in hot paths (#95).
51+
52+
### Changed (additional)
53+
- **LRU-K policy** — internal `SlotArena` and `FxHashMap` for hot-path layout and handle lookup (#101).
54+
- **Sharded** caches use `SipHasher` to compute shard indices (#100).
55+
- **Benchmarks** (dev only): `lru` comparison crate updated to 0.17.0 (#103).
56+
4557
## [0.7.0] - 2026-04-09
4658

4759
### Breaking

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ resolver = "2"
44

55
[package]
66
name = "cachekit"
7-
version = "0.7.0"
7+
version = "0.8.0"
88
edition = "2024"
99
rust-version = "1.85"
1010
authors = ["Thomas Korrison <ferrite.db@gmail.com>"]

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ Add `cachekit` as a dependency in your `Cargo.toml`:
5050

5151
```toml
5252
[dependencies]
53-
cachekit = "0.7.0"
53+
cachekit = "0.8.0"
5454
```
5555

5656
From source:

bench-support/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ name = "render_docs"
99
path = "src/bin/render_docs.rs"
1010

1111
[dependencies]
12-
cachekit = { path = "..", version = "0.7.0", features = ["policy-all"] }
12+
cachekit = { path = "..", version = "0.8.0", features = ["policy-all"] }
1313
rand = "0.10.1"
1414
rand_distr = "0.6"
1515
serde = { version = "1.0", features = ["derive"] }

0 commit comments

Comments
 (0)