Skip to content

Error: "AST should not contain Dynamic module import" when upgrading from 4.0.5 to 4.0.6 #24050

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

Open
jrouwe opened this issue Apr 4, 2025 · 5 comments

Comments

@jrouwe
Copy link
Contributor

jrouwe commented Apr 4, 2025

Given

// main.c
#include <stdio.h>

int main() {
  printf("Hello, Emscripten!\n");
  return 0;
}
// minimal_mrp.js
Module['minimal-function-test'] = (scriptUrl, scriptParams) => {
  import(scriptUrl).then(module => {
    module.default(scriptParams).then(() => console.log('success'));
  })
}

and

// build.sh
emcc main.c -v --post-js minimal_mrp.js \
  --closure=1 \
  -s EXPORT_ES6=1 -s EXPORT_NAME="Test" -s MODULARIZE=1 -s WASM=1 -o Test.js

Zipped: MRP.zip

When building with emscripten 4.0.6 you get an error from closure:

building:ERROR: java.lang.IllegalStateException: AST should not contain Dynamic module import.

whereas on 4.0.5 it compiles without any problems. This is caused by the import statement in minimal_mrp.js.

Note that we found a work around for it, but it would be nice if it wasn't needed.

Version of emscripten/emsdk:
emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 4.0.6 (1ddaae4)

Failing command line in full:

 /home/jorrit/emsdk/upstream/bin/clang -target wasm32-unknown-emscripten -fignore-exceptions -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --sysroot=/home/jorrit/emsdk/upstream/emscripten/cache/sysroot -DEMSCRIPTEN -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -c main.c -o /tmp/emscripten_temp_bo4evnz7/main_0.o
clang version 21.0.0git (https:/github.com/llvm/llvm-project 4775e6d9099467df9363e1a3cd5950cc3d2fde05)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /home/jorrit/emsdk/upstream/bin
 (in-process)
 "/home/jorrit/emsdk/upstream/bin/clang-21" -cc1 -triple wasm32-unknown-emscripten -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name main.c -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -fvisibility=hidden -debugger-tuning=gdb -fdebug-compilation-dir=/mnt/c/Users/jrouw/Documents/Code/tmp5 -v -fcoverage-compilation-dir=/mnt/c/Users/jrouw/Documents/Code/tmp5 -resource-dir /home/jorrit/emsdk/upstream/lib/clang/21 -D EMSCRIPTEN -isysroot /home/jorrit/emsdk/upstream/emscripten/cache/sysroot -internal-isystem /home/jorrit/emsdk/upstream/lib/clang/21/include -internal-isystem /home/jorrit/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem /home/jorrit/emsdk/upstream/emscripten/cache/sysroot/include -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fignore-exceptions -fcolor-diagnostics -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o /tmp/emscripten_temp_bo4evnz7/main_0.o -x c main.c
clang -cc1 version 21.0.0git based upon LLVM 21.0.0git default target x86_64-unknown-linux-gnu
ignoring nonexistent directory "/home/jorrit/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
 /home/jorrit/emsdk/upstream/emscripten/cache/sysroot/include/fakesdl
 /home/jorrit/emsdk/upstream/emscripten/cache/sysroot/include/compat
 /home/jorrit/emsdk/upstream/lib/clang/21/include
 /home/jorrit/emsdk/upstream/emscripten/cache/sysroot/include
End of search list.
 /home/jorrit/emsdk/upstream/bin/clang --version
 /home/jorrit/emsdk/upstream/bin/wasm-ld -o Test.wasm /tmp/emscripten_temp_bo4evnz7/main_0.o -L/home/jorrit/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten -L/home/jorrit/emsdk/upstream/emscripten/src/lib -lGL-getprocaddr -lal -lhtml5 -lstubs-debug -lnoexit -lc-debug -ldlmalloc-debug -lcompiler_rt -lc++-noexcept -lc++abi-debug-noexcept -lsockets -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr /tmp/tmpdzr3yvwolibemscripten_js_symbols.so --strip-debug --export=emscripten_stack_get_end --export=emscripten_stack_get_free --export=emscripten_stack_get_base --export=emscripten_stack_get_current --export=emscripten_stack_init --export=_emscripten_stack_alloc --export=__wasm_call_ctors --export=_emscripten_stack_restore --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=__start_em_lib_deps --export-if-defined=__stop_em_lib_deps --export-if-defined=__start_em_js --export-if-defined=__stop_em_js --export-if-defined=main --export-if-defined=__main_argc_argv --export-if-defined=fflush --export-table -z stack-size=65536 --no-growable-memory --initial-heap=16777216 --no-entry --stack-first --table-base=1
 /home/jorrit/emsdk/upstream/bin/llvm-objcopy Test.wasm Test.wasm --remove-section=.debug* --remove-section=producers --remove-section=name
 /home/jorrit/emsdk/node/20.18.0_64bit/bin/node /home/jorrit/emsdk/upstream/emscripten/tools/compiler.mjs -
 /home/jorrit/emsdk/node/20.18.0_64bit/bin/node --max_old_space_size=8192 /home/jorrit/emsdk/upstream/emscripten/node_modules/.bin/google-closure-compiler --compilation_level ADVANCED_OPTIMIZATIONS --language_in UNSTABLE --language_out NO_TRANSPILE --emit_use_strict=false --externs /home/jorrit/emsdk/upstream/emscripten/src/closure-externs/closure-externs.js --externs /home/jorrit/emsdk/upstream/emscripten/src/closure-externs/modularize-externs.js --externs /home/jorrit/emsdk/upstream/emscripten/src/closure-externs/node-externs.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/tls.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/string_decoder.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/https.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/url.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/vm.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/domain.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/events.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/path.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/readline.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/child_process.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/net.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/fs.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/tty.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/core.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/zlib.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/process.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/cluster.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/repl.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/querystring.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/os.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/punycode.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/http.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/dgram.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/buffer.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/util.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/stream.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/dns.js --js /tmp/emscripten_temp_bo4evnz7/Test.js --js_output_file tmp03ry5i12.cc.js --formatting PRETTY_PRINT
building:ERROR: Closure compiler run failed:

building:ERROR: java.lang.IllegalStateException: AST should not contain Dynamic module import. Reference node:
DYNAMIC_IMPORT 1645:2  [length: 17] [source_file: /tmp/emscripten_temp_bo4evnz7/Test.js] : Color{id=39581abf, prototypes=[], instanceColors=[], invalidating=false, propertiesKeepOriginalName=false, constructor=false, ownProperties=[], boxId=null, closureAssert=false, unionElements=[]}
    NAME a 1645:9  [length: 9] [source_file: /tmp/emscripten_temp_bo4evnz7/Test.js] : Color{id=0, prototypes=[], instanceColors=[], invalidating=true, propertiesKeepOriginalName=false, constructor=false, ownProperties=[], boxId=null, closureAssert=false, unionElements=[]}

 Parent node:
GETPROP then 1645:20  [length: 4] [source_file: /tmp/emscripten_temp_bo4evnz7/Test.js] : Color{id=889b6838, prototypes=[], instanceColors=[], invalidating=true, propertiesKeepOriginalName=false, constructor=false, ownProperties=[], boxId=null, closureAssert=false, unionElements=[]}
    DYNAMIC_IMPORT 1645:2  [length: 17] [source_file: /tmp/emscripten_temp_bo4evnz7/Test.js] : Color{id=39581abf, prototypes=[], instanceColors=[], invalidating=false, propertiesKeepOriginalName=false, constructor=false, ownProperties=[], boxId=null, closureAssert=false, unionElements=[]}
        NAME a 1645:9  [length: 9] [source_file: /tmp/emscripten_temp_bo4evnz7/Test.js] : Color{id=0, prototypes=[], instanceColors=[], invalidating=true, propertiesKeepOriginalName=false, constructor=false, ownProperties=[], boxId=null, closureAssert=false, unionElements=[]}

        at com.google.javascript.jscomp.AstValidator$1.handleViolation(AstValidator.java:88)
        at com.google.javascript.jscomp.AstValidator.violation(AstValidator.java:2194)
        at com.google.javascript.jscomp.AstValidator.validateFeature(AstValidator.java:2275)
        at com.google.javascript.jscomp.AstValidator.validateExpression(AstValidator.java:515)
        at com.google.javascript.jscomp.AstValidator.validatePropertyReferenceTarget(AstValidator.java:1840)
        at com.google.javascript.jscomp.AstValidator.validateGetProp(AstValidator.java:1820)
        at com.google.javascript.jscomp.AstValidator.validateExpression(AstValidator.java:459)
        at com.google.javascript.jscomp.AstValidator.validateCall(AstValidator.java:1231)
        at com.google.javascript.jscomp.AstValidator.validateExpression(AstValidator.java:479)
        at com.google.javascript.jscomp.AstValidator.validateExprStmt(AstValidator.java:1620)
        at com.google.javascript.jscomp.AstValidator.validateStatement(AstValidator.java:249)
        at com.google.javascript.jscomp.AstValidator.validateStatement(AstValidator.java:193)
        at com.google.javascript.jscomp.AstValidator.validateBlock(AstValidator.java:1044)
        at com.google.javascript.jscomp.AstValidator.validateFunctionExpressionHelper(AstValidator.java:1162)
        at com.google.javascript.jscomp.AstValidator.validateFunctionExpression(AstValidator.java:1143)
        at com.google.javascript.jscomp.AstValidator.validateExpression(AstValidator.java:491)
        at com.google.javascript.jscomp.AstValidator.validateAssignmentExpression(AstValidator.java:1764)
        at com.google.javascript.jscomp.AstValidator.validateExpression(AstValidator.java:365)
        at com.google.javascript.jscomp.AstValidator.validateExprStmt(AstValidator.java:1620)
        at com.google.javascript.jscomp.AstValidator.validateStatement(AstValidator.java:249)
        at com.google.javascript.jscomp.AstValidator.validateStatement(AstValidator.java:193)
        at com.google.javascript.jscomp.AstValidator.validateStatements(AstValidator.java:187)
        at com.google.javascript.jscomp.AstValidator.validateScript(AstValidator.java:141)
        at com.google.javascript.jscomp.AstValidator.validateCodeRoot(AstValidator.java:127)
        at com.google.javascript.jscomp.AstValidator.process(AstValidator.java:112)
        at com.google.javascript.jscomp.PhaseOptimizer$NamedPass.process(PhaseOptimizer.java:240)
        at com.google.javascript.jscomp.PhaseOptimizer.process(PhaseOptimizer.java:179)
        at com.google.javascript.jscomp.Compiler.performFinalizations(Compiler.java:2980)
        at com.google.javascript.jscomp.Compiler.lambda$stage3Passes$8(Compiler.java:1048)
        at com.google.javascript.jscomp.CompilerExecutor.lambda$runInCompilerThread$0(CompilerExecutor.java:100)
        at [email protected]/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at [email protected]/java.lang.Thread.run(Thread.java:833)
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:775)
        at org.graalvm.nativeimage.builder/com.oracle.svm.core.posix.thread.PosixPlatformThreads.pthreadStartRoutine(PosixPlatformThreads.java:203)

emcc: error: closure compiler failed (rc: 254): /home/jorrit/emsdk/node/20.18.0_64bit/bin/node --max_old_space_size=8192 /home/jorrit/emsdk/upstream/emscripten/node_modules/.bin/google-closure-compiler --compilation_level ADVANCED_OPTIMIZATIONS --language_in UNSTABLE --language_out NO_TRANSPILE --emit_use_strict=false --externs /home/jorrit/emsdk/upstream/emscripten/src/closure-externs/closure-externs.js --externs /home/jorrit/emsdk/upstream/emscripten/src/closure-externs/modularize-externs.js --externs /home/jorrit/emsdk/upstream/emscripten/src/closure-externs/node-externs.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/tls.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/string_decoder.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/https.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/url.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/vm.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/domain.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/events.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/path.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/readline.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/child_process.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/net.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/fs.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/tty.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/core.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/zlib.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/process.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/cluster.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/repl.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/querystring.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/os.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/punycode.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/http.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/dgram.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/buffer.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/util.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/stream.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/dns.js --js /tmp/emscripten_temp_bo4evnz7/Test.js --js_output_file tmp03ry5i12.cc.js --formatting PRETTY_PRINT
@brendandahl
Copy link
Collaborator

I get the same error with 4.0.5. Are you sure that was a working version?

@jrouwe
Copy link
Contributor Author

jrouwe commented Apr 6, 2025

Yes I can reliable either trigger or not trigger the error by running:

./emsdk install 4.0.6
./emsdk activate 4.0.6

=> Output is as above

running:

./emsdk install 4.0.5
./emsdk activate 4.0.5

I get emcc --version:

emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 4.0.5 (53b38d0)

and ./build.sh finishes without errors:

 /home/jorrit/emsdk/upstream/bin/clang -target wasm32-unknown-emscripten -fignore-exceptions -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --sysroot=/home/jorrit/emsdk/upstream/emscripten/cache/sysroot -DEMSCRIPTEN -Xclang -iwithsysroot/include/fakesdl -Xclang -iwithsysroot/include/compat -v -c main.c -o /tmp/emscripten_temp_8bv02e9y/main_0.o
clang version 21.0.0git (https:/github.com/llvm/llvm-project 553da9634dc4bae215e6c850d2de3186d09f9da5)
Target: wasm32-unknown-emscripten
Thread model: posix
InstalledDir: /home/jorrit/emsdk/upstream/bin
 (in-process)
 "/home/jorrit/emsdk/upstream/bin/clang-21" -cc1 -triple wasm32-unknown-emscripten -emit-obj -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name main.c -mrelocation-model static -mframe-pointer=none -ffp-contract=on -fno-rounding-math -mconstructor-aliases -target-cpu generic -fvisibility=hidden -debugger-tuning=gdb -fdebug-compilation-dir=/home/jorrit/tmp5 -v -fcoverage-compilation-dir=/home/jorrit/tmp5 -resource-dir /home/jorrit/emsdk/upstream/lib/clang/21 -D EMSCRIPTEN -isysroot /home/jorrit/emsdk/upstream/emscripten/cache/sysroot -internal-isystem /home/jorrit/emsdk/upstream/lib/clang/21/include -internal-isystem /home/jorrit/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten -internal-isystem /home/jorrit/emsdk/upstream/emscripten/cache/sysroot/include -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fignore-exceptions -fcolor-diagnostics -iwithsysroot/include/fakesdl -iwithsysroot/include/compat -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -o /tmp/emscripten_temp_8bv02e9y/main_0.o -x c main.c
clang -cc1 version 21.0.0git based upon LLVM 21.0.0git default target x86_64-unknown-linux-gnu
ignoring nonexistent directory "/home/jorrit/emsdk/upstream/emscripten/cache/sysroot/include/wasm32-emscripten"
#include "..." search starts here:
#include <...> search starts here:
 /home/jorrit/emsdk/upstream/emscripten/cache/sysroot/include/fakesdl
 /home/jorrit/emsdk/upstream/emscripten/cache/sysroot/include/compat
 /home/jorrit/emsdk/upstream/lib/clang/21/include
 /home/jorrit/emsdk/upstream/emscripten/cache/sysroot/include
End of search list.
 /home/jorrit/emsdk/upstream/bin/clang --version
cache:INFO: generating system asset: symbol_lists/ab8ac905d0dfe51b233737d154309a9dc11c49dc.json... (this will be cached in "/home/jorrit/emsdk/upstream/emscripten/cache/symbol_lists/ab8ac905d0dfe51b233737d154309a9dc11c49dc.json" for subsequent builds)
 /home/jorrit/emsdk/node/20.18.0_64bit/bin/node /home/jorrit/emsdk/upstream/emscripten/tools/compiler.mjs - --symbols-only
cache:INFO:  - ok
 /home/jorrit/emsdk/upstream/bin/wasm-ld -o Test.wasm /tmp/emscripten_temp_8bv02e9y/main_0.o -L/home/jorrit/emsdk/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten -L/home/jorrit/emsdk/upstream/emscripten/src/lib -lGL-getprocaddr -lal -lhtml5 -lstubs-debug -lnoexit -lc-debug -ldlmalloc-debug -lcompiler_rt -lc++-noexcept -lc++abi-debug-noexcept -lsockets -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr /tmp/tmpzct2p19hlibemscripten_js_symbols.so --strip-debug --export=emscripten_stack_get_end --export=emscripten_stack_get_free --export=emscripten_stack_get_base --export=emscripten_stack_get_current --export=emscripten_stack_init --export=_emscripten_stack_alloc --export=__wasm_call_ctors --export=_emscripten_stack_restore --export-if-defined=__start_em_asm --export-if-defined=__stop_em_asm --export-if-defined=__start_em_lib_deps --export-if-defined=__stop_em_lib_deps --export-if-defined=__start_em_js --export-if-defined=__stop_em_js --export-if-defined=main --export-if-defined=__main_argc_argv --export-if-defined=fflush --export-table -z stack-size=65536 --no-growable-memory --initial-heap=16777216 --no-entry --stack-first --table-base=1
 /home/jorrit/emsdk/upstream/bin/llvm-objcopy Test.wasm Test.wasm --remove-section=.debug* --remove-section=producers --remove-section=name
 /home/jorrit/emsdk/node/20.18.0_64bit/bin/node /home/jorrit/emsdk/upstream/emscripten/tools/compiler.mjs -
 /home/jorrit/emsdk/node/20.18.0_64bit/bin/node --max_old_space_size=8192 /home/jorrit/emsdk/upstream/emscripten/node_modules/.bin/google-closure-compiler --compilation_level ADVANCED_OPTIMIZATIONS --language_in UNSTABLE --language_out NO_TRANSPILE --emit_use_strict=false --externs /home/jorrit/emsdk/upstream/emscripten/src/closure-externs/closure-externs.js --externs /home/jorrit/emsdk/upstream/emscripten/src/closure-externs/modularize-externs.js --externs /home/jorrit/emsdk/upstream/emscripten/src/closure-externs/node-externs.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/tls.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/string_decoder.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/https.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/url.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/vm.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/domain.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/events.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/path.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/readline.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/child_process.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/net.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/fs.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/tty.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/core.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/zlib.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/process.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/cluster.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/repl.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/querystring.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/os.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/punycode.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/http.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/dgram.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/buffer.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/util.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/stream.js --externs /home/jorrit/emsdk/upstream/emscripten/third_party/closure-compiler/node-externs/dns.js --js /tmp/emscripten_temp_8bv02e9y/Test.js --js_output_file tmpvrng1_ly.cc.js --formatting PRETTY_PRINT

it produces a Test.wasm and Test.js and I can find the MRP code back in minified form:

c["minimal-function-test"] = (a, b) => {
  import(a).then(d => {
    d.default(b).then(() => console.log("success"));
  });
};

I'm running a fully patched up Ubuntu 24.04.2 on WSL and deleted my emsdk folder and got a new one by doing git clone https://github.com/emscripten-core/emsdk.git before running this experiment.

@brendandahl
Copy link
Collaborator

I was just updating the emscripten version which always pointed at a newer version of closure. If I switch versions with emsdk then I can reproduce.

It looks like it was a change with how we run closure with emsdk and now the new version is selected.
Closure version
4.0.6
Version: v20240317
4.0.5
Version: v20230502

@sbc100
Copy link
Collaborator

sbc100 commented Apr 9, 2025

I think it was actually this change which removes the pinned version of closure compiler: https://chromium-review.googlesource.com/c/emscripten-releases/+/6388656

@sbc100
Copy link
Collaborator

sbc100 commented Apr 9, 2025

Looks like this is due to (related to) and upstream issue in closure compiler: google/closure-compiler#4126

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

No branches or pull requests

3 participants