github emscripten-core/emscripten 7.0.0

one hour ago

What's Changed

  • Remove support for the EMCC_ONLY_FORCED_STDLIBS environment variable, which
    was deprecated in 2.0.14 (#13448). Use -nostdlib instead to avoid linking
    standard libraries. (#28151)
  • libclang_rt.builtins and libclang_rt.profile are now linked directly into
    all side modules, matching upstream clang behaviour. This means they are
    no longer exported from the main module, reducing MAIN_MODULE=1 code size.
    A new system library, libemcc, now exists for the emscripten-specific code
    that was previously included in libclang_rt.builtins but 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.profile out of libclang_rt.builtins so that it is only
    linked when profiling or coverage flags (such as -fprofile-instr-generate or
    --coverage) are enabled, avoiding unwanted default.profraw output at exit
    in MAIN_MODULE=1 builds. (#28123)
  • Pipes now have a 64 KiB capacity: non-blocking writes to a full pipe fail
    with EAGAIN. For now, blocking writes remain unbounded. (#27831)
  • When compiling and linking in a single command, auxiliary compiler output
    files (such as .dwo files from -gsplit-dwarf or .json files from
    -ftime-trace) are now named <output>-<input>.<ext>, matching the behavior
    of clang. Previously, .dwo files were named <input>.dwo and 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_LLVM23 until missing
    #include directives 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-unsafe access handles in
    pthreads builds, so unlink and rename fail with EIO on files open
    read-only. (#27937)
  • mimalloc was updated to 3.6.1. (#28026, #28068, #28121)
  • Restored --whole-archive behaviour 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 __deps is no longer required for
    direct JS-to-JS references (__deps is 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

Full Changelog: 6.0.13...7.0.0

Don't miss a new emscripten release

NewReleases is sending notifications on new releases.