Skip to content

Fix Pyodide Emscripten platform tags - #3191

Merged
messense merged 1 commit into
PyO3:mainfrom
messense:fix-pyodide-pep783-tags
May 25, 2026
Merged

Fix Pyodide Emscripten platform tags#3191
messense merged 1 commit into
PyO3:mainfrom
messense:fix-pyodide-pep783-tags

Conversation

@messense

Copy link
Copy Markdown
Member

Emit PEP 783 pyemscripten_* platform tags whenever maturin receives a Pyodide ABI/platform version, including the historical PYODIDE_ABI_VERSION path used for Python 3.13. This matches current Pyodide docs and avoids generating pyodide_2025_0_wasm32, which PyPI rejects.

@messense messense linked an issue May 19, 2026 that may be closed by this pull request
2 tasks
@messense
messense force-pushed the fix-pyodide-pep783-tags branch 2 times, most recently from c3f9510 to da58093 Compare May 19, 2026 13:41
@messense
messense requested a review from Copilot May 23, 2026 07:26

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request updates maturin’s Emscripten/Pyodide platform-tag resolution to consistently emit PEP 783 pyemscripten_*_wasm32 tags whenever a Pyodide ABI/platform version is provided (including the historical PYODIDE_ABI_VERSION path). It also adjusts the Emscripten runtime smoke test to remain compatible with older Pyodide runtimes that still validate legacy pyodide_*_wasm32 wheel filenames.

Changes:

  • Update Emscripten platform-tag cascade to always produce pyemscripten_{year}_{patch}_wasm32 for both PEP 783 and historical Pyodide ABI inputs.
  • Adjust CI/nox/docs to reflect the new behavior and environment-variable expectations.
  • Add a runtime-test compatibility copy/rename for Pyodide 0.28/0.29 wheel filename validation.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tests/emscripten_runner.js Adds runtime-aware wheel path selection and legacy filename compatibility for older Pyodide runtimes.
src/target/platform_tag.rs Changes tag cascade to always emit PEP 783 pyemscripten_* tags for Pyodide ABI/platform version inputs; updates/extends unit tests.
src/ci/github/render.rs Updates generated GitHub Actions Emscripten setup to export PEP 783 platform version when available, else fall back to historical key.
noxfile.py Aligns expected wheel tag and exported env vars with always-pyemscripten_* behavior.
guide/src/environment-variables.md Updates documentation to describe historical PYODIDE_ABI_VERSION mapping to PEP 783 pyemscripten_* tags.
.github/workflows/test.yml Updates CI comments to reflect the intended pyemscripten_* tags for current Pyodide versions.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread tests/emscripten_runner.js
Comment thread src/target/platform_tag.rs Outdated
@messense
messense force-pushed the fix-pyodide-pep783-tags branch from da58093 to 68fb316 Compare May 25, 2026 11:55
Emit PEP 783 `pyemscripten_*` platform tags whenever maturin receives a Pyodide ABI/platform version, including the historical `PYODIDE_ABI_VERSION` path used for Python 3.13. This matches current Pyodide docs and avoids generating `pyodide_2025_0_wasm32`, which PyPI rejects.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 7 out of 7 changed files in this pull request and generated no new comments.

@messense
messense merged commit d64bdd3 into PyO3:main May 25, 2026
45 checks passed
@messense
messense deleted the fix-pyodide-pep783-tags branch May 25, 2026 13:31
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Jun 23, 2026
## 1.14.1

* Bump uraimo/run-on-arch-action to v3 to fix pytest job ([#3221](PyO3/maturin#3221))
* Fix platform tag logic to generate the same as cpython on AIX ([#3220](PyO3/maturin#3220))
* Bump pyo3-introspection ([#3227](PyO3/maturin#3227))
* Upgrade cargo-zigbuild & cargo-xwin ([#3228](PyO3/maturin#3228))
* Fix issues around crates enabling abi3 and abi3t features ([#3226](PyO3/maturin#3226))
* Add PEP 740 publish attestations to PyPI releases ([#3230](PyO3/maturin#3230))
* Set PYO3_PYTHON to run scripts for stable ABI builds ([#3233](PyO3/maturin#3233))
* Fix shell quoting in CI scripts ([#3231](PyO3/maturin#3231))

## 1.14.0

* Support parent-relative pyproject metadata in sdists ([#3182](PyO3/maturin#3182))
* Update PyPI platform tag validation ([#3187](PyO3/maturin#3187))
* Maint: update setup emsdk action in generate-ci ([#3194](PyO3/maturin#3194))
* Fix: only shim bin wheels during auditwheel repair ([#3197](PyO3/maturin#3197))
* Fix: avoid editable ELF truncation from stale hardlinks ([#3199](PyO3/maturin#3199))
* Fix Pyodide Emscripten platform tags ([#3191](PyO3/maturin#3191))
* Use pax instead of GNU headers for tar ([#3203](PyO3/maturin#3203))
* Feat: add default exclude `__pycache__` and `*.pyc` files ([#3202](PyO3/maturin#3202))
* Add support for finding free-threaded interpreters for `--find-interpreters` ([#3206](PyO3/maturin#3206))
* Stubs: also generate them for mixed PyO3 projects ([#3211](PyO3/maturin#3211))
* Don't depend on CFFI on PyPy ([#3213](PyO3/maturin#3213))
* Support pyo3 abi3t features on Python3.15 and PyO3 0.29 ([#3113](PyO3/maturin#3113))
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.

Maturin uses outdated platform tag for Emscripten

2 participants