Skip to content

v0.5.0

Choose a tag to compare

@MejiroRina MejiroRina released this 27 Aug 21:24
· 45 commits to main since this release
v0.5.0
a797c3e

Makes the PNG auto filter adaptive at every compressing effort, which shrinks default PNG output, and lets other Python threads run while large results are copied. Review the breaking change if you depend on the exact PNG bytes of 0.4.x.

⚠️ Breaking changes

  • The PNG auto filter now writes adaptively filtered scanlines at every compression effort. Before, auto filtered only at the fast effort, so raising png_compression to default, best or levels 1-9 gave larger and slower output on continuous-tone content (+13% size and 2.1-2.6x CPU from fast to default on a 2,075-texture corpus). Decoded pixels are unchanged, but the default PNG bytes of exports and encodes differ from 0.4.x. To keep the old bytes, pass png_filter: none / --png-filter none, or pin 0.4.x. Level 0 stays unfiltered, and fast output is byte-identical to 0.4.x. (b59be94)

Performance

  • Release the GIL in the Python binding while copying payloads of 64 KiB or more into bytes results (rgba, audio and binary payloads, JSON, FBX/OBJ, encoded images). Copying a 4 MiB rgba across 8 threads goes from 5,385 to 7,542 it/s, with no measurable single-thread cost. (85f76ee)

Artifacts

  • Python: unity-rs 0.5.0 on PyPI (cp39-abi3 wheels for six platforms and an sdist).
  • Rust: unity-rs-core and unity-rs-cli 0.5.0 on crates.io.
  • CLI archives (unity-rs-cli-0.5.0-<platform>) and Node.js addon packages (unity-rs-node-0.5.0-<platform>.tgz) for Linux, macOS and Windows on x64 and arm64: attached below, with checksums in SHA256SUMS.
Maintenance
  • Clear stale core crate archives and Python wheels and sdists before local CI builds. (7552fdd)
  • Bump the workspace version to 0.5.0. (a797c3e)

Full Changelog: v0.4.0...v0.5.0