Skip to content

v0.5.0

Choose a tag to compare

@coseto6125 coseto6125 released this 02 Jun 06:32
· 7 commits to main since this release
a99ed8d

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). Pass empty_array_bare=False / escape_controls=False for the previous behavior.

Features

Empty default features — cargo install etoon no longer needs --no-default-features (#20)

  • default features are now empty, so the CLI binary builds without pulling in pyo3 and its proc-macro chain.
  • The Python wheel enables python explicitly via maturin ([tool.maturin] features), so wheel builds are unchanged.
  • Removed the redundant --no-default-features from CI, release, and cargo 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 \t preserved.
  • Key folding now restarts at any multi-key object (§13.4), not just the top level — without re-folding past flattenDepth or sibling-collision stops.
  • Encode fixtures synced to the official toon-format/spec v3.1 set (+7 cases).
  • New options empty_array_bare / escape_controls (default true; pass false for legacy output).

Performance

Faster float-heavy emit (~1.7×) (#20)

  • write_number dropped a redundant to_string() probe that formatted every float twice before write_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

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