Skip to content

v0.1.0 - The first coordinated release

Choose a tag to compare

@buvinghausen buvinghausen released this 30 Aug 23:55
· 141 commits to master since this release

One RFC 9562-compliant UUID engine, written once in Rust, called directly from C#, Java, Go, Swift, Ruby, PHP, and Python — and as of this tag, every one of those eight is real: published, verified with an actual external install (not just a green CI run), and generating byte-identical UUIDs from the same input on every platform.

This is the first tag published through HyperUuid's own release pipeline rather than by hand, and the first time all eight bindings have gone out from one coordinated version. Nothing here is a placeholder or a "coming soon" — see State of the union for exactly what's been proven on which platform, and how.

Install

Language
Rust cargo add hyperuuid crates.io
C# dotnet add package HyperUuid nuget.org
Java io.github.skunkwerkx:hyperuuid:0.1.0 Maven Central
Python pip install hyperuuid PyPI
Ruby gem install hyperuuid RubyGems
PHP composer require skunkwerkx/hyperuuid Packagist
Swift .package(url: "https://github.com/SkunkWerkx/HyperUuid", from: "0.1.0") git tag
Go go get github.com/SkunkWerkx/HyperUuid/go@go/v0.1.0 git tag

Go's module path is versioned under its own go/vX.Y.Z tag (a Go modules requirement for a subdirectory module) rather than the bare tag every other binding uses — that's already pushed alongside this release, not a separate step.

The scoreboard

Real numbers, not adjusted for story — full receipts and methodology in the root README and each binding's own.

Language Generation vs. the platform's own call
Rust 13-16x faster than the uuid crate (v6/v7)
Java 5-9x faster than UUID.randomUUID()
C# 5.7-8.3x faster than Guid.NewGuid(), zero allocation
Ruby 1.9-2.9x faster than SecureRandom.uuid
Python 1.6-4.2x faster than uuid.uuid4()-uuid7()
PHP 1.9-2x faster than a naive inline v4 (PHP core has no UUID call at all)
Swift faster outright, every call, vs. Foundation.UUID()
Go slower per call — the deliberate control group

Go stays in the roster losing on purpose: google/uuid is pure compiled Go with no FFI boundary at all, and the honest result is what makes the other seven wins credible rather than a foregone conclusion.

RFC 9562 coverage

v4 (random), v5 (deterministic, namespace-based), v6 and v7 (time-sortable, with a real monotonic counter for v7) on every binding, plus batch generation, timestamp extraction, and SQL Server byte-ordering for clustered uniqueidentifier columns. v1 and v3 are deliberately not implemented — the RFC itself treats them as superseded by v6 and v5 respectively.

What's known and out of scope, on purpose

  • Free-threaded CPython (3.13t/3.14t) isn't covered yet — pip install fails outright there today. Documented, not silently broken; see python/README.md.
  • WebAssembly is proven for Rust and C# only; Go/Swift/Ruby/PHP are structurally blocked by real gaps in their own WASM toolchains (not a HyperUuid limitation), and Java's gap is a missing FFM implementation in every current WASM compiler. Full accounting in the root README.
  • PHP skips win-arm64 — PHP itself has never shipped a native Windows ARM64 build; it runs under x64 emulation there, already exercised by the win-x64 leg.

Verification

Every binding in this release was pulled from its real, live registry (or resolved via its real git tag) into a fresh scratch project and used to generate a real UUID — not just a passing CI job. The same (DNS, "example.com") input produces the identical v5 UUID on all eight, byte for byte.

Thanks

If you're reading this because you care about honest performance work rather than marketing claims — that's exactly the audience this project was built for.