stduuid – A C++ library for universally unique identifiers

I have recently submitted a proposal for a new standard library for universally unique identifiers. The library is called uuid and the paper, P0959R0 – A Proposal for a Universally Unique Identifier Library, is available on Github. The design of the library is inspired by the Boost Uuid Library and the Crossuuid library. I got lots of great feedback that shaped the formed of the proposal from people on the ISO C++ Standard – Future Proposals forum.

I have made an implementation of the library, which is called stduuid, and again, it available on github. This implementation is supported on all major operating systems: Windows, Linux and Mac OS.

Motivation

Universally unique identifiers (uuid), also known as Globally Unique Identifiers (guids), are commonly used in many types of applications to uniquely identify data. A standard uuid library would benefit developers that currently have to either use operating system specific APIs for creating new uuids or resort to 3rd party libraries, such as boost::uuid.

UUIDs are 128-bit numbers that are for most practical purposes unique, without depending on a central registration authority for ensuring their uniqueness. Although the probability of UUID duplication exists, it is negligible. According to Wikipedia, “for there to be a one in a billion chance of duplication, 103 trillion version 4 UUIDs must be generated.” UUID is an Internet Engineering Task Force standard described by RFC 4122.

The library proposed on this paper is a light one: it enables developers to generate random and name-based UUIDs, serialize and deserialize UUIDs to and from strings, validate UUIDs and other common operations.

Using the library

The following is a list of examples for using the library:

  • Creating a nil UUID

  • Creating a new UUID

  • Creating a new UUID with a default random generator

  • Creating a new UUID with a particular random generator

  • Creating a new UUID with the name generator

  • Create a UUID from a string

    or

  • Creating a UUID from an array

    or

  • Comparing UUIDS

  • Swapping UUIDS

  • Converting to string

  • Iterating through the UUID data

  • Using with an orderered associative container

  • Using in an unordered associative container

  • Hashing UUIDs

You can read more about the library, including the proposed paper, on Github. I encourage you to try the library and provide feedback, whether here or on github, on the issues or the suggestions that you might have.

2 Comments on "stduuid – A C++ library for universally unique identifiers"


  1. Interesant, felicitari și pt prezentarea de ieri, a fost mișto, păcat că nu ai stat și la party 🙂


  2. This looks like it will be quite handy. Any plans to make this available via vcpkg?

Leave a Reply