Repository navigation
Release 0.3.9 - #179
Merged
Merged
Release 0.3.9#179
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
.yolayout 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.lockupdated with it.Local checks are green: fmt, clippy on all targets, the workspace tests, docs,
xtask check,xtask crossandcargo package --workspace --no-verify. The nightlydeeprun before this was green, so this goes in oncialone as the release rules allow for a patch.