Implement UUIDv1 UUIDv6 UUIDv7 and UUIDv8
Summary:
There is currently a proposal for new UUID to address concerns,
and create identifiers suitable for database purpose as primary key.
This change implements UUIDv6, UUIDv7 and UUIDv8 from that proposal.
Allow to convert back and forth between UUIDv1 and UUIDv6.
Allow to represent timestamps for UUIDv1/UUIDv6 or UUIDv7.
Allow to determine version and variant from a UUID.
References:
- RFC 4122 for UUIDv1
- I-D draft-peabody-dispatch-new-uuid-format-03 for UUIDv6 UUIDv7 UUIDv8
Ref T1717.
Test Plan: Full coverage of added code by unit tests.
Reviewers: dereckson
Reviewed By: dereckson
Maniphest Tasks: T1717
Differential Revision: https://devcentral.nasqueron.org/D2660