Skip to content

Commit c68de2b

Browse files
committed
Merge branch 'main' into es6-acorn-closure
2 parents 1c3fa1a + 1cebdf5 commit c68de2b

565 files changed

Lines changed: 15193 additions & 11405 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.circleci/config.yml

Lines changed: 100 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ orbs:
66
executors:
77
linux-node:
88
docker:
9-
- image: cimg/node:18.20.3
9+
- image: cimg/node:20.15.1
1010
linux-python:
1111
docker:
1212
- image: cimg/python:3.10.7
@@ -55,10 +55,6 @@ commands:
5555
description: "bootstrap"
5656
steps:
5757
- run: ./bootstrap
58-
npm-install:
59-
description: "npm ci"
60-
steps:
61-
- run: npm ci
6258
pip-install:
6359
description: "pip install"
6460
parameters:
@@ -115,7 +111,7 @@ commands:
115111
description: "install canary version of node"
116112
steps:
117113
- install-node-version:
118-
node_version: "24.0.0-v8-canary202411045365c9d9be"
114+
node_version: "24.0.0-v8-canary202501036428a2737e"
119115
canary: true
120116
install-v8:
121117
description: "install v8 using jsvu"
@@ -164,7 +160,6 @@ commands:
164160
cat ~/emsdk/.emscripten
165161
- emsdk-env
166162
- bootstrap
167-
- npm-install
168163
build-libs:
169164
description: "Build all libraries"
170165
steps:
@@ -223,7 +218,6 @@ commands:
223218
command: git submodule update --init
224219
- emsdk-env
225220
- bootstrap
226-
- npm-install
227221
- pip-install
228222
upload-test-results:
229223
description: "Upload test results"
@@ -240,6 +234,10 @@ commands:
240234
description: "Name of given test suite"
241235
type: string
242236
default: ""
237+
extra-cflags:
238+
description: "Extra EMCC_CFLAGS"
239+
type: string
240+
default: ""
243241
steps:
244242
- when:
245243
# We only set EMTEST_RETRY_FLAKY on pull requests. When we run
@@ -250,6 +248,8 @@ commands:
250248
- set-retry-flaky-tests
251249
- run:
252250
name: run tests (<< parameters.title >>)
251+
environment:
252+
EMCC_CFLAGS: << parameters.extra-cflags >>
253253
command: |
254254
env
255255
./test/runner << parameters.test_targets >>
@@ -306,16 +306,18 @@ commands:
306306
- run:
307307
name: run tests (<< parameters.title >>)
308308
environment:
309-
EMTEST_LACKS_SOUND_HARDWARE: "1"
310309
EMTEST_DETECT_TEMPFILE_LEAKS: "0"
311310
# --no-sandbox because we are running as root and chrome requires
312311
# this flag for now: https://crbug.com/638180
313312
CHROME_FLAGS_BASE: "--no-first-run -start-maximized --no-sandbox --use-gl=swiftshader --user-data-dir=/tmp/chrome-emscripten-profile --enable-experimental-web-platform-features"
314313
CHROME_FLAGS_HEADLESS: "--headless=new --remote-debugging-port=1234"
315-
CHROME_FLAGS_WASM: "--enable-experimental-webassembly-features --js-flags=\"--experimental-wasm-memory64 --experimental-wasm-stack-switching --experimental-wasm-type-reflection\""
314+
CHROME_FLAGS_WASM: "--enable-experimental-webassembly-features --js-flags=\"--experimental-wasm-stack-switching --experimental-wasm-type-reflection\""
316315
CHROME_FLAGS_NOCACHE: "--disk-cache-dir=/dev/null --disk-cache-size=1 --media-cache-size=1 --disable-application-cache --incognito"
316+
# The runners lack sound hardware so fallback to a dummy device (and
317+
# bypass the user gesture so audio tests work without interaction)
318+
CHROME_FLAGS_AUDIO: " --use-fake-device-for-media-stream --autoplay-policy=no-user-gesture-required"
317319
command: |
318-
export EMTEST_BROWSER="/usr/bin/google-chrome $CHROME_FLAGS_BASE $CHROME_FLAGS_HEADLESS $CHROME_FLAGS_WASM $CHROME_FLAGS_NOCACHE"
320+
export EMTEST_BROWSER="/usr/bin/google-chrome $CHROME_FLAGS_BASE $CHROME_FLAGS_HEADLESS $CHROME_FLAGS_WASM $CHROME_FLAGS_NOCACHE $CHROME_FLAGS_AUDIO"
319321
# There are tests in the browser test suite that using libraries
320322
# that are not included by "./embuilder build ALL". For example the
321323
# PIC version of libSDL which is used by test_sdl2_misc_main_module
@@ -351,15 +353,26 @@ commands:
351353
command: |
352354
wget -O ~/ff.tar.bz2 "https://download.mozilla.org/?product=firefox-nightly-latest-ssl&os=linux64&lang=en-US"
353355
tar -C ~ -xf ~/ff.tar.bz2
356+
- run:
357+
name: Add audio dependencies
358+
command: |
359+
# This should add and start PulseAudio's dummy mixer. It will warn
360+
# that "This program is not intended to be run as root" but it can
361+
# be ignored.
362+
apt-get update -y
363+
apt-get install -q -y pulseaudio
364+
pulseaudio --start
354365
- run:
355366
name: configure firefox
356367
command: |
368+
# Note: the autoplay pref allows playback without user interaction
357369
mkdir ~/tmp-firefox-profile/
358370
cat > ~/tmp-firefox-profile/user.js \<<EOF
359371
user_pref("gfx.offscreencanvas.enabled", true);
360372
user_pref("javascript.options.shared_memory", true);
361373
user_pref("javascript.options.wasm_memory64", true);
362374
user_pref("dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled", true);
375+
user_pref("media.autoplay.default", 0);
363376
EOF
364377
- run:
365378
name: run tests (<< parameters.title >>)
@@ -369,7 +382,6 @@ commands:
369382
# support in headless mode) resolves
370383
EMTEST_LACKS_GRAPHICS_HARDWARE: "1"
371384
EMTEST_LACKS_WEBGPU: "1"
372-
EMTEST_LACKS_SOUND_HARDWARE: "1"
373385
# OffscreenCanvas support is not yet done in Firefox.
374386
EMTEST_LACKS_OFFSCREEN_CANVAS: "1"
375387
EMTEST_DETECT_TEMPFILE_LEAKS: "0"
@@ -402,7 +414,7 @@ commands:
402414
# this flag for now: https://crbug.com/638180
403415
CHROME_FLAGS_BASE: "--no-first-run -start-maximized --no-sandbox --use-gl=swiftshader --user-data-dir=/tmp/chrome-emscripten-profile"
404416
CHROME_FLAGS_HEADLESS: "--headless=new --remote-debugging-port=1234"
405-
CHROME_FLAGS_WASM: "--enable-experimental-webassembly-features --js-flags=\"--experimental-wasm-memory64\""
417+
CHROME_FLAGS_WASM: "--enable-experimental-webassembly-features"
406418
CHROME_FLAGS_NOCACHE: "--disk-cache-dir=/dev/null --disk-cache-size=1 --media-cache-size=1 --disable-application-cache --incognito"
407419
command: |
408420
export EMTEST_BROWSER="/usr/bin/google-chrome $CHROME_FLAGS_BASE $CHROME_FLAGS_HEADLESS $CHROME_FLAGS_WASM $CHROME_FLAGS_NOCACHE"
@@ -425,8 +437,8 @@ jobs:
425437
- checkout
426438
- pip-install
427439
- run: ruff check
428-
# TODO (cclauss): When ruff supports rule E303 without --preview, remove following line
429-
- run: ruff check --preview --select=E303
440+
# TODO (cclauss): When ruff supports rules E20,E30 without --preview, remove following line
441+
- run: ruff check --preview --select=E20,E30
430442
mypy:
431443
executor: focal
432444
steps:
@@ -437,7 +449,7 @@ jobs:
437449
executor: linux-node
438450
steps:
439451
- checkout
440-
- npm-install
452+
- run: npm ci
441453
- run: |
442454
npm run lint
443455
npm run check
@@ -526,6 +538,7 @@ jobs:
526538
asan.test_externref_emjs_dynlink
527539
asan.test_asyncify_longjmp
528540
asan.test_pthread_run_on_main_thread
541+
asan.test_minimal_runtime_global_initializer
529542
lsan.test_dylink_dso_needed
530543
lsan.test_stdio_locking
531544
lsan.test_dlfcn_basic
@@ -566,6 +579,7 @@ jobs:
566579
core2ss.test_pthread_thread_local_storage
567580
core2s.test_dylink_syslibs_missing_assertions
568581
core2s.test_module_wasm_memory
582+
cores.test_minimal_runtime_safe_heap
569583
wasm2js3.test_memorygrowth_2
570584
wasmfs.test_hello_world
571585
wasmfs.test_unistd_links*
@@ -589,8 +603,6 @@ jobs:
589603
wasmfs.test_fs_write
590604
wasmfs.test_fs_writev
591605
wasmfs.test_fs_writev_rawfs
592-
wasmfs.test_fs_writeFile
593-
wasmfs.test_fs_writeFile_rawfs
594606
wasmfs.test_fs_readv
595607
wasmfs.test_fs_write
596608
wasmfs.test_fs_readv_rawfs
@@ -642,7 +654,7 @@ jobs:
642654
# version of node (node canary) when running the compiler output (e.g.
643655
# in configure tests.
644656
- run:
645-
name: configure node canary
657+
name: configure compiler to use node-canary
646658
command: echo "NODE_JS = NODE_JS_TEST" >> ~/emsdk/.emscripten
647659
- run-tests:
648660
title: "wasm64"
@@ -746,6 +758,18 @@ jobs:
746758
command: git submodule update --init
747759
- pip-install
748760
- install-emsdk
761+
# `install-node-version` only changes the NODE_JS_TEST (the version of
762+
# node used to run test), not NODE_JS (the version of node used to run the
763+
# compiler itself).
764+
# In order to test that the compiler itself can run under the oldest
765+
# supported version of node, we run all the tests in the runner under that
766+
# version.
767+
# Keep this in sync with MINIMUM_NODE_VERSION in tools/shared.py.
768+
- install-node-version:
769+
node_version: "18.3.0"
770+
- run:
771+
name: configure compiler to use 18.3.0
772+
command: echo "NODE_JS = '$(which node)'" >> ~/emsdk/.emscripten
749773
- install-node-canary
750774
- run-tests:
751775
title: "node (canary)"
@@ -756,23 +780,75 @@ jobs:
756780
other.test_node_unhandled_rejection
757781
core2.test_hello_world
758782
core0.test_pthread_join_and_asyncify
759-
core0.test_async_ccall_promise_jspi
760-
core0.test_async_ccall_promise_exit_runtime_jspi
783+
core0.test_async_ccall_promise_jspi*
761784
core0.test_cubescript_jspi"
762785
# Run some basic tests with the minimum version of node that we currently
763-
# support.
786+
# support in the generated code.
787+
# Keep this in sync with `OLDEST_SUPPORTED_NODE` in `feature_matrix.py`
764788
- install-node-version:
765789
node_version: "10.19.0"
766790
- run-tests:
767791
title: "node (oldest / 10.19.0)"
792+
extra-cflags: "-sMIN_NODE_VERSION=101900"
793+
# We include most but not all of the nodefs and node rawfs tests here.
794+
# test_fs_nodefs_rw, test_fs_nodefs_statvfs, and test_unistd_io_nodefs_bigint fail.
768795
test_targets: "
769796
other.test_gen_struct_info
770797
other.test_native_call_before_init
771798
other.test_js_optimizer_verbose
772799
other.test_node_unhandled_rejection
773800
other.test_full_js_library*
774801
core2.test_hello_world
775-
core2.test_fs_write_rawfs"
802+
core2.test_fcntl_open_nodefs
803+
core2.test_fcntl_open_rawfs
804+
core2.test_fgetc_ungetc_nodefs
805+
core2.test_fgetc_ungetc_rawfs
806+
core2.test_fs_append_rawfs
807+
core2.test_fs_emptyPath_rawfs
808+
core2.test_fs_enotdir_nodefs
809+
core2.test_fs_enotdir_rawfs
810+
core2.test_fs_errorstack_rawfs
811+
core2.test_fs_llseek_rawfs
812+
core2.test_fs_mkdir_dotdot_nodefs
813+
core2.test_fs_mkdir_dotdot_rawfs
814+
core2.test_fs_mmap_nodefs
815+
core2.test_fs_mmap_rawfs
816+
core2.test_fs_nodefs_cloexec
817+
core2.test_fs_nodefs_cloexec_rawfs
818+
core2.test_fs_nodefs_dup
819+
core2.test_fs_nodefs_dup_rawfs
820+
core2.test_fs_nodefs_home
821+
core2.test_fs_nodefs_nofollow
822+
core2.test_fs_nodefs_readdir
823+
core2.test_fs_noderawfs_nofollow
824+
core2.test_fs_readdir_ino_matches_stat_ino_nodefs
825+
core2.test_fs_readdir_ino_matches_stat_ino_rawfs
826+
core2.test_fs_readv_rawfs
827+
core2.test_fs_rename_on_existing_nodefs
828+
core2.test_fs_rename_on_existing_rawfs
829+
core2.test_fs_symlink_resolution_nodefs
830+
core2.test_fs_symlink_resolution_rawfs
831+
core2.test_fs_writeFile*
832+
core2.test_fs_write_rawfs
833+
core2.test_fs_writev_rawfs
834+
core2.test_futimens_rawfs
835+
core2.test_readdir_rawfs
836+
core2.test_stat_chmod_rawfs
837+
core2.test_unistd_access_nodefs
838+
core2.test_unistd_access_rawfs
839+
core2.test_unistd_close_rawfs
840+
core2.test_unistd_dup_rawfs
841+
core2.test_unistd_io_nodefs
842+
core2.test_unistd_links_nodefs
843+
core2.test_unistd_misc_nodefs
844+
core2.test_unistd_pipe_rawfs
845+
core2.test_unistd_symlink_on_nodefs
846+
core2.test_unistd_truncate_nodefs
847+
core2.test_unistd_truncate_rawfs
848+
core2.test_unistd_unlink_nodefs
849+
core2.test_unistd_unlink_rawfs
850+
core2.test_unistd_write_broken_link_rawfs
851+
"
776852
# Run a few test with the most recent version of node
777853
# In particular we have some tests that require node flags on older
778854
# versions of node but not with the most recent version.
@@ -792,7 +868,7 @@ jobs:
792868
core2.test_i64_invoke_bigint
793869
core2.test_sse2
794870
core2.test_source_map
795-
core2.test_exceptions_wasm
871+
core2.test_exceptions_wasm_legacy
796872
core2.test_pthread_unhandledrejection"
797873
- upload-test-results
798874
test-other:
@@ -917,7 +993,6 @@ jobs:
917993
EMTEST_SKIP_V8: "1"
918994
EMTEST_SKIP_EH: "1"
919995
EMTEST_SKIP_WASM64: "1"
920-
EMTEST_SKIP_SIMD: "1"
921996
EMTEST_SKIP_SCONS: "1"
922997
EMTEST_SKIP_RUST: "1"
923998
EMTEST_SKIP_NODE_CANARY: "1"

