This release fixes issues for SREs watching stability and regressions.
✓ No known CVEs patched in this version
Topics
+14 more
Summary
AI summaryFixed panic in category_auto_correct when processing over 1 million rows under memory pressure.
Full changelog
Fixed
category_auto_correct panic at 1M+ rows under memory pressure (PR #174 / #175, commit 2c7b33f). The old path called series.to_list() + Python Counter, materialising one PyString per input row. At ~2 GB measured peak RSS following a goldenmatch.auto_configure sample run, the PyString allocations inside Polars' to_list path returned NULL and pyo3 0.28.2 mapped that to PanicException("PyObject pointer is null") rather than MemoryError.
The function only ever needed n_unique distinct values, so the rewrite uses series.value_counts() instead — stays in Rust, no per-row Python allocation, fixes the crash on the goldenmatch scale-audit Round 2 1M synthetic fixture.
No API changes. No behavior changes for datasets that fit comfortably.
🤖 Generated with Claude Code
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About GoldenMatch
All releases →Related context
Related tools
Earlier breaking changes
- v3.1.0 `GOLDENMATCH_FRAME=polars` now requires the `[polars]` extra; raises error without it.
- vgoldencheck-v3.0.0 `inferred_type` emits neutral dtype vocabulary (str/int/uint/float/date/datetime/bool/other) instead of raw Polars dtypes.
- vgoldencheck-v3.0.0 'inferred_type' now emits a neutral dtype vocabulary instead of raw Polars dtype strings.
- vgoldencheck-v3.0.0 `scan_file`, `scan_dataframe`, and CLI `check` now run without Polars, using Arrow-native pyarrow.Table.
- v3.0.0 Result frames now return pyarrow.Table instead of Polars DataFrame.
Beta — feedback welcome: [email protected]