Validate wheel ABI, linkage, and runtime compatibility
HA
4d ago+1091+1091+0123456789012345678901234567890123456789-65-65-01234567890123456789
Fixes #448
Summary
- Inspect ELF, Mach-O, and PE headers and verify the wheel's platform tag, architecture, and bitness.
- Require the exported
xy_abi_versionsymbol and validate Linux, macOS, and Windows linkage policy. - Include the glibc 2.17 system libraries used by Rust and the Windows
bcryptprimitives.dllandntdll.dllimports. - Run an install and representative native-kernel smoke test for every published native wheel.
- Keep the release matrix and
expect-artifactscontract aligned, and document the supported prebuilt wheel targets.
Local validation
python -m pytest tests/test_verify_wheel.py tests/test_release_process.py tests/test_kernels.py -q: 193 passed, 1 skipped.python scripts/verify_ci_workflow.py: passed.- Ruff check/format and
git diff --check: passed. cargo test: 137 passed.scripts/abi_smoke.py: 140 checks passed against the built Windows DLL.- Built
xy-0.0.0-py3-none-win_amd64.whl; the verifier passed platform, ABI export, and linkage checks against the wheel and real DLL. uvx reflex-release@0.1.0a4 sync --check, Ruff, andgit diff --check: passed.
The native install/load matrix cannot run on this Windows development machine; the hosted release workflow must supply the cross-platform runtime proof. The docs-site pytest could not be collected locally because the docs environment dependency reflex_base is not installed.
Platform coverage
The release matrix retains all eleven previously published native wheel targets. Each wheel gets an install and native-kernel smoke on a matching native runner, with ARMv7 targets exercised in QEMU containers and musllinux wheels installed in Alpine. The artifact contract and installation/release documentation list the same complete target set.
Summary by CodeRabbit
-
Release Improvements
- Release packages target Linux glibc and musl (x86-64, aarch64, armv7), macOS Intel and Apple Silicon, and Windows x86, x64, and ARM64.
- Packages are verified for platform compatibility, required native components, and system linkage before release.
- Every package undergoes runtime smoke testing, including native NumPy kernel checks and installed-version validation.
-
Reliability
- Improved detection of incompatible architectures, missing native symbols, and unsupported system library requirements.
- Release checks now prevent packages built without native runtime support from being published.
-
Documentation
- Updated platform support and release-readiness guidance to reflect the verified package targets.