v0.2.0: No GIL holding it back 🪨
🪨 The rock learns to run without the GIL.
The 0.1.x line was about getting YAMLRocks off the ground, and, memorably, about getting it to actually ship. 0.2.0 is about what it does now that it is flying.
The headline: free-threaded CPython is a first-class, shipped target. No-GIL wheels (cp314t) for Linux, macOS, and Windows, on x86_64 and ARM, glibc and musl. Run a free-threaded interpreter and pip install yamlrocks just hands you a wheel: no compiler, no GIL, no asterisks. Parse and emit YAML from as many threads as you have, no lock of our own in the way.
It got quicker on the way, too: a faster hashing path for the parser's key cache, and a tighter integer formatter on the dump side. Pure speed, byte-for-byte identical output.
And the part you do not see: every single wheel we ship is now built and run against the full test suite on its own platform, architecture, and libc. x86_64, aarch64, armv7, ppc64le, Windows on ARM, Alpine/musl, all of it. There is also a security bump (PyO3 0.29) that quietly closed a couple of advisories. "Rock-solid" stopped being just the tagline and became the CI.
pip install yamlrocks📚 Docs: https://yaml.rocks
Same rock. Now it runs in parallel. 🪨
../Frenck
What's changed
✨ New features
- ⚡ Build, test, and ship free-threaded (cp314t) wheels @frenck (#48)
- ⚡ Build free-threaded wheels for emulated aarch64 and musllinux 64-bit @frenck (#51)
🚀 Enhancements
- ⚡ Speed up the decode key cache with ahash and grow the emit buffer @frenck (#37)
- ⚡ Format integers on the dumps path with itoa @frenck (#45)
🧰 Maintenance
- 👷 Consolidate testing into one build-and-test flow @frenck (#31)
- 👷 Test the musllinux wheels under a musl runtime (x86_64 native, ARM emulated) @frenck (#34)
- 👷 Run the suite against the manylinux i686 wheel natively @frenck (#38)
- 🔧 Refresh the oss-fuzz base image only once a month @frenck (#47)
- ⚡ Build, test, and ship free-threaded (cp314t) wheels @frenck (#48)
- 👷 Pin the in-container test pip installs for OpenSSF Scorecard @frenck (#50)
- ⬆️ Update gcr.io/oss-fuzz-base/base-builder-rust:latest Docker digest to c3b8c5a @renovate[bot] (#46)
- ⚡ Build free-threaded wheels for emulated aarch64 and musllinux 64-bit @frenck (#51)
⬆️ Dependency updates
13 changes
- ⬆️ Update gcr.io/oss-fuzz-base/base-builder-rust:latest Docker digest to ad58fbf @renovate[bot] (#30)
- ⬆️ Update dependency ubuntu to v24 @renovate[bot] (#33)
- ⬆️ Update dependency sharp to v0.35.1 @renovate[bot] (#35)
- ⬆️ Update CodSpeedHQ/action action to v4.17.5 @renovate[bot] (#32)
- ⬆️ Update dependency ruff to v0.15.17 @renovate[bot] (#36)
- ⬆️ Update python Docker tag to v3.14 @renovate[bot] (#39)
- ⬆️ Update Rust crate pyo3 to 0.29 @renovate[bot] (#44)
- ⬆️ Update gcr.io/oss-fuzz-base/base-builder-rust:latest Docker digest to b1e9615 @renovate[bot] (#42)
- ⬆️ Update dependency ty to v0.0.49 @renovate[bot] (#43)
- ⬆️ Update dependency maturin to v1.14.0 @renovate[bot] (#41)
- ⬆️ Update Rust crate smallvec to v1.15.2 @renovate[bot] (#40)
- ⬆️ Force esbuild >= 0.28.1 in the docs to clear two advisories @frenck (#49)
- ⬆️ Update gcr.io/oss-fuzz-base/base-builder-rust:latest Docker digest to c3b8c5a @renovate[bot] (#46)