Skip to content

Release 0.3.9 - #179

Merged
tamnd merged 1 commit into
mainfrom
release-0.3.9
Sep 1, 2026
Merged

tamnd merged 1 commit into
mainfrom
release-0.3.9

Conversation

@tamnd

@tamnd tamnd commented Sep 1, 2026

Copy link
Copy Markdown
Owner

Five pull requests since 0.3.8 and no milestone, so this is a patch. #172, #173, #174, #176 and #177.

It is two things at once. The first is the rest of what a cache has to do about time and space that 0.3.8 started: keys that expire now come back on their own rather than waiting for somebody to read them, and picking what to evict stopped forgetting everything it learned between one eviction and the next. The second is the beginning of the memory campaign.

The reason memory is the campaign is the gate report from gamingpc. Every failing row fails on memory and none of them fail on speed. The command itself is cheaper on our side on all nine rows where both sides had a PING to subtract, over a range of 1.07x to 92.09x, and then the peak memory column loses. So the question this release starts answering is what a set member and a hash field actually cost, and the answer so far is 4.9 bytes a member off a million member set and three bytes off a hash field.

The .yo layout is untouched. A file written by any 0.3.x opens unchanged. Everything that got smaller got smaller in the arena, not on disk.

The known gaps section is the part worth reading. It records that a hash field is at eighteen bytes of overhead against a bar of sixteen, that eighteen is the floor for this layout, and that the slot array cannot be shrunk on its own because slots per member and probe length are the same dial. #175 measured exactly how badly that goes and #178 is the change that gets the memory without paying throughput for it.

Version bumped in the root manifest and on every path dependency, Cargo.lock updated with it.

Local checks are green: fmt, clippy on all targets, the workspace tests, docs, xtask check, xtask cross and cargo package --workspace --no-verify. The nightly deep run before this was green, so this goes in on ci alone as the release rules allow for a patch.

Five pull requests since 0.3.8 and no milestone, so this is a patch.

The active expiry cycle and the count of keys carrying a deadline finish what 0.3.8 started about time and space. The eviction pool stops the sampled policies forgetting everything they learned between one eviction and the next. The eight byte element row and the hash value length prefix are the first two of the memory campaign, which is where the gate report says the work is: every failing row fails on memory and none of them fail on speed.

The .yo layout is untouched and a file written by any 0.3.x opens unchanged.
@tamnd
tamnd merged commit f2471ca into main Sep 1, 2026
20 checks passed
@tamnd
tamnd deleted the release-0.3.9 branch September 1, 2026 05:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant