Repository navigation
v0.1.0 - The first coordinated 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 installfails 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.