What's Changed
- Remove support for the
EMCC_ONLY_FORCED_STDLIBSenvironment variable, which
was deprecated in 2.0.14 (#13448). Use-nostdlibinstead to avoid linking
standard libraries. (#28151) libclang_rt.builtinsandlibclang_rt.profileare now linked directly into
all side modules, matching upstream clang behaviour. This means they are
no longer exported from the main module, reducingMAIN_MODULE=1code size.
A new system library,libemcc, now exists for the emscripten-specific code
that was previously included inlibclang_rt.builtinsbut requires a single
program-wide definition. If you build with-nostdlib, and explictly list
system libraries you would now need to include-lemcc. (#28142)- Split
libclang_rt.profileout oflibclang_rt.builtinsso that it is only
linked when profiling or coverage flags (such as-fprofile-instr-generateor
--coverage) are enabled, avoiding unwanteddefault.profrawoutput at exit
inMAIN_MODULE=1builds. (#28123) - Pipes now have a 64 KiB capacity: non-blocking writes to a full pipe fail
withEAGAIN. For now, blocking writes remain unbounded. (#27831) - When compiling and linking in a single command, auxiliary compiler output
files (such as.dwofiles from-gsplit-dwarfor.jsonfiles from
-ftime-trace) are now named<output>-<input>.<ext>, matching the behavior
ofclang. Previously,.dwofiles were named<input>.dwoand other
auxiliary files were written to the temporary directory. (#28045) - libcxx, libcxxabi, libunwind and compiler-rt were updated to LLVM 23.1.3.
Note that libc++ 23 removes many transitive header includes by default, which
may cause build errors in code that relies on them. As a temporary workaround,
you can define-D_LIBCPP_KEEP_TRANSITIVE_INCLUDES_LLVM23until missing
#includedirectives are added. See the libc++ 23 release notes for details:
https://libcxx.llvm.org/ReleaseNotes/23.html#potentially-breaking-changes
(#28011, #28014, #28108, #28149) - The WasmFS OPFS backend now uses
readwrite-unsafeaccess handles in
pthreads builds, sounlinkandrenamefail withEIOon files open
read-only. (#27937) - mimalloc was updated to 3.6.1. (#28026, #28068, #28121)
- Restored
--whole-archivebehaviour when linking with-sSIDE_MODULE=1
(fixing a regression from 6.0.0 where static archives were no longer included
in full), while keeping native archive behaviour for-shared. (#28055) - JavaScript library dependencies on other JavaScript library symbols are now
detected automatically by the compiler, so__depsis no longer required for
direct JS-to-JS references (__depsis still supported for dependencies on
compiled C/C++ symbols or indirect dependencies). (#27995) - The default minimum browser versions targeted by Emscripten were increased:
MIN_CHROME_VERSION: 85 (Aug 2020) -> 93 (Aug 2021)MIN_FIREFOX_VERSION: 79 (Jul 2020) -> 92 (Sep 2021)MIN_SAFARI_VERSION: 15.0 (Sep 2021) -> 15.4 (Mar 2022)
(#28141)
Contributors
Thanks to the following contributors: @sbc100 (70) @aheejin (7) @kleisauke (7) @clementperon (4) @guybedford (4) @dschuff (2) @JulesPatmanidis (2) @rustyconover (2) @tlively (2) @ypujante (2) @arsnyder16 (1) @basvandijk (1) @brendandahl (1) @dimokol (1) @Grantim (1) @hoodmane (1) @JesusFileto (1) @kripken (1) @lyrixx (1) @piandtheradians-glitch (1) @Project516 (1) @RagedPanda (1) @stephenduong1004 (1) @subhaushsingh (1) @Thanatos9404 (1) @trackoor (1)
New Contributors
- @rustyconover made their first contribution in #28002
- @JesusFileto made their first contribution in #28033
- @RagedPanda made their first contribution in #28070
- @piandtheradians-glitch made their first contribution in #28066
- @Project516 made their first contribution in #28110
- @lyrixx made their first contribution in #28135
- @basvandijk made their first contribution in #28125
- @Thanatos9404 made their first contribution in #28177
- @trackoor made their first contribution in #28170
Full Changelog: 6.0.13...7.0.0