Skip to content

Release 0.0.7: centralize benchmark behavior in Rust - #8

Merged
pomponchik merged 14 commits into
mainfrom
codex/release-0.0.7
Nov 3, 2026
Merged

pomponchik merged 14 commits into
mainfrom
codex/release-0.0.7

Conversation

@pomponchik

@pomponchik pomponchik commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Benchmark rules were independently implemented in the Rust, Python and Swift interfaces. This release moves aggregation, suite execution and stopping, argument validation, the benchmark catalog, defaults and calibration into the Rust core. Python and Swift call the C ABI and retain responsibility for host types, callbacks, signals and handle ownership.

The Python metadata snapshot is generated from Rust, so imports, calibration inspection and CLI help remain available without loading the native library. Native loading now precedes benchmark range validation, including CLI failure reporting. Numeric validation quietly rejects NaN/infinity; non-string unknown-name diagnostics raise TypeError. The documented public API and host comparison/conversion behavior are covered by regression tests.

The change also fixes native-loader and callback ownership, cancellation and repeated-signal cleanup, concurrent artifact publication, interrupted/forked publication lock ownership, installer copy policies and PyPy compatibility. Version 0.0.7 is synchronized across Python, Cargo and documented dependency pins.

While streaming intermediate results, the CLI blocks SIGINT in its parked observer so a process-directed interrupt reaches blocked main-thread output. The worker restores its exact previous signal mask after acknowledgement and after publication, wait or clear failures.

Explicit compatibility decisions are documented: Python retains host comparisons and converts each requested success value to bool once; CLI internal thread context inheritance is unspecified; native numeric and duration validation classifies stored values independently of FPU flushing. The final contract tests kill 10 directed mutants.

CI fixture corrections preserve strict behavioral checks while accepting legitimate scheduling outcomes: first-child no-work is retried only before the targeted conversion; stream policy is inspected at the actual first callback without assuming warmup; FPU measurements exclude automatic GC statistics. The three fixture families kill 18 directed mutants, with 2734 local Python tests passing.

Off-main CLI tests directly observe signal-handler ownership and accept only successful output or the exact documented no-work failure; nanosecond controls pin that boundary. Eight directed mutations cover signal setup/restoration, diagnostics, exit status, progress phase and final fraction.

Validation:

  • Full local Python regression suite with 100% statement and branch coverage; directed mutation evidence is summarized in tests/core-centralization-plan.md and the task's local audit reports.
  • A deterministic nanosecond first window checks that converter SIGINT tests reach their target after a permitted no-work outcome; strict retry guards preserve signal failures (9 mutants killed).
  • The POSIX observer handoff has 19 new regression scenarios; all detect directed mutants (7 variants), and the pre-fix code reproduces the blocked-output failure.
  • Rust runtime source coverage is 100%; added a direct Rust characterization of the generic numeric-copy C ABI, covering nulls, exact bits, aliases and reader ownership.
  • Swift tests, native consumers, source/wheel packaging and MSRV checks are exercised by the repository CI matrix before merging.

Publication uses the existing release workflow after merge: five native wheel targets, sdist, crates.io, C/native archives and universal Swift/XCFramework assets. No release tags are created manually.

@pomponchik
pomponchik merged commit d5564aa into main Nov 3, 2026
50 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant