packages/rust/extensions/native) accelerates the CPU-heavy components below. Under reference-mode the compiled path is the reference implementation and pure-Python is the byte-identical fallback — output is the same either way; native only changes wall-clock.
The gate
One env var,GOLDENMATCH_NATIVE, read in goldenmatch/goldenmatch/core/_native_loader.py:
GOLDENMATCH_NATIVE=auto(default, or unset) — run native for any component whose kernel symbol is present on the loaded wheel, except the known-divergent components below.GOLDENMATCH_NATIVE=0— force the pure-Python fallback everywhere.GOLDENMATCH_NATIVE=1— require native; raise if the kernel isn’t importable (the CI parity lane).
goldenmatch._native (local dev / parity lane), then the distributed goldenmatch_native._native wheel (pip install goldenmatch[native]). When neither is importable, every path runs pure-Python unchanged.
The Fellegi-Sunter block-scoring path has its own gate, GOLDENMATCH_FS_NATIVE (default-on; the Rust rapidfuzz path is the reference, =0 forces the pure-Python fallback).
Components
Each component maps to the native kernel symbol(s) itsauto call site invokes (the floor symbol first — a component is native-capable when any listed symbol is present, so an older wheel stays wheel-skew safe). A ✓ in Parity-signed marks a component that cleared the byte-exact sign-off recorded in _GATED_ON.
How parity stays honest
A component joins the native path only after a parity test proves its kernel is byte-identical (or integer-exact) to the pure-Python reference. CI runs aGOLDENMATCH_NATIVE=1 lane that builds the wheel and asserts native == pure-Python, and scripts/check_native_symbols.py reconciles the host’s kernel references against the crate’s wrap_pyfunction! exports so a referenced-but-unregistered symbol fails loudly. Because output is identical with or without the wheel, toggling the gate never changes a result — only speed.