Skip to content

crick: add build-crick.yml for riscv64 wheels - #1192

Merged
luhenry merged 2 commits into
mainfrom
crick
Sep 7, 2026
Merged

crick: add build-crick.yml for riscv64 wheels#1192
luhenry merged 2 commits into
mainfrom
crick

Conversation

@luhenry

@luhenry luhenry commented Sep 6, 2026

Copy link
Copy Markdown
Member

Compiles crick's t-digest, space-saving, and summary-stats Cython extensions against numpy's C API into a wheel. Upstream publishes no riscv64 wheel.

Mirrors upstream's wheels.yml.

Differs from upstream

  • Nothing beyond the riscv64 image.

Matrix: cp310-cp313, no cp314/cp314t - upstream's own CI (and requires-python) covers only 3.10-3.13; cp314 segfaults building a crick object during test collection and cp314t's test_object_reference_counting fails because free-threaded CPython's immortal objects break plain sys.getrefcount() arithmetic, both unrelated to riscv64.

Testing

  • Adds numpy to CIBW_TEST_REQUIRES - crick doesn't declare it as a runtime dependency even though the compiled extensions call numpy's C API at import time.

License: OK

Patches

  • 0001-Fix-sequence-point-error-in-stats_kurt.patch - Backport dask/crick@720de70c. Redundant self-assignment flagged as undefined behaviour by strict compilers; reproduces off riscv64 too.
  • 0002-Avoid-dereferencing-a-type-punned-pointer-in-asint64.patch - Backport dask/crick@70d9dc24. Strict-aliasing violation that can miscompile under -O2/-O3; reproduces off riscv64 too. Both landed on upstream main after the 0.0.8 tag; no release contains them yet.

Built on cp312; 69 passed, 30 skipped.

Cython statistics library (t-digest, summary stats) with a numpy
build-time dependency. Backports two small upstream fixes (sequence
point, type-punning) that landed on main after the 0.0.8 tag but
before any release.
Neither cp314 nor cp314t is upstream-supported (tests.yml stops at
3.13, no free-threaded env or classifiers); cp314 segfaults building
a crick object during test collection and cp314t's
test_object_reference_counting fails because free-threaded CPython's
immortal objects break sys.getrefcount() arithmetic -- both unrelated
to riscv64. Also fix the wheel-contents check: the licenses/ directory
entry itself matched the .dist-info/licenses/ glob and rsplit to an
empty string.
@luhenry
luhenry merged commit 1fce1f7 into main Sep 7, 2026
10 checks passed
@luhenry
luhenry deleted the crick branch September 7, 2026 08:06
@luhenry luhenry mentioned this pull request Sep 7, 2026
@luhenry luhenry linked an issue Sep 7, 2026 that may be closed by this pull request
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.

crick riscv64 support

1 participant