This release includes 4 breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+14 more
ReleasePort's take
Light signalThe `scan_file`, `scan_dataframe`, and CLI `check` commands now operate using Arrow‑native pyarrow.Table without Polars, reflecting a shift in runtime dependencies.
Why it matters: All scanning APIs and the check command no longer depend on Polars; operators must ensure pyarrow is installed for continued functionality.
Summary
AI summaryUpdates Breaking, Install, and pl.DataFrame across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Breaking | High |
`scan_file`, `scan_dataframe`, and CLI `check` now run without Polars, using Arrow-native pyarrow.Table. `scan_file`, `scan_dataframe`, and CLI `check` now run without Polars, using Arrow-native pyarrow.Table. Source: llm_adapter@2026-07-12 Confidence: high |
— |
| Breaking | Medium |
'inferred_type' now emits a neutral dtype vocabulary instead of raw Polars dtype strings. 'inferred_type' now emits a neutral dtype vocabulary instead of raw Polars dtype strings. Source: llm_adapter@2026-07-12 Confidence: low |
— |
| Breaking | Low |
`inferred_type` emits neutral dtype vocabulary (str/int/uint/float/date/datetime/bool/other) instead of raw Polars dtypes. `inferred_type` emits neutral dtype vocabulary (str/int/uint/float/date/datetime/bool/other) instead of raw Polars dtypes. Source: granite4.1:30b@2026-07-13-audit Confidence: low |
— |
| Feature | Low |
Optional install extras `[native]`, `[baseline]`, and `[polars]` provide compiled kernel accelerator, scipy+Polars stats, and Polars convenience overload respectively. Optional install extras `[native]`, `[baseline]`, and `[polars]` provide compiled kernel accelerator, scipy+Polars stats, and Polars convenience overload respectively. Source: llm_adapter@2026-07-12 Confidence: high |
— |
| Dependency | Medium |
'pyarrow' is now a base dependency; 'polars' moved to optional extras. 'pyarrow' is now a base dependency; 'polars' moved to optional extras. Source: llm_adapter@2026-07-12 Confidence: high |
— |
| Bugfix | Medium |
Sampling is now an owned deterministic sample, stable across runs and workers. Sampling is now an owned deterministic sample, stable across runs and workers. Source: llm_adapter@2026-07-12 Confidence: high |
— |
Full changelog
The Flip: the default scan path is now Arrow-native and Polars-free.
Breaking
scan_file/scan_dataframe/ the CLIcheckrun WITHOUT Polars. The scan frame is a pyarrow.Table; profiling routes through the fused Rust/Arrow kernels (with a pyarrow.compute fallback when the native kernel is absent).pyarrowis now a BASE dependency.polarsis NOT: it moved to the[baseline]extra (the opt-in scipy stat/drift/correlation subsystems still use it) and the[polars]extra (thescan_dataframe(pl.DataFrame)convenience overload).inferred_typenow emits a neutral dtype vocabulary (str/int/uint/float/date/datetime/bool/other) instead of raw Polars dtype strings.- Sampling is now an owned deterministic sample (was the Polars-PRNG
sample(seed=42)), stable across runs and workers.
Contract
Non-stat findings are byte-identical to the 2.x Polars path (verified by a finding-set differential: strict Jaccard 1.000 across a 9-dataset corpus, 0 kernel-bug divergences). The only intended differences are the neutral dtype strings and the owned sample.
Install
pip install goldencheck-- Arrow-native scanning, no Polars.pip install goldencheck[native]-- adds the compiled kernel accelerator.pip install goldencheck[baseline]-- adds the scipy + Polars stat/drift/correlation features.
See packages/python/goldencheck/CHANGELOG.md for details.
Breaking Changes
- `scan_file`, `scan_dataframe`, and CLI `check` now operate without Polars, using a pyarrow.Table scan frame and fused Rust/Arrow kernels (fallback to pyarrow.compute when native kernel absent).
- `pyarrow` is promoted from an optional to a BASE dependency; `polars` is removed from the base install and moved to the `[baseline]` extra for scipy stat/drift/correlation features and the `[polars]` extra for `scan_dataframe(pl.DataFrame)` convenience overload.
- `inferred_type` output changes from raw Polars dtype strings to a neutral vocabulary (str/int/uint/float/date/datetime/bool/other).
- Sampling is now an owned deterministic sample, replacing the previous Polars‑PRNG `sample(seed=42)` implementation.
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.
- v3.0.0 Result frames now return pyarrow.Table instead of Polars DataFrame.
- vgoldencheck-v2.0.0 Polars moved from base dependency to optional `[polars]` extra.
- v2.0.0 Removes internal `_scale_aware_backend` backend selector.
- v2.0.0 Removes `RunHistory.cheapest_healthy()` method.
Beta — feedback welcome: [email protected]