-
Notifications
You must be signed in to change notification settings - Fork 3.5k
Open
Description
Version of emscripten/emsdk: 3.1.41
emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 3.1.41 (71634e0)
clang version 17.0.0 (https://github.com/llvm/llvm-project 88421ea973916e60c34beb26597a5fc33f83dd8f)
Target: wasm32-unknown-emscripten
Thread model: posix
After upgrading from 3.1.16 to 3.1.41, I noticed a huge increase in the size of my application's javascript file generated by emscripten (1.2MB to 10.8MB). Seems to stem from a change in this PR: #18540 where the scope of included functions
settings.DEFAULT_LIBRARY_FUNCS_TO_INCLUDE.extend(strong_imports)
was changed to
settings.DEFAULT_LIBRARY_FUNCS_TO_INCLUDE.extend(sorted(imports))
Some examples of "extra" included functions in js file when using 3.1.41 (names removed):
function __Z10D3E_ABCDI10D3E_EFJHI_() { return wasmImports._Z10D3E_ABCDI10D3E_EFHJI_.apply(null, arguments) } __Z10D3E_ABCDI10D3E_EFHJI_.stub = !0;
function __Z10D3E_ABCDI10D3E_JKLMN_() { return wasmImports._Z10D3E_ABCDI10D3E_JKLMN_.apply(null, arguments) } __Z10D3E_ABCDI10D3E_JKLMN_.stub = !0;
...
var wasmImports = {
_Z10D3E_ABCDI10D3E_EFJHI_: __Z10D3E_ABCDI10D3E_EFJHI_,
_Z10D3E_ABCDI10D3E_JKLMN_: __Z10D3E_ABCDI10D3E_JKLMN_,
...
}
Linker flags:
LINK_FLAGS =
-fPIC
-s WASM_BIGINT=1
-fwasm-exceptions
-s MAIN_MODULE=2
-s INCLUDE_FULL_LIBRARY=1
-s AUTOLOAD_DYLIBS=0
-s NO_EXIT_RUNTIME=0
-s INLINING_LIMIT=1
-s FORCE_FILESYSTEM=1
--emit-symbol-map
-s LEGACY_GL_EMULATION=0
-s INITIAL_MEMORY=1000MB
-s ENVIRONMENT=web,worker
-s USE_SDL=0
-s EXPORTED_RUNTIME_METHODS=['allocate','writeArrayToMemory']
-s EXPORT_EXCEPTION_HANDLING_HELPERS=1
-s USE_WEBGL2=1
-s USE_GLFW=3
-s FULL_ES3=1
-s USE_WEBGPU=1
-s WASM=1
-s ALLOW_MEMORY_GROWTH=1
-s EVAL_CTORS=0
WASM1.wasm
WASM2.wasm
WASM3.wasm
-s USE_ICU=1
-flto
-Os
-s GL_TRACK_ERRORS=0
Non-exhaustive list of libraries (names removed):
LINK_LIBRARIES =
--pre-js PREJS.js
--post-js POSTJS.js
-Wl,--whole-archive LIB1.a
-Wl,--no-whole-archive -Wl,--whole-archive LIB2.a
-Wl,--no-whole-archive -Wl,--whole-archive LIB3.a
-Wl,--no-whole-archive -Wl,--whole-archive LIB4.a
...
-Wl,--no-whole-archive -Wl,--whole-archive LIB5.a
-Wl,--no-whole-archive LIB6.a
LIB7.a
...
LIB8.a
-Wl,--whole-archive LIB9.a
-Wl,--no-whole-archive -Wl,--whole-archive LIB10.a
...
-Wl,--no-whole-archive -Wl,--whole-archive LIB11.a
-Wl,--no-whole-archive LIB12.a
--js-library "JSLIB1.js"
LIB13.a
--js-library "JSLIB2.js"
LIB14.a
LIB15.a
LIB16.a
LIB17.a
...
LIB18.a
LIB2.a
LIB4.a
LIB5.a
LIB19.bc
LIB20.bc
LIB21.bc
LIB22.so
LIB23.a
...
LIB24.a
LIB1.a
LIB3.a
...
Metadata
Metadata
Assignees
Labels
No labels