Skip to content

gh-124621: Emscripten: Support pyrepl in browser #136931

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Jul 22, 2025

Conversation

hoodmane
Copy link
Contributor

@hoodmane hoodmane commented Jul 21, 2025

Basic support for pyrepl in Emscripten. Limitations:

  • requires JSPI
  • no signal handling implemented

As followup work, it would be nice to implement a webworker variant for when JSPI is not available and proper signal handling.

Because it requires JSPI, it doesn't work in Safari. Firefox requires setting an experimental flag. All the Chromiums have full support since May. Until we make it work without JSPI, let's keep the original web_example around.

cc @ambv

Basic support for pyrepl in Emscripten. Limitations:
* requires JSPI
* no signal handling implemented

As followup work, it would be nice to implement a webworker variant
for when JSPI is not available and proper signal handling.

Because it requires JSPI, it doesn't work in Safari. Firefox requires
setting an experimental flag. All the Chromiums have full support since
May. Until we make it work without JSPI, let's keep the original web_example
around.
@hoodmane hoodmane force-pushed the pyrepl-emscripten branch from 0f6928c to 733846c Compare July 21, 2025 14:08
@hoodmane
Copy link
Contributor Author

@adqm If you want to work on any of the followup tasks, let me know. I'm happy to meet / provide suggestions as well if you need them.

@hoodmane
Copy link
Contributor Author

!buildbot emscripten

@bedevere-bot
Copy link

🤖 New build scheduled with the buildbot fleet by @hoodmane for commit 50c9932 🤖

Results will be shown at:

https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F136931%2Fmerge

The command will test the builders whose names match following regular expression: emscripten

The builders matched are:

  • WASM Emscripten PR

@hoodmane hoodmane added topic-repl Related to the interactive shell OS-emscripten labels Jul 21, 2025
@hoodmane
Copy link
Contributor Author

!buildbot emscripten

@bedevere-bot
Copy link

🤖 New build scheduled with the buildbot fleet by @hoodmane for commit c83eb65 🤖

Results will be shown at:

https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F136931%2Fmerge

The command will test the builders whose names match following regular expression: emscripten

The builders matched are:

  • WASM Emscripten PR

@hoodmane hoodmane changed the title gh-124621: Emscripten: Support pyrepl gh-124621: Emscripten: Support pyrepl in browser Jul 21, 2025
@hoodmane
Copy link
Contributor Author

!buildbot emscripten

@bedevere-bot
Copy link

🤖 New build scheduled with the buildbot fleet by @hoodmane for commit 60e65f5 🤖

Results will be shown at:

https://buildbot.python.org/all/#/grid?branch=refs%2Fpull%2F136931%2Fmerge

The command will test the builders whose names match following regular expression: emscripten

The builders matched are:

  • WASM Emscripten PR

@ambv ambv added the needs backport to 3.14 bugs and security fixes label Jul 22, 2025
@ambv ambv merged commit c933a6b into python:main Jul 22, 2025
51 checks passed
@miss-islington-app
Copy link

Thanks @hoodmane for the PR, and @ambv for merging it 🌮🎉.. I'm working now to backport this PR to: 3.14.
🐍🍒⛏🤖

@miss-islington-app
Copy link

Sorry, @hoodmane and @ambv, I could not cleanly backport this to 3.14 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker c933a6bb329bb97bc7e448388dad1b74f7ca4baa 3.14

hoodmane added a commit to hoodmane/cpython that referenced this pull request Jul 22, 2025
Basic support for pyrepl in Emscripten. Limitations:
* requires JSPI
* no signal handling implemented

As followup work, it would be nice to implement a webworker variant
for when JSPI is not available and proper signal handling.

Because it requires JSPI, it doesn't work in Safari. Firefox requires
setting an experimental flag. All the Chromiums have full support since
May. Until we make it work without JSPI, let's keep the original web_example
around.

Co-authored-by: Łukasz Langa <[email protected]>
Co-authored-by: Éric <[email protected]>
(cherry picked from commit c933a6b)
@hoodmane hoodmane deleted the pyrepl-emscripten branch July 22, 2025 10:28
@bedevere-app
Copy link

bedevere-app bot commented Jul 22, 2025

GH-136978 is a backport of this pull request to the 3.14 branch.

@bedevere-app bedevere-app bot removed the needs backport to 3.14 bugs and security fixes label Jul 22, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
OS-emscripten topic-repl Related to the interactive shell
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants