Skip to content

UUID module

This module provides a way to generate universally unique identifiers (UUID) as specified in RFC 4122. The UUID is provided as a string representation by reading the uuid pseudo-variable or calling the uuid script function.

This module does not depend on other modules.

  • libuuid - part of the util-linux package, can be downloaded from: ftp://ftp.kernel.org/pub/linux/utils/util-linux/

The module does not export any parameters.

The $uuid variable returns a newly generated version 4 UUID based on high-quality randomness from /dev/urandom, if available. Otherwise, a version 1 UUID (based on current time and the local ethernet MAC address) will be generated.

$uuid usage
xlog("generated uuid: $uuid\n");

uuid(out_var, [version], [namespace], [name])

Section titled “uuid(out_var, [version], [namespace], [name])”

Generates a new UUID.

  • out_var (var) - an output variable to return the generated UUID.
  • version (string, optional) - UUID version number. The supported values are:
    • 0 - a RFC version 4 or version 1 UUID will be generated, depending on the availability of high-quality randomness from /dev/urandom. This is the default behavior, if the version parameter is missing.
    • 1 - version 1 UUID based on current time and the local ethernet MAC address
    • 3 - version 3 UUID generated by hashing a namespace identifier and name via MD5.
    • 4 - version 4 UUID based on a high-quality random number generator. If not available, a pseudo-random generator will be substituted.
    • 5 - version 5 UUID generated by hashing a namespace identifier and name via SHA-1.
  • namespace (string, optional) - the namespace identifier used with UUID version 3 and 5. This must be a valid UUID, see RFC 4122 Appendix C for some predefined values.
  • name (string, optional) - the name used with UUID version 3 and 5.

If UUID version 1 is used, the function will return the value 2 if the UUID was generated in an unsafe manner. This refers to the posibility of two concurrently running processes generating the same UUID, in cases where synchronization mechanisms are not available (more details can be found in the uuid_generate man pages of libuuid).

This function can be used from any route.

Top contributors by DevScore(1), authored commits(2) and lines added/removed(3)

#NameDevScoreCommitsLines++Lines—
1.Vlad Patrascu (@rvlad-patrascu)943695
2.Stefan Darius (@dariusstefan)8417261
3.John Burke (@john08burke)536315
4.Razvan Crainea (@razvancrainea)5332
5.Maksym Sobolyev (@sobomax)4244
6.Norman Brandinger (@NormB)3111

(1) DevScore = author_commits + author_lines_added / (project_lines_added / project_commits) + author_lines_deleted / (project_lines_deleted / project_commits)

(2) including any documentation-related commits, excluding merge commits

(3) ignoring whitespace edits, renamed files and auto-generated files

#NameCommit Activity
1.Stefan Darius (@dariusstefan)Jun 2026 - Jul 2026
2.Razvan Crainea (@razvancrainea)Aug 2019 - Jun 2026
3.Maksym Sobolyev (@sobomax)Feb 2023 - Feb 2023
4.Norman Brandinger (@NormB)Aug 2021 - Aug 2021
5.Vlad Patrascu (@rvlad-patrascu)Jun 2019 - Feb 2021
6.John Burke (@john08burke)Feb 2021 - Feb 2021

(1) including any documentation-related commits, excluding merge commits

Last edited by: Razvan Crainea (@razvancrainea), Norman Brandinger (@NormB), John Burke (@john08burke), Vlad Patrascu (@rvlad-patrascu).

All documentation files (i.e. .md extension) are licensed under the Creative Common License 4.0