ksuidms: change to 4ms increments#31
Merged
Merged
Conversation
tasn
approved these changes
Mar 13, 2026
svix-jbrown
added a commit
that referenced
this pull request
Mar 13, 2026
Closed
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.
Currently,
KsuidMstreats the fractional part as being 1/256th of a second (roughly 3.9ms). This does not match our rust implementation, nor the documentation comments, which describe it as having 4ms of precision.To wit, on Rust the KSUID
3AsgpMQps5Gm44a7CdiFOrApblU(whose fifth byte is 0x80) corresponds to the timestamp 1773386873.512, and on the current release of this library, it corresponds to 1773386873.500. This also matches the rust behavior of having the millisecond part of ksuids whose fifth byte is in the range 0xf9-0xff wrap around to the beginning of the second.This is a breaking change, obviously.
Other changes in here:
importcall inside a hot function (what a silly thing to do!).from_base62parse and then immediately throwing it awaypytest.mark.parametrize