This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Consider supporting emscripten/webassembly as a build target
Type: enhancement Stage: patch review
Components: Build Versions: Python 3.11
process
Status: open Resolution:
Dependencies: 23325 33393 41498 45881 45886 45898 46383 46390 46408 47162 47176 47196 47197 Superseder:
Assigned To: Nosy List: Roman Yurchak, Simon Biggs, barry, brett.cannon, christian.heimes, corona10, erlendaasland, ethan smith, mcepl, miss-islington, pmpp, rdb, terry.reedy, xtreak
Priority: normal Keywords: patch

Created on 2020-04-14 07:11 by Simon Biggs, last changed 2022-04-11 14:59 by admin.

Pull Requests
URL Status Linked Edit
PR 29771 merged christian.heimes, 2021-11-25 10:07
PR 29784 merged christian.heimes, 2021-11-25 20:55
PR 29789 merged christian.heimes, 2021-11-26 08:49
PR 29794 merged christian.heimes, 2021-11-26 12:52
PR 29795 merged christian.heimes, 2021-11-26 13:10
PR 29834 merged erlendaasland, 2021-11-29 10:23
PR 29842 merged christian.heimes, 2021-11-29 13:37
PR 29872 merged christian.heimes, 2021-12-01 08:05
PR 29873 merged christian.heimes, 2021-12-01 08:10
PR 29884 merged christian.heimes, 2021-12-01 21:02
PR 29887 merged christian.heimes, 2021-12-02 08:19
PR 29892 closed ethan smith, 2021-12-02 13:16
PR 29893 merged christian.heimes, 2021-12-02 14:28
PR 29984 merged christian.heimes, 2021-12-08 10:53
PR 30494 merged ethan smith, 2022-01-09 06:28
PR 30495 closed ethan smith, 2022-01-09 09:52
PR 30538 closed christian.heimes, 2022-01-11 16:20
PR 30552 merged christian.heimes, 2022-01-11 23:44
PR 30559 merged christian.heimes, 2022-01-12 18:13
PR 30597 merged christian.heimes, 2022-01-14 10:38
PR 30601 merged christian.heimes, 2022-01-14 16:41
PR 30615 merged christian.heimes, 2022-01-15 10:36
PR 30620 merged christian.heimes, 2022-01-16 13:09
PR 30622 merged christian.heimes, 2022-01-16 15:37
PR 30722 merged christian.heimes, 2022-01-20 17:07
PR 30858 merged christian.heimes, 2022-01-24 20:32
PR 30930 merged christian.heimes, 2022-01-26 22:23
PR 31050 merged christian.heimes, 2022-02-01 11:17
PR 31757 merged christian.heimes, 2022-03-08 09:59
PR 31770 merged christian.heimes, 2022-03-08 19:25
PR 31791 merged christian.heimes, 2022-03-10 09:22
PR 31829 merged christian.heimes, 2022-03-11 20:15
PR 31865 merged christian.heimes, 2022-03-14 08:37
PR 31898 merged christian.heimes, 2022-03-15 11:22
PR 31909 merged christian.heimes, 2022-03-15 15:39
PR 31947 merged christian.heimes, 2022-03-16 22:30
PR 31986 merged christian.heimes, 2022-03-19 09:25
PR 32095 merged christian.heimes, 2022-03-24 11:42
PR 32224 merged christian.heimes, 2022-04-01 08:17
PR 32233 merged christian.heimes, 2022-04-01 13:48
PR 32238 merged christian.heimes, 2022-04-01 18:29
PR 32243 merged christian.heimes, 2022-04-01 21:11
PR 32253 merged christian.heimes, 2022-04-02 15:53
PR 32266 open christian.heimes, 2022-04-02 20:22
PR 32284 merged christian.heimes, 2022-04-03 09:51
PR 32352 merged christian.heimes, 2022-04-06 08:20
PR 32360 merged christian.heimes, 2022-04-06 12:05
PR 32412 open christian.heimes, 2022-04-08 10:17
Messages (65)
msg366369 - (view) Author: Simon Biggs (Simon Biggs) Date: 2020-04-14 07:11
Since asm.js came on the scene, and now Web Assembly people have created CPython patches to support building CPython with emscripten. See:

* https://github.com/PeachPy/EmCPython -- Python 2.7
* https://github.com/dgym/cpython-emscripten/tree/master/3.5.2/patches -- Python 3.5.2
* https://github.com/iodide-project/pyodide/tree/master/cpython/patches -- Python 3.7.4

To ease the compiling of CPython with emscripten it would be helpful if patches that achieved these ends for the compiling to Web Assembly with emscripten were built into the upstream source repository itself.

If web assembly were to became a supported compilation target of the upstream CPython repository this would significantly reduce the friction of allowing CPython, and the latest CPython, to become a language readily usable within the browser.

Cheers,
Simon
msg366374 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2020-04-14 08:14
Do you want to provide a pull request?
msg366375 - (view) Author: pmp-p (pmpp) * Date: 2020-04-14 08:58
you can add 
* https://github.com/pmp-p/pydk/tree/master/sources.em/Python-3.8.0b4.patchset -- Python 3.8.x 

(wasm not asm.js, clang-10+ required)

demo https://pmp-p.github.io/python-next/test.html

CPython can already run in the browser with very little patching, but major issues are :
 
 - asyncify'ing the whole wasm VM to have pre-emption over cPython's one to prevent blocking I/O slows down things *a lot* (10x)
=> (very?) bad user experience.

 - the size of vm + stdlib  ~ 30 MiB and wasm compilation time.
=> bad user experience on first load or slow connexion.

 - the lack of threading in wasm MinimumViableProduct specification (but this is the browser standard for now), that leads to rewrite bits of stdlib ( like eg asyncio module )
=> adding more maintenance burden on stdlib (!)


i tested them all and my personnal opinion is : I can see no use case that would favour "stock" cPython wasm versus a blazing fast MicroPytho (or pycopy) wasm flavour or supercharged full stack pyodide.
msg366379 - (view) Author: Simon Biggs (Simon Biggs) Date: 2020-04-14 12:39
Hi pmp-p and Serhiy,

I'd be more than happy to attempt a pull request, but I imagine a change
such as this needs to be discussed first, trying not to "rush to make a
patch" (https://www.youtube.com/watch?v=voXVTjwnn-U&feature=youtu.be&t=2546).
Also, I doubt I will do a good job of it... but I am more than happy to try.

A note regarding "supercharged full stack pyodide", potentially without
efforts such as upstreaming into CPython and emscripten the relevant
patches, that supercharged full stack may just unfortunately stagnate. See
https://github.com/iodide-project/pyodide/issues/635#issuecomment-613408912

With respect to blocking when running Python as WASM, I have found running
the WebAssembly CPython within a webworker and signalling data back and
forth causes there to be no UI issues. It ends up being quite a neat set
up. Main down side right now however is the set up is currently going
stale, hence me believing reaching out like this is in the best interests
of Python going forward.

Cheers,
Simon

On Tue, 14 Apr 2020 at 18:58, pmp-p <report@bugs.python.org> wrote:

>
> pmp-p <pmpp.pub@gmail.com> added the comment:
>
> you can add
> *
> https://github.com/pmp-p/pydk/tree/master/sources.em/Python-3.8.0b4.patchset
> -- Python 3.8.x
>
> (wasm not asm.js, clang-10+ required)
>
> demo https://pmp-p.github.io/python-next/test.html
>
> CPython can already run in the browser with very little patching, but
> major issues are :
>
>  - asyncify'ing the whole wasm VM to have pre-emption over cPython's one
> to prevent blocking I/O slows down things *a lot* (10x)
> => (very?) bad user experience.
>
>  - the size of vm + stdlib  ~ 30 MiB and wasm compilation time.
> => bad user experience on first load or slow connexion.
>
>  - the lack of threading in wasm MinimumViableProduct specification (but
> this is the browser standard for now), that leads to rewrite bits of stdlib
> ( like eg asyncio module )
> => adding more maintenance burden on stdlib (!)
>
>
> i tested them all and my personnal opinion is : I can see no use case that
> would favour "stock" cPython wasm versus a blazing fast MicroPytho (or
> pycopy) wasm flavour or supercharged full stack pyodide.
>
> ----------
> nosy: +pmpp
>
> _______________________________________
> Python tracker <report@bugs.python.org>
> <https://bugs.python.org/issue40280>
> _______________________________________
>
msg369598 - (view) Author: (Beuc) * Date: 2020-05-22 11:21
I've been maintaining a Python Emscripten build for the Ren'Py (game engine) web port:
https://github.com/python-emscripten/python
https://renpy.beuc.net/

I recently tackled Python3 with a minimal/embeddable approach and checking the other ports already pointed in the discussion:
https://github.com/python-emscripten/python/tree/trunk/3.8/
(2 patches, and a short pyconfig.h fix-up)

There is also a Cython module to use the Emscripten C API.

Here's a demo at:
https://www.beuc.net/python-emscripten/demo/3/
(hello-world size: 3MB, with a few common modules: 4MB)

I can provide a pull request with a first few core changes.
Should this be done on github?

-

cross-compilation handling appears to follow an incorrect logic, in particular by querying 'dpkg' or parsing compiler output to detect include paths -- it is the (cross-)compiler's responsibility to provide the system paths, and detecting them manually causes conflicts. I had to patch setup.py. Let me know if I missed something.