.gitattributes

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ tools/crunch-worker.js -diff
44
third_party/lzma.js/lzma-decoder.js -diff
55
third_party/lzma.js/lzma-full.js -diff
66
test/other/test_emsize.js -diff
7-
src/emscripten-source-map.min.js -diff
87
test/* linguist-vendored
98
third_party/* linguist-vendored
109
system/ linguist-vendored

.github/dependabot.yml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,21 @@
55

66
version: 2
77
updates:
8-
- package-ecosystem: "github-actions" # See documentation for possible values
8+
- package-ecosystem: "npm"
9+
directory: "/" # Look for `package.json` and `lock` files in the `root` directory
10+
schedule:
11+
interval: "weekly"
12+
commit-message:
13+
prefix: "[deps]"
14+
groups:
15+
production-dependencies:
16+
dependency-type: "production"
17+
development-dependencies:
18+
dependency-type: "development"
19+
20+
- package-ecosystem: "github-actions"
921
directory: "/" # Location of package manifests
1022
schedule:
1123
interval: "weekly"
24+
commit-message:
25+
prefix: "[deps]"

.github/workflows/ci.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
make dist
2222
version=`cat emscripten-version.txt | sed s/\"//g`
2323
echo "VERSION=$version" >> $GITHUB_ENV
24-
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
24+
- uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.5
2525
with:
2626
name: emscripten-${{ env.VERSION }}
2727
path: emscripten-${{ env.VERSION }}.tar.bz2
@@ -33,6 +33,7 @@ jobs:
3333
- name: Checkout repo
3434
uses: actions/checkout@v4
3535
with:
36+
submodules: true
3637
fetch-depth: 0 # We want access to other branches, specifically `main`
3738
- name: pip install
3839
run: |

.github/workflows/scorecards.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929
persist-credentials: false
3030

3131
- name: "Run analysis"
32-
uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1
32+
uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1
3333
with:
3434
results_file: results.sarif
3535
results_format: sarif
@@ -44,14 +44,14 @@ jobs:
4444

4545
# Upload the results as artifacts (optional).
4646
- name: "Upload artifact"
47-
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
47+
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
4848
with:
4949
name: SARIF file
5050
path: results.sarif
5151
retention-days: 5
5252

5353
# Upload the results to GitHub's code scanning dashboard.
5454
- name: "Upload to code-scanning"
55-
uses: github/codeql-action/upload-sarif@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10
55+
uses: github/codeql-action/upload-sarif@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10
5656
with:
5757
sarif_file: results.sarif

.github/workflows/tag-release.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ jobs:
2525
title: Mark ${{ env.RELEASE_VERSION }} as released
2626
body: Update changelog and emscripten-version.txt [ci skip]
2727
team-reviewers: release-reviewers
28+
branch: release_${{ env.RELEASE_VERSION }}
2829
delete-branch: true
2930
- name: Enable auto-merge
3031
run: gh pr merge --squash --auto "${{ steps.cpr.outputs.pull-request-number }}"

0 commit comments

Comments
 (0)