Patch release: portable PyPI wheels
This release fixes broken 3.3.8 wheels. If import anuga from the 3.3.8 PyPI wheel crashed with an illegal instruction (SIGILL) — commonly on Google Colab and other non-AVX-512 hosts — upgrading to 3.3.9 resolves it:
pip install --upgrade anuga
What was wrong
The 3.3.8 build compiled the OpenMP extension modules with -march=native, which baked the build runner's instruction set into the wheels. A wheel built on an Intel Sapphire Rapids CI runner therefore required AVX-512 — including in the Cython module-init code — and died at import anuga on any CPU without it. Because the flag tracked whichever runner built the release, the problem was intermittent across versions.
The fix
-march=native was removed from the build (meson.build); wheels now build against the toolchain's portable baseline (-march=nocona). Verified on the CI artifacts: every extension module is x86-64-baseline/v2 with zero AVX-512 instructions (down from x86-64-v4 in 3.3.8).
Wheels now run on any x86-64 CPU (SSE4.2 / 2009+), including Colab. For a build tuned to your own hardware, install from source or via conda.
Changes
- Build portable wheels: drop
-march=nativefromopenmp_c_args(#204)
Full changelog: https://github.com/anuga-community/anuga_core/compare/3.3.8...3.3.9
Note: 3.3.8 on PyPI should be yanked so pip stops selecting the broken wheels.