Commit Graph

1106 Commits

Author SHA1 Message Date
emscripten-bot
15915cad55 Release 4.0.22 (#1644)
With emscripten-releases revisions:

https://chromium.googlesource.com/emscripten-releases/+/bebaf7e50e31865b0724f17eaa52e161e2dfef5a
(LTO)
https://chromium.googlesource.com/emscripten-releases/+/64750c136
(asserts)
2025-12-17 20:59:04 -08:00
Sam Clegg
334f6902fe [CI] Update macos resource class. NFC (#1643)
See
https://circleci.com/changelog/deprecation-of-mac-m1-and-m2-resource-classes/

Sadly this also means we have to bump the version of macOS that we test
on from 12.6.1 to 13.2.1
2025-12-15 13:25:49 -08:00
Sam Clegg
11ea2ee53d Python fixes from ruff check (#1641) 2025-12-15 09:57:48 -08:00
emscripten-bot
b2436aafa7 Release 4.0.21 (#1638)
With emscripten-releases revisions:

https://chromium.googlesource.com/emscripten-releases/+/d70a5da89b3e673bf6a482724478fc17e81e575e
(LTO)

https://chromium.googlesource.com/emscripten-releases/+/50deeb529cc8a08f952af8a3087d2e27e0f77c3e
(asserts)
2025-12-02 10:36:51 -08:00
Sam Clegg
6e4471361a More usage of python3 features (#1636)
Mostly f-strings, but a few others too.
2025-12-01 17:11:00 -08:00
Sam Clegg
a040059ae2 Bump min macOS version to 11.0 (#1637)
We already specify 11.0 for `CMAKE_OSX_DEPLOYMENT_TARGET` in
`cmake_configure`

See #1634
2025-12-01 12:32:48 -08:00
Joshua T.
5a3430bbe3 Correctly tag latest built docker image (#1635)
Additionally removes the `alias` and `only_alias` arguments and adds a
single `tag` argument - this makes it clear about the tag being pushed
to.

Fixes: #1631
2025-11-27 19:32:52 +00:00
Sam Clegg
753652fd30 Update information about linux version used to build prebuilt binaries. NFC (#1633) 2025-11-26 15:10:11 -08:00
Sam Clegg
0e2761544c Update CI to run on Ubuntu 22.04 (#1632)
This allows us compile binaryen from source during CI, which was broken
recently.
See https://github.com/WebAssembly/binaryen/issues/8067 and
https://github.com/WebAssembly/binaryen/pull/8071
2025-11-26 13:31:33 -08:00
Sam Clegg
cd8f5d8000 Drop python 2 support in emsdk.py (#1608)
Fixes: #1592
2025-11-26 11:49:21 -08:00
juj
69e3df938d CMake 4.2.0-rc3 (#1628)
Add links to CMake 4.2.0-rc3 into the manifest, and a mechanism inside
emsdk.py to look up an installed/activated CMake tool.

This enables a simple way to run `emsdk install cmake-4.2.0-rc3-64bit`
to acquire the CMake dependency needed for e.g. compiling LLVM and
Binaryen. This removes one manual setup item for setting up Emscripten
from source.
2025-11-18 12:57:01 +02:00
emscripten-bot
e4fe26ef59 Release 4.0.20 (#1629)
With emscripten-releases revisions:

https://chromium.googlesource.com/emscripten-releases/+/c387d7a7e9537d0041d2c3ae71b7538cc978104e
(LTO)

https://chromium.googlesource.com/emscripten-releases/+/d4fdf09ba6e7a2d75bc1f643370caf4519021e89
(asserts)
2025-11-17 17:52:11 -08:00
emscripten-bot
7b4e60e4bf Release 4.0.19 (#1626)
With emscripten-releases revisions:

https://chromium.googlesource.com/emscripten-releases/+/8b01e2ec3f33e6b94842096d7312ce4ef5f33f6c
(LTO)

https://chromium.googlesource.com/emscripten-releases/+/b67b4278dffc6c3afb07341d70f128ae77ae0415
(asserts)
2025-11-04 19:33:51 +00:00
juj
a0af5d7f95 Fix windows emsdk returncode (#1623)
When `emsdk install foo` would fail on Windows, the return code would
get ignored since there were later commands in the script file.

To fix that, capture the error code from the emsdk call, and output that
as the final return code.

Also a drive-by Python path fix, which seemed to be out of date in the
.ps1 file.
2025-10-25 00:22:31 +03:00
emscripten-bot
eb5eb4b3b2 Release 4.0.18 (#1622)
With emscripten-releases revisions:

https://chromium.googlesource.com/emscripten-releases/+/df7d4d811503e86e7728326e3eabbc383cb8042d
(LTO)

https://chromium.googlesource.com/emscripten-releases/+/43ce72a9c7979238d1b44c1ef8c5e3a3fd3549a7
(asserts)
2025-10-24 09:33:50 -07:00
juj
be520bbc10 Fix mozdownload of native ARM64 Firefox on Windows-on-ARM. (#1621)
Before mozdownload was downloading x64 artifacts and running them
through the Windows Prism emulation.
2025-10-23 17:33:44 +00:00
emscripten-bot
dadf06a88d Release 4.0.17 (#1619)
With emscripten-releases revisions:

https://chromium.googlesource.com/emscripten-releases/+/41d2106c68c28e101e6252a48e22c78b07722508
(LTO)

https://chromium.googlesource.com/emscripten-releases/+/8a51f9a17741cae815acf148422bcd6d77fc1e78
(asserts)
2025-10-17 15:25:52 -07:00
Sam Clegg
f98ae68904 [ci] Bump xcode version (#1615)
13.4.1 is scheduled for deprecation:
https://circleci.com/changelog/deprecation-of-eol-xcode-versions/

Note that the underlying macOS version is still 12.6.1
2025-10-09 15:42:58 -07:00
juj
bf54450230 Fix macOS Firefox test run hangs (#1614)
Fix macOS Firefox test run hangs by disabling macOS from prompting to
restore windows after an unclean browser termination.
2025-10-08 12:13:48 +03:00
juj
378d768942 Firefox support (#1606)
This PR adds downloadable firefox packages into emsdk.

The downloading of firefox will be done via the `mozdownload` pip
package, which simplifies the installation a lot.

Installing and activating a Firefox package will set up the
`EMTEST_BROWSER` variable, so running browser tests will then
automatically use the activated browser.

The oldest supported Firefox version by Emscripten is 65. So add that
version, and all ESR versions from 65 upwards, and the moving channels.
This allows people to go back and forth testing different versions of
interest.
2025-10-08 00:09:14 +03:00
DoDo
1cb55f846b [bazel] Replace deprecated '-g4' flag with '-g3' (#1611)
- this avoids deprecated flag warnings from emscripten when building
with full_debug_info or wasm_ubsan features enabled
2025-10-07 09:46:35 -04:00
Sam Clegg
526ceebf90 4.0.16 (#1612) 2025-10-06 16:16:31 -07:00
Sam Clegg
2b10b1bfc3 Use default python in PATH for circleci windows bot. NFC (#1609)
`C:\Python312\python.exe` is already in the path by default.

We no longer need to set this special path or environment variable. In
fact this code was doing nothing since it was adding the end of the PATH
so the system python was already coming first.
2025-10-03 15:34:43 -07:00
Joshua T.
44f11eac54 Build and push multi-platform docker image (#1567)
This PR adds the `publish-docker-image-multiplatform` CI job step that
pushes a multi-platform docker image when a new tag is created. #1211

Unfortunately, this is not as simple as pushing two images targeting
different platforms to the same tag. There are a couple of ways to
create a multi-platform image:
- Using `docker buildx` to build images for all platforms. To do this
images targeting non-native platforms would need to be built using QEMU
(slower), a remote machine or cross-compilation.
- Building and publishing platform-specific images
`emscripten/emsdk-x64`, `emscripten/emsdk-arm64` and then creating a
manifest that links to these images. This is the simpler solution to
implement, and is what this PR does.

Tested with CircleCI on my fork. See the pushed images at
[radiantly/emsdk ·
DockerHub](https://hub.docker.com/r/radiantly/emsdk/tags)
2025-09-25 10:51:45 -07:00
emscripten-bot
389a68bc35 Release 4.0.15 (#1602)
With emscripten-releases revisions:

https://chromium.googlesource.com/emscripten-releases/+/b412b6307e541b93dd93f01b61181e15c17302ec
(LTO)

https://chromium.googlesource.com/emscripten-releases/+/33ad7cf09d14176b582d2c7d91d00ce433d0c753
(asserts)
2025-09-16 23:09:04 -07:00
emscripten-bot
eff90ca04a Release 4.0.14 (#1599)
With emscripten-releases revisions:

https://chromium.googlesource.com/emscripten-releases/+/4658718c188782acc67a249d45fce2d891ee3cc1
(LTO)

https://chromium.googlesource.com/emscripten-releases/+/2f390179239fa46b7a22d25fc3afa4d76590510a
(asserts)
2025-09-02 23:24:36 +00:00
juj
1ded1a9d4a Add Node.js 24.7.0 support. (#1597)
This PR updates Node.js from earlier 22.16.0 to newer 24.7.0.

Remove armv7l and 32-bit Windows,
https://github.com/nodejs/nodejs.org/issues/8123
2025-09-03 00:41:18 +03:00
juj
b71731aa1a Pin Apple ARM64 Node Nightly (#1596)
Node.js Apple ARM64 nightly downloads are currently out of order, so pin
to recent version that does still exist.
https://github.com/nodejs/node/issues/59654
2025-08-27 21:17:04 +00:00
juj
5899439ff2 Add support for a new command 'emsdk deactivate' (#1593)
Add support for a new command 'emsdk deactivate' that can be used to
remove a tool from the active list.

Since the big endian cross compile Node.js is added to `NODE_JS_TEST`
instead of `NODE_JS`, there needs to be a way to deactivate it for
regular runs.

This PR adds a `emsdk deactivate` command to enable doing that.
2025-08-27 11:41:47 -07:00
juj
0674b46e36 Fix node nightly check when no node.js versions are installed (#1594)
This line failed when there are no Node.js's installed at all.
2025-08-27 19:57:16 +03:00
juj
efd71e9a2e Nightly Node.js and Big Endian cross compilation Node.js (#1590)
This PR adds support for

`./emsdk install node-nightly-64bit`

which finds the latest nightly node.js version and installs that. It is
a moving target, so the next day when a new nightly is produced,
reissuing `./emsdk install node-nightly-64bit` will install the newer
published version.

Also, this PR adds a fixed 22.18.0 version for the cross compilation
s390x Node.js target as well. On an x64 Linux system, this allows
running

`./emsdk install node-big-endian-crosscompile-22.16.0-64bit`

to install the big endian Node.js. This greatly simplifies the steps at
https://github.com/emscripten-core/emscripten/compare/main...juj:emscripten:bigendian_test_suite#diff-c36b90121be240017fa490a1c00e63e47fa3235f5c1be0593e2b7502d017c778R9985-R10000
and enables a trivial way to switch between LE and BE Node.js versions
for testing.

CC @slavek-kucera
2025-08-27 16:24:20 +03:00
juj
0c45297475 Allow switching between overrides (#1588)
Previously, if one used e.g. command

```
emsdk install --override-repository emscripten-main-64bit@https://github.com/juj/emscripten/tree/my_own_emscripten_branch emscripten-main-64bit
```

then the overridden installation would create a git clone from
`juj/emscripten`, and that clone would be located under the default
remote name `origin`.

This would prevent being able to switch between overrides on subsequent
`emsdk install` commands. I.e. it would then not be possible to later do
a default

```
emsdk install emscripten-main-64bit
```

command without an override, since the remote name `origin` would point
to `juj/emscripten` instead of `emscripten-core/emscripten`.

This PR changes the naming scheme of `git clone`s when
`--override-repository` is used, to name the clones with remote names
from the override, so in the above case, the clone would appear under
remote name `juj` and not `origin`.

This enables flipping between multiple `emsdk install` commands in the
same checkout, without needing to nuke the installed directory in
between.

This enables me to run experiments like
github.com/emscripten-core/emscripten/pull/25025 locally on my CI,
without needing to merge them upstream to become available.
2025-08-27 14:59:01 +03:00
Sam Clegg
8ad0ba0b36 [CI] Re-enable python2 flake8 checking (#1591)
This was accidentally removed in #1183
2025-08-26 14:36:32 -07:00
Sam Clegg
833fa33421 [emsdk] Remove references to old output files such as .worker.js. NFC (#1585)
Fixes: #1584
2025-08-19 12:56:30 -04:00
emscripten-bot
404dc1ec13 Release 4.0.13 (#1582)
With emscripten-releases revisions:

https://chromium.googlesource.com/emscripten-releases/+/32b8ae819674cb42b8ac2191afeb9571e33ad5e2
(LTO)

https://chromium.googlesource.com/emscripten-releases/+/17d4746128fd81d192c1685da52332c5221799bb
(asserts)
2025-08-14 20:41:34 +00:00
emscripten-bot
f39e849eff Release 4.0.12 (#1579)
With emscripten-releases revisions:

https://chromium.googlesource.com/emscripten-releases/+/209b886304498eff50dd835850dc5715803401ed
(LTO)

https://chromium.googlesource.com/emscripten-releases/+/a9e9ee083503b842a14d31db764e31d65afb8910
(asserts)

---------

Co-authored-by: Sam Clegg <sbc@chromium.org>
2025-08-01 17:34:28 +00:00
ZL
e062c54f43 Add bazel feature for wasm-exceptions (#1575)
This PR add bazel feature for `-fwasm-exceptions`

Part of #1400
2025-07-22 02:06:54 -04:00
emscripten-bot
d49219d03a Release 4.0.11 (#1572)
With emscripten-releases revisions:

https://chromium.googlesource.com/emscripten-releases/+/7033fec38817ec01909b044ea0193ddd5057255c
(LTO)
https://chromium.googlesource.com/emscripten-releases/+/0eacb0d6
(asserts)

---------

Co-authored-by: Sam Clegg <sbc@chromium.org>
2025-07-14 17:23:27 +00:00
Sam Clegg
d845e506ce Fix python search path in emsdk launcher scripts (#1571)
The `-0` and `-1` suffixes here are not part of the install path which
only based on the `id` and `version` of the tool. e.g:

```
  {
    "id": "python",
    "version": "3.9.2",
    "bitness": 64,
    "arch": "x86_64",
    "windows_url": "python-3.9.2-1-embed-amd64+pywin32.zip",
    "activated_cfg": "PYTHON='%installation_dir%/python.exe'",
    "activated_env": "EMSDK_PYTHON=%installation_dir%/python.exe"
  },
```

Here we have a `-1` in the archive name, but that is not included in the
version which is used to construct the install path.

Fixes: #1570
2025-07-10 15:51:02 -07:00
emscripten-bot
62a853cd3b Release 4.0.10 (#1565)
With emscripten-releases revisions:

https://chromium.googlesource.com/emscripten-releases/+/8103ffedfb0c42d231c6af6859a5a1a832260b43
(LTO)

https://chromium.googlesource.com/emscripten-releases/+/ccf48a673362f11ddb6c3656405bb6a03b344052
(asserts)
2025-06-06 17:16:11 -07:00
juj
2d480a1b7c Update Node.js to LTS 22.16.0. (#1563)
This matches the minimum OS requirements set of macOS 11.0 and Windows
10:

https://github.com/nodejs/node/blob/v22.x/BUILDING.md#platform-list
2025-05-29 15:00:30 -07:00
juj
cfe7ccf163 Update python version note for Linux. (#1562) 2025-05-28 20:39:44 +00:00
juj
d07c793415 Update Python to 3.13.3 and add support to Windows on ARM64. (#1477)
Update Python to 3.13.0 and add support to Windows on AMD64. Rewrite
packaging of pywin32 because it is no longer shipped via separate binary
installers, but has migrated to use pip.
2025-05-28 23:20:03 +03:00
emscripten-bot
3bcf1dcd01 Release 4.0.9 (#1559)
With emscripten-releases revisions:

https://chromium.googlesource.com/emscripten-releases/+/cb2a69bce627bd2247624c71fc12907cb8785d2f
(LTO)

https://chromium.googlesource.com/emscripten-releases/+/27f1e0801c6ec5ea4d9a9e1d573eb1fead3525f1
(asserts)
2025-05-19 16:38:20 +00:00
emscripten-bot
419021fa04 Release 4.0.8 (#1556)
With emscripten-releases revisions:

https://chromium.googlesource.com/emscripten-releases/+/56f86607aeb458086e72f23188789be2ee0e971a
(LTO)

https://chromium.googlesource.com/emscripten-releases/+/ab275365d4057cf92d698ef99744d66cd8c7cba9
(asserts)
2025-04-30 23:22:38 +00:00
Sam Clegg
29cee8f46f Use raw string to avoid regex warning (#1552)
Followup to #1550
2025-04-15 16:51:03 -07:00
emscripten-bot
c69d433d85 Release 4.0.7 (#1549)
With emscripten-releases revisions:

https://chromium.googlesource.com/emscripten-releases/+/ef4e9cedeac3332e4738087567552063f4f250d3
(LTO)

https://chromium.googlesource.com/emscripten-releases/+/4bef8973dc12f5f38022f323d67c16237bbd2962
(asserts)
2025-04-15 21:55:59 +00:00
Sam Clegg
2e1e02e648 Don't build binaryen tests (#1551)
These seems to be some issue with building gtest on ubuntu/focal. Looks
like maybe the libstdc++ is too old for it.
2025-04-15 14:36:32 -07:00
Sam Clegg
0992ad5f5d Fix updating of MODULE.bazel in update_bazel_workspace.py (#1550)
The regex was not matching which caused #1549 to fail.
2025-04-15 14:13:21 -07:00
Conrad Burchert
ed2035a3cc Bazel: Migrate to bzlmod (#1530)
This migrates the bazel integration to the new Bazel dependency system
"bzlmod". bzlmod is becoming mandatory this year (see second sentence
here: https://bazel.build/external/migration).

This is a backwards incompatible migration, directly removing the old
WORKSPACE based approach. Users will have to change how they depend on
bzlmod, however I assume pretty much every user will be happy about it,
because they are forced to use bzlmod anyway or add extra flags to
continue to build with newer Bazel versions. Given that users normally
depend on specific git commits in the old system, they won't be hit with
this until they decide to upgrade emsdk.

The basic principle here is simple: I took everything that WORKSPACE did
and searched an alternative in bzlmod. Some interesting bits:

- We have less worries about multiple versions and people depending on
emscripten multiple times in different ways. This is resolved by the new
system: Bazel first iterates through the MODULE.bazel files recursively,
then finds the minimum version needed for each module and then executes
the module extensions that define repos exactly once at that version. So
no more ifs needed to detect multiple inclusions.
- A bunch of nodejs stuff moves to MODULE.bazel, because that is how the
nodejs module works now. As their module extension gets executed only
once you need to declare everything that you could need before that in
the MODULE.bazel file. A side effect of that is that we have to make a
fake repository when emscripten doesn't have an arm64 binary for linux,
because we can't actually figure that out in MODULE.bazel, so we have to
declare that it always exists and then create one in all cases.

There is a bunch of autoformatter changes in here as well, I could try
to revert them if you prefer.

Closes #1509
2025-04-09 14:38:12 -07:00