v0.5.0
Changelog v0.5.0
Release Date: 2026-06-02
⚠️ Breaking output change. TOON v3.1 alignment changes default encoder output (empty arrays, control-char escaping). Passempty_array_bare=False/escape_controls=Falsefor the previous behavior.
Features
Empty default features — cargo install etoon no longer needs --no-default-features (#20)
defaultfeatures are now empty, so the CLI binary builds without pulling in pyo3 and its proc-macro chain.- The Python wheel enables
pythonexplicitly via maturin ([tool.maturin] features), so wheel builds are unchanged. - Removed the redundant
--no-default-featuresfrom CI, release, andcargo publish.
TOON spec v3.1 alignment (#20)
- Empty arrays now emit canonical
[]/key: []instead of[0]:. A bare empty-array element keeps- [0]:per SPEC §9.2. - Control chars U+0000–U+001F escape to
\uXXXX(lowercase hex); named\n\r\tpreserved. - Key folding now restarts at any multi-key object (§13.4), not just the top level — without re-folding past
flattenDepthor sibling-collision stops. - Encode fixtures synced to the official
toon-format/specv3.1 set (+7 cases). - New options
empty_array_bare/escape_controls(defaulttrue; passfalsefor legacy output).
Performance
Faster float-heavy emit (~1.7×) (#20)
write_numberdropped a redundantto_string()probe that formatted every float twice beforewrite_float.
CI/CD
Test coverage + spec sync (#20)
- 17 new Rust unit tests (number canonicalization, empty-array forms, control escaping, depth folding); CI now runs
cargo test. - 159 spec fixtures pass.
- Added
benches/compare.py(+ Node sidecar) comparing etoon vs toons / py-rtoon / TS SDK on speed and byte-identical parity.
Pull Requests
| PR | Description |
|---|---|
| #20 | v0.5.0: empty default features + TOON spec v3.1 + faster float emit |
Full Changelog: v0.4.1...v0.5.0
VirusTotal Scan Results
etoon-linux-aarch64etoon-linux-x86_64etoon-macos-aarch64etoon-macos-x86_64etoon-windows-x86_64.exe
What's Changed
- perf: eliminate HashSet allocation in key-folding and optimize Python bytes handling by @coseto6125 in #18
- chore: release v0.4.1 by @coseto6125 in #19
- v0.5.0: empty default features + TOON spec v3.1 + faster float emit by @coseto6125 in #20
Full Changelog: v0.3.0...v0.5.0