Repository navigation
v0.6.1 - Ruby in the browser
0.6.1 adds Ruby to the browser languages: HyperUuid now runs in a web page from C#, Rust, Python, Go, Swift and Ruby. It also fixes two install and typing papercuts from 0.6.0. The full list is in CHANGELOG.md.
Highlights
- Ruby in the browser: the new hyperuuid-wasm gem. ruby.wasm links extensions into the interpreter when rbwasm build makes it. So in the Gemfile you hand to rbwasm build, list hyperuuid-wasm instead of hyperuuid:
gem "hyperuuid-wasm"
gem "js"
- Same extension: you get the same Magnus extension as the platform gems, prebuilt for wasm32-wasip1, so HyperUuid::BACKEND is :native.
- No Rust toolchain: the gem carries one archive for Ruby 3.4 and one for 4.0, and --ruby-version picks.
- Shares an interpreter with HyperCast: hypercast-wasm links into the same interpreter.
- Tested in CI: CI builds each archive from the commit, attests it, and runs the gem linked into a fresh interpreter under Node and in headless Chrome.
See Ruby in the browser.
This was listed under "Proven, not shipped" in 0.6.0. @matsadler fixed both Magnus bugs that held it back (magnus#186, #187) and shipped them in Magnus 0.8.3 and 0.9.2 the day after they were filed. That's what made this release possible. Thank you, Mat!
Fixes
- Ruby: the platform gems no longer depend on fiddle. They never load it, but 0.6.0's still declared it, so Bundler on Alpine with Ruby 3.4 compiled fiddle from source for nothing, or failed without build-base and libffi-dev. Only the universal gem declares it now, and it loads Fiddle only when the Fiddle backend first runs.
- Python: a non-UUID where a uuid.UUID belongs (new_v5's namespace, the timestamp readers, the SQL-order conversions) now raises TypeError as the README promises, not AttributeError.
Upgrade notes
Drop-in for every binding. The Ruby extension now builds on Magnus 0.9.2 (from 0.8.2), with no API change. Python's change only turns an AttributeError into a TypeError.
Verifying
Every native library, static archive and wasm32-wasip1 archive in this release is built by CI and carries a build-provenance attestation:
gh attestation verify go/staticlib/linux_amd64/libhyperuuid.a
--repo SkunkWerkx/HyperUuid --signer-repo SkunkWerkx/.github
The gems, hyperuuid-wasm included, are attested by this repo's own release.yml, so --repo SkunkWerkx/HyperUuid alone verifies them. The Python wheels verify the same way, or with --owner SkunkWerkx.