Project

General

Profile

« Previous | Next » 

Revision dfb2b4cb

Added by nevans (Nicholas Evans) almost 2 years ago

[ruby/securerandom] Add support for UUID version 7

Although the specification for UUIDv7 is still in draft, the UUIDv7
algorithm has been relatively stable as it progresses to completion.

Version 7 UUIDs can be very useful, because they are lexographically
sortable, which can improve e.g: database index locality. See section
6.10 of the draft specification for further explanation:

https://datatracker.ietf.org/doc/draft-ietf-uuidrev-rfc4122bis/

The specification allows up to 12 bits of extra timestamp precision, to
make UUID generation closer to monotonically increasing. This provides
between 1ms and ~240ns of timestamp precision. At the cost of some code
complexity and a small performance penalty, a kwarg may specify any
arbitrary precision between 0 and 12 extra bits. Any stronger
guarantees of monotonicity have considerably larger tradeoffs, so
nothing more is implemented. This limitation is documented.

Ruby issue: https://bugs.ruby-lang.org/issues/19735

https://github.com/ruby/securerandom/commit/34ed1a2ec3