Skip to content

ci: native-runner wheels for all 4 arches; fix sdist readme path - #32

Merged
Xof merged 3 commits into
mainfrom
fix-wheels-release
Jun 7, 2026
Merged

ci: native-runner wheels for all 4 arches; fix sdist readme path#32
Xof merged 3 commits into
mainfrom
fix-wheels-release

Conversation

@Xof

@Xof Xof commented Jun 7, 2026

Copy link
Copy Markdown
Collaborator

Summary

The Build wheels release workflow (wheels.yml) was failing on the
v0.1.0-exilis-catalog-dep tag. This fixes it, plus a related sdist break.

Root causes

  • sdist: pyproject [project].readme = "../README.md" — maturin cannot put
    a .. path in an sdist. Now python/README.md.
  • wheels: the single ubuntu-latest+macos-latest matrix cross-built /
    emulated everything — aarch64 Linux ran ~6h under QEMU and was killed, and
    x86_64-on-arm64-macOS needed a rustup target that wasn't installed.

Fix

  • One runner per native platform: ubuntu-latest (x86_64), ubuntu-24.04-arm
    (aarch64), macos-latest (arm64 native + x86_64 cross). No QEMU.
  • CIBW_ARCHS_LINUX=auto64 drops the i686 build (its manylinux image can't
    install rustup — rustup-init needs libatomic.so.1); Rust is installed
    in-container for the Linux manylinux builds.
  • MACOSX_DEPLOYMENT_TARGET=11.0 so the x86_64 mac wheel tag matches rustc's
    10.12 floor (delocate had rejected the 10.9-tagged wheel).

Test Plan

A workflow_dispatch run on this branch is fully green in ~5 min —
cargo-test-gate, sdist, and all four wheels (Ubuntu x86_64 + aarch64,
macOS arm64 + x86_64) build and upload artifacts:
https://github.com/Xof/chisel/actions/runs/27104116260

Xof added 3 commits June 6, 2026 21:47
Replace the cross-compile/emulation matrix with one native runner per arch
(ubuntu-latest, ubuntu-24.04-arm, macos-13, macos-latest); each builds only
its native arch (CIBW_ARCHS=auto), and Rust is installed inside the manylinux
containers for the Linux wheels. This removes the two release-build failures:
x86_64-on-arm64-macOS needed a rustup target that was not installed, and
aarch64 Linux under QEMU ran 6h and was killed.

Also point pyproject [project].readme at python/README.md instead of
../README.md, so `maturin sdist` stops failing on the disallowed `..` path.
The first native-runner attempt surfaced two issues: CIBW_ARCHS=auto pulled in
an i686 (32-bit) build whose manylinux image cannot install rustup (rustup-init
fails on a missing libatomic.so.1), and the macos-13 (Intel) hosted runner
never got picked up (queued for hours).

Fix: CIBW_ARCHS_LINUX=auto64 builds only the native 64-bit arch per runner (no
i686), and macOS now builds both arches on the arm64 runner -- arm64 native and
x86_64 cross-compiled (with the x86_64-apple-darwin target; the cross-built
x86_64 mac wheel's test is skipped since it can't run on an arm64 host).
The x86_64 wheel built fine but delocate rejected it -- rustc's
x86_64-apple-darwin floor is 10.12, above cibuildwheel's default 10.9 tag.
Pinning both mac arches to 11.0 makes the wheel tag match the .so.
@github-actions

github-actions Bot commented Jun 7, 2026

Copy link
Copy Markdown

🚦 Bench results: PR vs main

⚠️ 2 regression(s) detected across 2 scenario/mode pair(s)

Scenario Mode Δ throughput Worst Δ
ycsb-a chisel-mem -2.7% p50 +21.8% ⚠️
mutation-log sqlite-strict -2.3% p99 +10.6% ⚠️
document-store chisel-mem +0.2%
document-store chisel-strict +12.6%
document-store redb-strict +0.2%
document-store sqlite-strict -0.2%
mutation-log chisel-mem -0.9%
mutation-log chisel-strict +10.8%
mutation-log redb-strict +0.0%
ycsb-a chisel-strict +13.9%
ycsb-a redb-strict -0.0%
ycsb-a sqlite-strict -0.1%
ycsb-b chisel-mem +0.3%
ycsb-b chisel-strict +14.1%
ycsb-b redb-strict -0.5%
ycsb-b sqlite-strict +0.5%
Per-scenario detail (4 metrics × cells)

document-store

