This repository was archived by the owner on Jul 9, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 8
This repository was archived by the owner on Jul 9, 2024. It is now read-only.
Discussion: Redefine variant bit (111) definition #26
Copy link
Copy link
Open
Labels
DiscussionFurther information is requestedFurther information is requestedOut of ScopeTopics not in scope for the RFC/DraftTopics not in scope for the RFC/Draft
Description
Continuation of separate #24 thread
Question:
Should we redefine UUID variant bits 111 (E/F) which are currently "Reserved for future definition." as per the original RFC 4122 Section 4.1.1 source?
Proposal:
- In Draft 02 set definition of any UUID Version (UUIDv1/2/3/4/5/6/7/8) + Variant E (111) as a method for signaling an alternative bit layout to any previously defined UUID.
- With that precedent set UUIDv6 could be converted to UUIDv1 (0001) + Variant E/F (111) as a method to signal the alternative encoding for UUIDv1 labeled as UUIDv1ε.
Possible text changes depending on feedback from this issue and #24
As such the Draft 01 goes from the current three definitions:
Name | Version | Variant | Description |
---|---|---|---|
UUIDv6 | 0110 | 10x (8/9/A/B) | UUIDv1 with Re-ordered Gregorian timestamp, explicit start sequence counter, no MAC address |
UUIDv7 | 0111 | 10x (8/9/A/B) | 36-bit Unix epoch timestamp, variable subsecond encoding up to nanoseconds using floating point math and fractions (38 bits allocated to subsecond precision). |
UUIDv8 | 1000 | 10x (8/9/A/B) | Relaxed implementation, any timestamp goes, future proof the specification, 122 bits to do as you desire with general guidelines of timestamp, sequence, random in that order |
To the possible four definitions in Draft 02:
Name | Version | Variant | Description |
---|---|---|---|
UUIDv1ε | 0001 | 111 (E/F) | UUIDv1 with Re-ordered Gregorian timestamp, explicit start sequence counter, no MAC address. (What is UUIDv6 in draft 01) |
UUIDv6 | 0110 | 10x (8/9/A/B) | 36-bit Unix epoch timestamp, variable subsecond encoding up to nanoseconds using floating point math and binary fractions (38 bits allocated to subsecond precision). (What is UUIDv7 in draft 01) |
UUIDv6ε | 0110 | 111 (E/F) | UUIDv6 with 36-bit Unix epoch timestamp, variable subsecond encoding up to nanoseconds using integers to represent total number of subseconds (30 bits allocated to subsecond precision). (Did not exist in draft 01) |
UUIDv7 | 0111 | 10x (8/9/A/B) | Relaxed implementation, any timestamp goes, future proof the specification, 122 bits to do as you desire with general guidelines of timestamp, sequence, random in that order. (What was UUIDv8 in draft 01) |
UUIDv8 | 1000 | 10x (8/9/A/B) | Goes away in draft 02 as it is no longer required. |
IS4Code
Metadata
Metadata
Assignees
Labels
DiscussionFurther information is requestedFurther information is requestedOut of ScopeTopics not in scope for the RFC/DraftTopics not in scope for the RFC/Draft