Skip to content

Build Pyodide (WebAssembly) wheels - #2

Merged
lemire merged 1 commit into
mainfrom
pyodide
Nov 14, 2026
Merged

lemire merged 1 commit into
mainfrom
pyodide

Conversation

@lemire

@lemire lemire commented Nov 14, 2026

Copy link
Copy Markdown
Member

Publishes WebAssembly wheels for Pyodide, so that micropip.install("fastpybase64") works in the browser. PyPI accepts these wheels (PEP 783 pyemscripten_*_wasm32 platform tags).

Changes

  • buildwheels.yml: a build_pyodide job (cibuildwheel 4.3.5 with CIBW_PLATFORM: pyodide), whose wheels are uploaded to PyPI with the others. It builds one wheel per Pyodide ABI:
    • cp313-cp313-pyemscripten_2025_0_wasm32 (Pyodide 0.28, 0.29)
    • cp314-cp314-pyemscripten_2026_0_wasm32 (Pyodide 314)
    • cp315-cp315-pyemscripten_2026_5_wasm32
  • pyproject.toml: [tool.cibuildwheel.pyodide] runs the tests with python -m pytest (in a Pyodide venv, the pytest script starts with a shebang to a shell script, which macOS cannot run).
  • No test changes: nothing in the tests needs threads.
  • tests.yml also gets a Pyodide job, so pull requests build and test the WebAssembly wheels.

Native builds and wheels are unchanged: no source file is modified, and the new cibuildwheel settings apply to the Pyodide platform only.

Checked

The Pyodide job, as configured here, was run locally (macOS arm64, cibuildwheel 4.3.5): the three wheels build and pass the tests in Node (312 passed on each).

The release workflow builds wheels for Pyodide with cibuildwheel
(CIBW_PLATFORM: pyodide), one per Pyodide ABI (cp313, cp314, cp315), and
uploads them to PyPI with the others. The Pyodide tests run with
python -m pytest. Native builds are unchanged.
@lemire
lemire merged commit ff96678 into main Nov 14, 2026
48 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