0.6.0 — 2026-08-09
Rust native extension with PyO3 + maturin, hybrid dispatch, and automated multi-platform wheel publishing.
Added — Rust Native Extension (_rs/)
- PyO3 + maturin build —
pyproject.tomlswitched from hatchling to maturin. Rust crate atopenremap/_rs/compiles asopenremap._rust. - abi3 stable ABI — single wheel covers Python 3.10+ on each platform.
shannon_entropy(17.5× faster) — uses[u32; 256]fixed array instead of Python dict. No allocation in the hot path.is_low_entropy— threshold check, dispatches to Rust.find_changed_blocks(135× faster) — single-pass byte comparison with merge-threshold neighbourhood clustering.count_unique_in_window/find_unique_context— kept in Python. CPython'sbytes.find()(Two-Way substring search / FASTSEARCH) is faster than Rust'smemchr::memmemfor our window sizes. Rust implementations available but not dispatched by default.- Hybrid dispatch pattern — every accelerated function has a
_py_*pure-Python reference and a Rust fast path.import openremap._rustfailure falls back to Python silently._active_backend()reports which backend is live. - Oracle fuzz tests — 360 entropy oracle tests + 106 diff oracle tests. Random inputs fed to both backends; asserts bit-identical output.
Added — CI/CD
- Release workflow (
.github/workflows/release.yml) — triggered onv*tags. Matrix builds for Linux (maturin + manylinux_2_34), macOS, and Windows. Publishes to PyPI via OIDC trusted publishing withskip-existing: true. - Test workflow (
.github/workflows/ci.yml) — runs pytest across Python 3.10–3.14 on push and PR. Includes oracle fuzz tests to catch Rust ↔ Python divergence.
Changed
- README — repositioned as "offline-first engine"; renamed "Coverage" → "Supported ECUs"; moved screenshot to bottom; added Rust acceleration mention.
Removed
- Codecov — badge and integration removed.