A ULID code (Universally Unique Lexicographically Sortable Identifier) is a combination of a 48-bit time stamp (most significant part, with a millisecond accuracy), and a 80-bit random number (least significant part), totalling 128 bits, that is 16 bytes (octets).
The package ULID provides two functions Generate. One function produces a 128-bit number that can be output (for instance) in the UUID format. One function produces a string in the Base32 format (Crockford variant) - the preferred (canonical) representation of a ULID. Additionally, the Generate_Monotonic function enables the production of a monotonically increasing sequence of ULID numbers within the same millisecond.
Alire crate: https://alire.ada.dev/crates/ulid
Mirror: https://github.com/zertovitch/ulid
Features
- Task safe
- Sortable
- Optionally, monotonic