Mode Throughput p50 p95 p99
chisel-mem 20849 ops/s → 20900 ops/s (+0.2%) 13.1 µs → 12.9 µs (-1.2%) 135.3 µs → 134.7 µs (-0.4%) 594.2 µs → 586.2 µs (-1.3%)
chisel-strict 2850 ops/s → 3207 ops/s (+12.6%) 22.3 µs → 21.1 µs (-5.6%) 1.09 ms → 972.2 µs (-10.8%) 2.33 ms → 2.02 ms (-13.4%)
redb-strict 4139 ops/s → 4146 ops/s (+0.2%) 19.2 µs → 18.6 µs (-3.1%) 584.5 µs → 580.4 µs (-0.7%) 1.62 ms → 1.56 ms (-3.1%)
sqlite-strict 5111 ops/s → 5101 ops/s (-0.2%) 21.8 µs → 21.7 µs (-0.5%) 439.9 µs → 447.2 µs (+1.7%) 1.39 ms → 1.39 ms (+0.2%)

mutation-log

Mode Throughput p50 p95 p99
chisel-mem 40569 ops/s → 40189 ops/s (-0.9%) 27.3 µs → 27.4 µs (+0.2%) 34.3 µs → 34.3 µs (+0.0%) 45.7 µs → 45.1 µs (-1.2%)
chisel-strict 1345 ops/s → 1491 ops/s (+10.8%) 868.1 µs → 806.4 µs (-7.1%) 1.23 ms → 1.12 ms (-8.7%) 2.03 ms → 1.81 ms (-10.9%)
redb-strict 1806 ops/s → 1807 ops/s (+0.0%) 193.8 µs → 198.0 µs (+2.2%) 295.2 µs → 322.3 µs (+9.2%) 30.30 ms → 29.51 ms (-2.6%)
sqlite-strict 4501 ops/s → 4397 ops/s (-2.3%) 133.2 µs → 138.9 µs (+4.3%) 360.0 µs → 388.6 µs (+7.9%) 516.7 µs → 571.7 µs (+10.6%) ⚠️

ycsb-a

Mode Throughput p50 p95 p99
chisel-mem 27257 ops/s → 26523 ops/s (-2.7%) 39.6 µs → 48.2 µs (+21.8%) ⚠️ 90.8 µs → 91.2 µs (+0.5%) 103.9 µs → 104.7 µs (+0.8%)
chisel-strict 1836 ops/s → 2092 ops/s (+13.9%) 564.0 µs → 517.7 µs (-8.2%) 1.30 ms → 1.15 ms (-11.9%) 1.73 ms → 1.45 ms (-16.3%)
redb-strict 2681 ops/s → 2680 ops/s (-0.0%) 160.2 µs → 159.0 µs (-0.7%) 262.5 µs → 255.4 µs (-2.7%) 465.0 µs → 454.8 µs (-2.2%)
sqlite-strict 145856 ops/s → 145774 ops/s (-0.1%) 7.0 µs → 7.0 µs (-0.4%) 8.9 µs → 8.9 µs (+0.2%) 11.0 µs → 10.8 µs (-2.4%)

ycsb-b

Mode Throughput p50 p95 p99
chisel-mem 160739 ops/s → 161262 ops/s (+0.3%) 4.2 µs → 4.2 µs (+1.0%) 47.9 µs → 48.2 µs (+0.7%) 54.6 µs → 54.4 µs (-0.4%)
chisel-strict 18014 ops/s → 20557 ops/s (+14.1%) 6.5 µs → 6.2 µs (-4.5%) 555.4 µs → 518.1 µs (-6.7%) 1.16 ms → 974.3 µs (-15.8%)
redb-strict 27220 ops/s → 27074 ops/s (-0.5%) 2.8 µs → 2.8 µs (+1.1%) 155.2 µs → 155.1 µs (-0.1%) 246.6 µs → 235.8 µs (-4.4%)
sqlite-strict 177272 ops/s → 178181 ops/s (+0.5%) 5.6 µs → 5.6 µs (-0.2%) 7.7 µs → 7.6 µs (-0.4%) 10.0 µs → 10.0 µs (-0.7%)
Generated by chisel-bench-diff at 2026-06-07T21:02:26Z. Compares PR HEAD against main. Never blocks merge — signal, not gate. Thresholds: throughput 5%, p50 5%, p95 10%, p99 10%.

@Xof
Xof merged commit 7997730 into main Jun 7, 2026
15 checks passed
@Xof
Xof deleted the fix-wheels-release branch June 7, 2026 22:00
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