Usually cross-compiling is triggered by non-matching build-type/host-type. Here cross-compilation logic is apparently triggered when exporting _PYTHON_HOST_PLATFORM=xxx manually (it's in the Makefile but not exported, and breaks normal build when exported). Is this the way it's meant to be used?
msg394081 - (view) Author: Ethan Smith (ethan smith) * Date: 2021-05-20 23:49
I think the first thing we should do is figure out whether we want to support Emscripten or WASI (or both).

Emscripten uses Javascript polyfills for some syscalls, while WASI makes direct calls the VM it is running in. They both can use WebAssembly for executing the code. This means Emscripten has wider API support, but WASI is lighter weight in many ways.

I think starting with patches to support Emscripten would be best, as it is easier to target, then add support for WASI later.

I think supporting WASI has a lot of value, because it can be run deterministically, which would be great for data science (Imagine a jupyter notebook that runs the same everywhere!)

One issue with WASI, and may be an issue with Emscripten, is threads. In 3.8 (or 3.9?) threadless builds were removed. However, WebAssembly's threading API is not really meant to emulate pthread, and SharedArrayBuffer, the primitive it is built on, is disabled in several browsers due to Spectre concerns.

Would patches to re-add a threadless build mode be accepted?
msg406985 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2021-11-25 10:23
I have added wasm32/wasm64 architectures with emscripten/wasi operating system as cross-build targets. The values are based on Rust targets: 

$ rustc --print target-list | grep wasm
wasm32-unknown-emscripten
wasm32-unknown-unknown
wasm32-wasi
wasm64-unknown-unknown

wasm (WebAssembly) is "native instruction set" for the JavaScript VM while wasi or emscripten provide operating system facilities like memory management and I/O.
msg406986 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2021-11-25 10:50
Our config.sub is recent enough and has support for wasm32, wasm64, wasi, and emscripten:

$ grep was[mi] config.sub 
                        | wasm32 | wasm64 \
             | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
msg407011 - (view) Author: Brett Cannon (brett.cannon) * (Python committer) Date: 2021-11-25 18:39
LLVM considers `was32-wasi` an alias for `wasm32-unknown-wasi`. Verified on the WebAssembly Discover server at https://discord.com/channels/453584038356058112/596492540388179976/898618010221310062.
msg407012 - (view) Author: Brett Cannon (brett.cannon) * (Python committer) Date: 2021-11-25 18:42
My last message had a couple of typos; should have been `wasm32-wasi` and "Discord", not "Discovery".
msg407013 - (view) Author: Brett Cannon (brett.cannon) * (Python committer) Date: 2021-11-25 18:48
Do we need to care about our `config.guess` being updated as well? This is a totally ignorant question based on https://github.com/WebAssembly/wasi-sdk#notes-for-autoconf mentioning `config.guess`.
msg407014 - (view) Author: Brett Cannon (brett.cannon) * (Python committer) Date: 2021-11-25 18:49
To help keep links up-to-date, Pyodide now lives at:

https://github.com/pyodide/pyodide/tree/main/cpython
msg407015 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2021-11-25 19:29
Our config.sub agrees with LLVM:

$ ./config.sub wasm32-wasi
wasm32-unknown-wasi

The config.sub and config.guess scripts in main are recent enough for wasm. Just to be sure I created https://github.com/python/cpython/pull/29781 and plan to backport the changeset to 3.10 and 3.9. It's generally safe to update the files to latest version.
msg407018 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2021-11-25 20:24
New changeset 1052a39b7603e4d8401a5987af0c36f4a1d0b1e4 by Christian Heimes in branch 'main':
bpo-40280: Add wasm cross build targets (GH-29771)
https://github.com/python/cpython/commit/1052a39b7603e4d8401a5987af0c36f4a1d0b1e4
msg407020 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2021-11-25 21:48
I have uploaded my config.site override to https://gist.github.com/tiran/5ccffa28723d3e4739db848451bd9efa . It contains overrides based on pyodide and overrides for new features.

I'm also getting this error with emscripten 2.0.13. _sys_shutdown is the syscall for shutdown(2) used by the socket module.

error: undefined symbol: __sys_shutdown (referenced by top-level compiled C/C++ code)
warning: Link with `-s LLD_REPORT_UNDEFINED` to get more information on undefined symbols
warning: To disable errors for undefined symbols use `-s ERROR_ON_UNDEFINED_SYMBOLS=0`
warning: ___sys_shutdown may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
Error: Aborting compilation due to previous errors
msg407021 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2021-11-25 21:51
https://github.com/emscripten-core/emscripten/issues/13393
msg407030 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2021-11-26 07:26
New changeset ee1e2c604c8a66a407116d9c3e589ab0b9580c54 by Christian Heimes in branch 'main':
bpo-40280: Use Setup.stdlib static for wasm builds (GH-29784)
https://github.com/python/cpython/commit/ee1e2c604c8a66a407116d9c3e589ab0b9580c54
msg407046 - (view) Author: Roman Yurchak (Roman Yurchak) Date: 2021-11-26 12:46
Thanks a lot for working on this!

> _sys_shutdown is the syscall for shutdown(2) used by the socket module.

Yes, the issue with Emscripten is that a number of system calls are either not implemented or implemented but not tested. See a list we are using in https://github.com/pyodide/pyodide/blob/main/cpython/pyconfig.undefs.h (though things might have improved since it was created).

FYI, with Emscripten, the list of CPython unit tests that are currently skipped (as of Python 3.9.5) is in https://github.com/pyodide/pyodide/blob/main/src/tests/python_tests.txt some of those are due to browser VM limitations (e.g. virtual filestem by Emscripten that's not fully POSIX compliant, no processes, no sockets, async only via the browser event loop etc), others because we are not yet using threading since not all browsers support it, and some failures probably need more investigation. 

Also opened https://github.com/pyodide/pyodide/issues/2000 . Let us know if there is anything we can do help with this effort.
msg407048 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2021-11-26 13:30
New changeset d224e769b83a6a027bec8e21ee62db2b96d5af8e by Christian Heimes in branch 'main':
bpo-40280: clean and ignore .wasm files (GH-29794)
https://github.com/python/cpython/commit/d224e769b83a6a027bec8e21ee62db2b96d5af8e
msg407049 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2021-11-26 13:53
Thanks Roman, I replied on the pyodide issue tracker.
msg407052 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2021-11-26 14:17
New changeset 8caceb7a474bf32cddfd25fba25b531ff65f4365 by Christian Heimes in branch 'main':
bpo-40280: Add configure check for socket shutdown (GH-29795)
https://github.com/python/cpython/commit/8caceb7a474bf32cddfd25fba25b531ff65f4365
msg407080 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2021-11-26 18:36
New changeset 4ebde73b8e416eeb1fd5d2ca3283f7ddb534c5b1 by Christian Heimes in branch 'main':
bpo-40280: Move hard-coded feature checks to configure (GH-29789)
https://github.com/python/cpython/commit/4ebde73b8e416eeb1fd5d2ca3283f7ddb534c5b1
msg407264 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2021-11-29 11:39
New changeset b3f443a35e08a473d52868621e9b268259139cb2 by Erlend Egeberg Aasland in branch 'main':
bpo-40280: Disable unusable core extension modules on emscripten (GH-29834)
https://github.com/python/cpython/commit/b3f443a35e08a473d52868621e9b268259139cb2
msg407284 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2021-11-29 15:02
New changeset 6ac3c8a3140c17bd71ba98dfc5250c371101e77c by Christian Heimes in branch 'main':
bpo-40280: Emscripten systems use .wasm suffix by default (GH-29842)
https://github.com/python/cpython/commit/6ac3c8a3140c17bd71ba98dfc5250c371101e77c
msg407484 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2021-12-01 19:43
New changeset 9deb83468c56c7484645e6e3a6d0183cd6a0afd7 by Christian Heimes in branch 'main':
bpo-40280: Emscripten defaults to --with-ensurepip=no (GH-29873)
https://github.com/python/cpython/commit/9deb83468c56c7484645e6e3a6d0183cd6a0afd7
msg407498 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2021-12-01 22:16
New changeset 309110f37cdfc78d160ed08ae8faa6f6160ba87e by Christian Heimes in branch 'main':
bpo-40280: Emscripten with_ensurepip=no, second attempt (GH-29884)
https://github.com/python/cpython/commit/309110f37cdfc78d160ed08ae8faa6f6160ba87e
msg407519 - (view) Author: miss-islington (miss-islington) Date: 2021-12-02 09:17
New changeset cb2b3c8d3566ae46b3b8d0718019e1c98484589e by Christian Heimes in branch 'main':
bpo-40280: Emscripten has no support for subprocesses (GH-29872)
https://github.com/python/cpython/commit/cb2b3c8d3566ae46b3b8d0718019e1c98484589e
msg407524 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2021-12-02 11:19
New changeset cb8f491f46e262549f6c447b31625cab7c20a60a by Christian Heimes in branch 'main':
bpo-40280: Optimize ints and and startup on wasm (GH-29887)
https://github.com/python/cpython/commit/cb8f491f46e262549f6c447b31625cab7c20a60a
msg407541 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2021-12-02 17:43
New changeset a31173c5ceb1708df687f942d714bdecae7cb759 by Christian Heimes in branch 'main':
bpo-40280: Update what's new (GH-29893)
https://github.com/python/cpython/commit/a31173c5ceb1708df687f942d714bdecae7cb759
msg408855 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2021-12-18 14:54
New changeset 0339434835aa74dc78a38ae12ea7d2973c144eb1 by Christian Heimes in branch 'main':
bpo-40280: Add Tools/wasm with helpers for cross building (GH-29984)
https://github.com/python/cpython/commit/0339434835aa74dc78a38ae12ea7d2973c144eb1
msg410138 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-01-09 10:59
New changeset 5c66414b5561c54e7a0f4bde8cc3271908ea525e by Ethan Smith in branch 'main':
bpo-40280: Disable epoll_create in Emscripten config.site (GH-30494)
https://github.com/python/cpython/commit/5c66414b5561c54e7a0f4bde8cc3271908ea525e
msg410400 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-01-12 15:08
New changeset 43839ba438368a50f22f718d4ce8ce607c17046c by Christian Heimes in branch 'main':
bpo-40280: Add --with-emscripten-target to build for browser or node (GH-30552)
https://github.com/python/cpython/commit/43839ba438368a50f22f718d4ce8ce607c17046c
msg410423 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-01-12 19:27
New changeset e34c9367f8e0068ca4bcad9fb5c2c1024d02a77d by Christian Heimes in branch 'main':
bpo-40280: Allow to compile _testcapi as builtin module (GH-30559)
https://github.com/python/cpython/commit/e34c9367f8e0068ca4bcad9fb5c2c1024d02a77d
msg410554 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-01-14 11:11
New changeset c8319f7921fbcb0dea04da48a1b04a5d0d21ae1c by Christian Heimes in branch 'main':
bpo-40280: Build WASM stdlib bundle and more modules for node (GH-30597)
https://github.com/python/cpython/commit/c8319f7921fbcb0dea04da48a1b04a5d0d21ae1c
msg410577 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-01-14 17:48
New changeset ee1a8b336d30476e9635a6826f61a99fc3604159 by Christian Heimes in branch 'main':
bpo-40280: Block more syscalls that are causing crashes in tests (GH-30601)
https://github.com/python/cpython/commit/ee1a8b336d30476e9635a6826f61a99fc3604159
msg410647 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-01-15 13:36
A bunch of failing tests are related to bpo-46390. CPython's test suite does not pass with musl libc yet.
msg410727 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-01-16 21:52
New changeset 91e33ac3d08a1c6004c469da2c0e2a97b5bdc53c by Christian Heimes in branch 'main':
bpo-40280: Add requires_fork test helper (GH-30622)
https://github.com/python/cpython/commit/91e33ac3d08a1c6004c469da2c0e2a97b5bdc53c
msg410743 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-01-17 06:23
New changeset 7f4b69b9076bdbcea31f6ad16eb125ee99cf0175 by Christian Heimes in branch 'main':
bpo-40280: Change subprocess imports for cleaner error on wasm32 (GH-30620)
https://github.com/python/cpython/commit/7f4b69b9076bdbcea31f6ad16eb125ee99cf0175
msg411039 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-01-20 17:56
New changeset c02e860ee79f29905be6fca997c96bb1a404bb32 by Christian Heimes in branch 'main':
bpo-40280: Misc fixes for wasm32-emscripten (GH-30722)
https://github.com/python/cpython/commit/c02e860ee79f29905be6fca997c96bb1a404bb32
msg411514 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-01-24 21:02
New changeset d5fd438b38248a0d2e91898475369361e34f74b7 by Christian Heimes in branch 'main':
bpo-40280: Get help() working and more (GH-30858)
https://github.com/python/cpython/commit/d5fd438b38248a0d2e91898475369361e34f74b7
msg411560 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-01-25 07:09
New changeset 8464fbc42ecc9ce504faac499711dcdc6eedef16 by Christian Heimes in branch 'main':
bpo-40280: Skip subprocess-based tests on wasm32-emscripten (GH-30615)
https://github.com/python/cpython/commit/8464fbc42ecc9ce504faac499711dcdc6eedef16
msg411847 - (view) Author: miss-islington (miss-islington) Date: 2022-01-27 09:58
New changeset 606e496dd6e2ace298532da200169124c26ae0f2 by Christian Heimes in branch 'main':
bpo-40280: Use presence of msvcrt module to detect Windows (GH-30930)
https://github.com/python/cpython/commit/606e496dd6e2ace298532da200169124c26ae0f2
msg412595 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-02-05 19:52
New changeset 96b344c2f15cb09251018f57f19643fe20637392 by Christian Heimes in branch 'main':
bpo-40280: Address more test failures on Emscripten (GH-31050)
https://github.com/python/cpython/commit/96b344c2f15cb09251018f57f19643fe20637392
msg414748 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-03-08 11:18
New changeset 5081e78efde901556398615eb477c63c836686e5 by Christian Heimes in branch 'main':
bpo-40280: Block more non-working syscalls in Emscripten (GH-31757)
https://github.com/python/cpython/commit/5081e78efde901556398615eb477c63c836686e5
msg414769 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-03-08 19:27
I have fixed a signal-related issue in GH-31768 / bpo-23325
msg414780 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-03-08 22:15
New changeset 95ba723c54ab52487bc9f986b651536cfae15b29 by Christian Heimes in branch 'main':
bpo-40280: Skip dysfunctional pipe tests on Emscripten (GH-31770)
https://github.com/python/cpython/commit/95ba723c54ab52487bc9f986b651536cfae15b29
msg414845 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-03-10 12:44
New changeset de554d6e02228b840eb6bffaf7d406c0ef368d5f by Christian Heimes in branch 'main':
bpo-40280: Skip more tests/features that don't apply to Emscripten (GH-31791)
https://github.com/python/cpython/commit/de554d6e02228b840eb6bffaf7d406c0ef368d5f
msg414940 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-03-11 22:25
New changeset ecfff63e06e77e22035a7f7caa26986f033f3aea by Christian Heimes in branch 'main':
bpo-40280: Disable AF_UNIX, AF_PACKET, SO_REUSE* on Emscripten (#31829)
https://github.com/python/cpython/commit/ecfff63e06e77e22035a7f7caa26986f033f3aea
msg415136 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-03-14 13:40
New changeset f00ced8396f2d7683e58b9d5ebbf5797992bf477 by Christian Heimes in branch 'main':
bpo-40280: select: Use NULL for empty fdset (GH-31865)
https://github.com/python/cpython/commit/f00ced8396f2d7683e58b9d5ebbf5797992bf477
msg415259 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-03-15 16:14
New changeset b43b9b49be7d42d2826106c719d1e51f0776be0a by Christian Heimes in branch 'main':
bpo-40280: Skip wakeup_fd pipe tests on Emscripten (GH-31909)
https://github.com/python/cpython/commit/b43b9b49be7d42d2826106c719d1e51f0776be0a
msg415297 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-03-15 20:55
New changeset a4674f0194067a801f6c6bdb4fc6448e3a40e069 by Christian Heimes in branch 'main':
bpo-40280: Detect presence of time.tzset and thread_time clock (GH-31898)
https://github.com/python/cpython/commit/a4674f0194067a801f6c6bdb4fc6448e3a40e069
msg415398 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-03-17 11:10
New changeset ef1327e3b622e0cafdf8bfc1f480fed0dd386be6 by Christian Heimes in branch 'main':
bpo-40280: Skip more tests on Emscripten (GH-31947)
https://github.com/python/cpython/commit/ef1327e3b622e0cafdf8bfc1f480fed0dd386be6
msg415757 - (view) Author: miss-islington (miss-islington) Date: 2022-03-22 10:04
New changeset deeaac49e267285158264643799624623f4a7b29 by Christian Heimes in branch 'main':
bpo-40280: Skip socket, fork, subprocess tests on Emscripten (GH-31986)
https://github.com/python/cpython/commit/deeaac49e267285158264643799624623f4a7b29
msg415976 - (view) Author: miss-islington (miss-islington) Date: 2022-03-24 21:09
New changeset 8a0a9e5b1928fab7d9819c8d6498ef5c0b9383af by Christian Heimes in branch 'main':
bpo-40280: Add wasm32-emscripten and wasm32-wasi SOABI (GH-32095)
https://github.com/python/cpython/commit/8a0a9e5b1928fab7d9819c8d6498ef5c0b9383af
msg416494 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-04-01 15:24
New changeset 17245c815e44e79d4dad6a99b54000956a4a7229 by Christian Heimes in branch 'main':
bpo-40280: Add debug Emscripten flavors (GH-32233)
https://github.com/python/cpython/commit/17245c815e44e79d4dad6a99b54000956a4a7229
msg416509 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-04-01 19:21
New changeset 082d3495d0c820972f09f6109a98ed7eb5a7b79f by Christian Heimes in branch 'main':
bpo-40280: Emscripten fork_exec now fails early (GH-32224)
https://github.com/python/cpython/commit/082d3495d0c820972f09f6109a98ed7eb5a7b79f
msg416541 - (view) Author: miss-islington (miss-islington) Date: 2022-04-02 08:12
New changeset 59be9cd748728b03ac61287681c3010bcec5e558 by Christian Heimes in branch 'main':
bpo-40280: Detect if WASM platform supports threading (GH-32243)
https://github.com/python/cpython/commit/59be9cd748728b03ac61287681c3010bcec5e558
msg416542 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-04-02 08:13
New changeset 4ed8a9a589d2eee7442e0c9417515a707e504faa by Christian Heimes in branch 'main':
bpo-40280: Enable most file-at() and nanosleep APIs again (GH-32238)
https://github.com/python/cpython/commit/4ed8a9a589d2eee7442e0c9417515a707e504faa
msg416579 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-04-02 19:31
pmp-p wrote on GH-32253:
when using --enable-wasm-dynamic-linking i think --enable-shared should set -fPIC and -s SIDE_MODULE=1 for libpython.so

I have not tried --enable-shared with Emscripten yet. So far I have assumed that the result is a fat Python binary that can load additional shared libraries.
msg416681 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-04-04 17:31
New changeset c9844cb8aa9615cdc8770d1e43ce6e2ac3efd836 by Christian Heimes in branch 'main':
bpo-40280: Add --enable-wasm-dynamic-linking (GH-32253)
https://github.com/python/cpython/commit/c9844cb8aa9615cdc8770d1e43ce6e2ac3efd836
msg416763 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-04-05 09:21
New changeset 96e09837fb8031aebe8d823dd19ef664a34bcfad by Christian Heimes in branch 'main':
bpo-40280: Add limited Emscripten REPL (GH-32284)
https://github.com/python/cpython/commit/96e09837fb8031aebe8d823dd19ef664a34bcfad
msg416865 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-04-06 12:33
New changeset 765f6dee0fcf55c6ea258c2be4cc9dfb1b014f60 by Christian Heimes in branch 'main':
bpo-40280: WASM defaults to no dynamic linking (GH-32360)
https://github.com/python/cpython/commit/765f6dee0fcf55c6ea258c2be4cc9dfb1b014f60
msg416916 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-04-07 07:23
New changeset 2b16a08bc77475917dd5c96417aef4c5210b45ac by Christian Heimes in branch 'main':
bpo-40280: Detect missing threading on WASM platforms (GH-32352)
https://github.com/python/cpython/commit/2b16a08bc77475917dd5c96417aef4c5210b45ac
msg416933 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2022-04-07 15:53
Christian: IDLE and test_idle require threading. I once tested for threading in test_idle (not sure about IDLE itself) but removed the test when threading was made supposedly non-optional.  Test_idle still tests for tkinter and idlelib.  For PR 32352. did you miss IDLE's requirement or is tkinter and hence IDLE and its test not included on WASM/emscripten?  Will it never be?
msg416934 - (view) Author: Christian Heimes (christian.heimes) * (Python committer) Date: 2022-04-07 16:02
In GH-32352 I changed only tests that I was able to execute under wasm32-emscripten. As far as I know TK does not build for WASM. Somebody would have to port TCL/TK to WebGL or SDL2 to make it work in the browser.
History
Date User Action Args
2022-04-11 14:59:29adminsetgithub: 84461
2022-04-08 10:17:32christian.heimessetpull_requests: + pull_request30438
2022-04-07 16:02:55christian.heimessetmessages: + msg416934
2022-04-07 15:53:11terry.reedysetnosy: + terry.reedy
messages: + msg416933
2022-04-07 07:23:18christian.heimessetmessages: + msg416916
2022-04-06 12:33:40christian.heimessetmessages: + msg416865
2022-04-06 12:05:18christian.heimessetpull_requests: + pull_request30409
2022-04-06 08:20:05christian.heimessetpull_requests: + pull_request30404
2022-04-05 09:21:39christian.heimessetmessages: + msg416763
2022-04-04 17:31:41christian.heimessetmessages: + msg416681
2022-04-03 21:00:45christian.heimessetdependencies: + Function pointer cast in test_imp, ctypes mishandles `void` return type
2022-04-03 09:51:00christian.heimessetpull_requests: + pull_request30345
2022-04-02 20:22:56christian.heimessetpull_requests: + pull_request30331
2022-04-02 19:31:14christian.heimessetmessages: + msg416579
2022-04-02 15:53:13christian.heimessetpull_requests: + pull_request30324
2022-04-02 08:13:55christian.heimessetmessages: + msg416542
2022-04-02 08:12:51miss-islingtonsetmessages: + msg416541
2022-04-01 21:11:12christian.heimessetpull_requests: + pull_request30314
2022-04-01 19:21:13christian.heimessetmessages: + msg416509
2022-04-01 18:29:22christian.heimessetpull_requests: + pull_request30309
2022-04-01 15:24:04christian.heimessetmessages: + msg416494
2022-04-01 13:48:58christian.heimessetpull_requests: + pull_request30305
2022-04-01 08:17:02christian.heimessetpull_requests: + pull_request30299
2022-03-31 08:33:58christian.heimessetdependencies: + Interrupt handling for wasm32-emscripten builds without pthreads
2022-03-30 11:12:15christian.heimessetdependencies: + Add call trampoline to work around bad fpcasts on Emscripten
2022-03-24 21:09:46miss-islingtonsetmessages: + msg415976
2022-03-24 11:42:15christian.heimessetpull_requests: + pull_request30179
2022-03-22 10:04:50miss-islingtonsetmessages: + msg415757
2022-03-19 09:25:26christian.heimessetpull_requests: + pull_request30077
2022-03-17 11:10:05christian.heimessetmessages: + msg415398
2022-03-16 22:30:26christian.heimessetpull_requests: + pull_request30038
2022-03-15 20:55:47christian.heimessetmessages: + msg415297
2022-03-15 16:14:23christian.heimessetmessages: + msg415259
2022-03-15 15:39:07christian.heimessetpull_requests: + pull_request30002
2022-03-15 11:22:09christian.heimessetpull_requests: + pull_request29994
2022-03-14 13:40:43christian.heimessetmessages: + msg415136
2022-03-14 08:37:24christian.heimessetpull_requests: + pull_request29963
2022-03-11 22:25:23christian.heimessetmessages: + msg414940
2022-03-11 20:15:47christian.heimessetpull_requests: + pull_request29926
2022-03-10 12:44:04christian.heimessetmessages: + msg414845
2022-03-10 12:42:31serhiy.storchakasetnosy: - serhiy.storchaka
2022-03-10 09:22:49christian.heimessetpull_requests: + pull_request29895
2022-03-08 22:15:29christian.heimessetmessages: + msg414780
2022-03-08 19:27:56christian.heimessetmessages: + msg414769
2022-03-08 19:25:50christian.heimessetpull_requests: + pull_request29878
2022-03-08 11:18:21christian.heimessetmessages: + msg414748
2022-03-08 09:59:29christian.heimessetpull_requests: + pull_request29870
2022-02-05 19:52:28christian.heimessetmessages: + msg412595
2022-02-01 11:17:40christian.heimessetpull_requests: + pull_request29232
2022-01-27 09:58:00miss-islingtonsetmessages: + msg411847
2022-01-26 22:23:48christian.heimessetpull_requests: + pull_request29109
2022-01-25 07:09:10christian.heimessetmessages: + msg411560
2022-01-24 21:02:12christian.heimessetmessages: + msg411514
2022-01-24 20:32:33christian.heimessetpull_requests: + pull_request29040
2022-01-24 13:18:17rdbsetnosy: + rdb
2022-01-20 17:56:40christian.heimessetmessages: + msg411039
2022-01-20 17:07:22christian.heimessetpull_requests: + pull_request28913
2022-01-17 09:13:52christian.heimessetdependencies: + Turn SIG_DFL and SIG_IGN into functions
2022-01-17 09:02:13christian.heimessetdependencies: + signal module wrongly relies on small int singletons
2022-01-17 06:23:53christian.heimessetmessages: + msg410743
2022-01-16 21:52:54christian.heimessetmessages: + msg410727
2022-01-16 15:37:46christian.heimessetpull_requests: + pull_request28826
2022-01-16 13:09:06christian.heimessetpull_requests: + pull_request28824
2022-01-15 13:36:42christian.heimessetdependencies: + Multiple test failures on Alpine 3.15 / musl-1.2.2-r7
messages: + msg410647
2022-01-15 10:36:45christian.heimessetpull_requests: + pull_request28818
2022-01-14 19:57:36christian.heimessetdependencies: + _zoneinfo module_free has invalid function signature
2022-01-14 17:48:47christian.heimessetmessages: + msg410577
2022-01-14 16:41:57christian.heimessetpull_requests: + pull_request28800
2022-01-14 11:11:54christian.heimessetmessages: + msg410554
2022-01-14 10:38:32christian.heimessetpull_requests: + pull_request28795
2022-01-12 19:27:41christian.heimessetmessages: + msg410423
2022-01-12 18:13:34christian.heimessetpull_requests: + pull_request28760
2022-01-12 15:08:32christian.heimessetmessages: + msg410400
2022-01-11 23:44:59christian.heimessetpull_requests: + pull_request28753
2022-01-11 16:20:46christian.heimessetpull_requests: + pull_request28738
2022-01-09 10:59:07christian.heimessetmessages: + msg410138
2022-01-09 09:52:05ethan smithsetpull_requests: + pull_request28702
2022-01-09 06:28:56ethan smithsetpull_requests: + pull_request28700
2021-12-18 14:54:05christian.heimessetmessages: + msg408855
2021-12-08 10:53:01christian.heimessetpull_requests: + pull_request28208
2021-12-02 17:43:05christian.heimessetmessages: + msg407541
2021-12-02 14:28:26christian.heimessetpull_requests: + pull_request28117
2021-12-02 13:16:06ethan smithsetpull_requests: + pull_request28116
2021-12-02 11:19:35christian.heimessetmessages: + msg407524
2021-12-02 09:17:46miss-islingtonsetnosy: + miss-islington
messages: + msg407519
2021-12-02 08:19:20christian.heimessetpull_requests: + pull_request28113
2021-12-01 22:16:35christian.heimessetmessages: + msg407498
2021-12-01 21:02:12christian.heimessetpull_requests: + pull_request28110
2021-12-01 19:43:34christian.heimessetmessages: + msg407484
2021-12-01 08:10:59christian.heimessetpull_requests: + pull_request28099
2021-12-01 08:05:36christian.heimessetpull_requests: + pull_request28098
2021-11-29 15:02:03christian.heimessetmessages: + msg407284
2021-11-29 13:37:54christian.heimessetpull_requests: + pull_request28071
2021-11-29 11:39:39christian.heimessetmessages: + msg407264
2021-11-29 10:23:23erlendaaslandsetnosy: + erlendaasland
pull_requests: + pull_request28065
2021-11-26 18:36:58christian.heimessetmessages: + msg407080
2021-11-26 14:17:03christian.heimessetmessages: + msg407052
2021-11-26 14:16:09corona10setnosy: + corona10
2021-11-26 13:53:56christian.heimessetmessages: + msg407049
2021-11-26 13:30:00christian.heimessetmessages: + msg407048
2021-11-26 13:10:17christian.heimessetpull_requests: + pull_request28030
2021-11-26 12:52:26christian.heimessetpull_requests: + pull_request28029
2021-11-26 12:46:25Roman Yurchaksetmessages: + msg407046
2021-11-26 12:20:20Roman Yurchaksetnosy: + Roman Yurchak
2021-11-26 09:41:56christian.heimessetdependencies: + update config.guess and config.sub, Undefinied _Py_Sigset_Converter function when HAVE_SIGSET_T not set, Cross compiling on Linux is untested, undocumented, and broken, Fix Program/_freeze_module for cross compiling Python, ctypes cfield.c defines duplicate ffi_type_* symbols
2021-11-26 08:49:24christian.heimessetpull_requests: + pull_request28025
2021-11-26 07:26:58christian.heimessetmessages: + msg407030
2021-11-25 21:51:12christian.heimessetmessages: + msg407021
2021-11-25 21:48:25christian.heimessetmessages: + msg407020
2021-11-25 20:55:56christian.heimessetpull_requests: + pull_request28021
2021-11-25 20:24:49christian.heimessetmessages: + msg407018
2021-11-25 19:29:55christian.heimessetmessages: + msg407015
2021-11-25 18:49:05brett.cannonsetmessages: + msg407014
2021-11-25 18:48:37brett.cannonsetmessages: + msg407013
2021-11-25 18:42:44brett.cannonsetmessages: + msg407012
2021-11-25 18:39:24brett.cannonsetmessages: + msg407011
2021-11-25 10:50:43christian.heimessetmessages: + msg406986
2021-11-25 10:23:16christian.heimessetnosy: + brett.cannon

messages: + msg406985
versions: + Python 3.11, - Python 3.9
2021-11-25 10:07:33christian.heimessetkeywords: + patch
nosy: + christian.heimes

pull_requests: + pull_request28008
stage: patch review
2021-05-26 22:22:08mceplsetnosy: + mcepl
2021-05-24 16:43:35Beucsetnosy: - Beuc
2021-05-21 16:14:09barrysetnosy: + barry
2021-05-20 23:49:28ethan smithsetnosy: + ethan smith
messages: + msg394081
2020-05-22 11:21:24Beucsetnosy: + Beuc
messages: + msg369598
2020-04-14 12:39:08Simon Biggssetmessages: + msg366379
2020-04-14 08:58:34pmppsetnosy: + pmpp
messages: + msg366375
2020-04-14 08:50:40xtreaksetnosy: + xtreak
2020-04-14 08:14:37serhiy.storchakasetnosy: + serhiy.storchaka
messages: + msg366374
2020-04-14 07:11:35Simon Biggscreate