(This newsletter is also available on our blog
<https://spidermonkey.dev/blog/2022/05/06/newsletter-firefox-100-101.html>.)

SpiderMonkey is the JavaScript engine used in Mozilla Firefox. This
newsletter gives an overview of the JavaScript and WebAssembly work we’ve
done as part of the Firefox 100 and 101 Nightly release cycles.
👷🏽‍♀️ New features

   - WritableStream and pipeTo are now enabled
   <https://bugzilla.mozilla.org/show_bug.cgi?id=1759597> by default
   (Firefox 100)
   - Wasm exception handling
   
<https://github.com/WebAssembly/exception-handling/blob/main/proposals/exception-handling/Exceptions.md>
   has been enabled <https://bugzilla.mozilla.org/show_bug.cgi?id=1759217>
   by default (Firefox 100)

⚙️ Modernizing JS modules

We’re working on improving our implementation of modules. This includes
supporting modules in Workers, adding support for Import Maps, and
ESM-ification (replacing the JSM module system for Firefox internal JS code
with standard ECMAScript modules).

   - We added <https://bugzilla.mozilla.org/show_bug.cgi?id=1436400>
   support for caching module scripts in the bytecode cache.
   - We landed <https://bugzilla.mozilla.org/show_bug.cgi?id=1752212>
   support for caching modules in the StartupCache.
   - We’ve landed <https://bugzilla.mozilla.org/show_bug.cgi?id=1759881>
   many changes <https://bugzilla.mozilla.org/show_bug.cgi?id=1766274> to
   improve the browser’s module loader code.
   - We’ve added <https://bugzilla.mozilla.org/show_bug.cgi?id=1763372> a
   common base class to work towards supporting modules in Workers.
   - We’ve landed a cleanup
   <https://bugzilla.mozilla.org/show_bug.cgi?id=1764596> for the Worker
   Script Loader.

🚀 JS Performance

   - We’ve added <https://bugzilla.mozilla.org/show_bug.cgi?id=885514>
   support for functions with simple try-finally blocks to the optimizing JIT,
   fixing a very old performance cliff. Support for more complicated cases
   will be added in a later release.
   - We’ve improved instanceof performance by removing the non-standard
   JSClass hook <https://bugzilla.mozilla.org/show_bug.cgi?id=1270746>,
   proxy trap <https://bugzilla.mozilla.org/show_bug.cgi?id=1760844>, and
   by optimizing <https://bugzilla.mozilla.org/show_bug.cgi?id=1763351>
   polymorphic cases better in the JITs.
   - We changed <https://bugzilla.mozilla.org/show_bug.cgi?id=1760605> how
   function.call and function.apply are optimized
   <https://bugzilla.mozilla.org/show_bug.cgi?id=1760989>. This is more
   robust and fixes some performance cliffs.
   - We added <https://bugzilla.mozilla.org/show_bug.cgi?id=1738413>
   support for optimizing builtin functions in CacheIR when called through
   function.call.
   - We used this to optimize
   <https://bugzilla.mozilla.org/show_bug.cgi?id=1765397> the common
   slice.call(arguments) pattern in the JITs.
   - We optimized <https://bugzilla.mozilla.org/show_bug.cgi?id=1763592>
   certain calls into C++ from optimized JIT code by removing (unnecessary)
   dynamic stack alignment.
   - We improved <https://bugzilla.mozilla.org/show_bug.cgi?id=1763831>
   CacheIR support for property-init operations.
   - We reimplemented <https://bugzilla.mozilla.org/show_bug.cgi?id=1282976>
   new.target as a real binding.
   - We added <https://bugzilla.mozilla.org/show_bug.cgi?id=1765779>
   support for scalar replacement of array iterator objects.

🏎️ WebAssembly Performance

   - We moved <https://bugzilla.mozilla.org/show_bug.cgi?id=1680243> trap
   instructions out-of-line to improve branch prediction.
   - We merged <https://bugzilla.mozilla.org/show_bug.cgi?id=1753692>
   wasm::Instance and TlsData. This eliminates some memory loads.
   - We improved <https://bugzilla.mozilla.org/show_bug.cgi?id=1756739>
   Baseline code performance by pinning the Instance/TLS register on most
   platforms.
   - We fixed some DevTools performance issues: opening the web console no
   longer <https://bugzilla.mozilla.org/show_bug.cgi?id=1719615> results in
   using slower debugging code for Wasm modules and we fixed
   <https://bugzilla.mozilla.org/show_bug.cgi?id=1756951> debugging support
   to not clone Wasm code.
   - We optimized <https://bugzilla.mozilla.org/show_bug.cgi?id=1762413> a
   common instruction sequence with SIMD instructions.
   - We added <https://bugzilla.mozilla.org/show_bug.cgi?id=1757244> AVX
   support for all binary SIMD operations.
   - We enabled <https://bugzilla.mozilla.org/show_bug.cgi?id=1759909>
   support for AVX instructions for Wasm SIMD on Nightly.
   - We optimized <https://bugzilla.mozilla.org/show_bug.cgi?id=1642412>
   table.get/set for anyref tables.
   - We optimized <https://bugzilla.mozilla.org/show_bug.cgi?id=1737266>
   memory.copy/fill for Memory64.

📚 Miscellaneous

   - We fixed <https://bugzilla.mozilla.org/show_bug.cgi?id=1762933> a
   number of compiler errors when compiling in C++20 mode.
   - We’ve updated <https://bugzilla.mozilla.org/show_bug.cgi?id=1763783>
   ICU to version 71.
   - We landed <https://bugzilla.mozilla.org/show_bug.cgi?id=1766844> a
   workaround for a glibc pthreads bug
   <https://sourceware.org/bugzilla/show_bug.cgi?id=25847> that was causing
   intermittent hangs in CI for JS shell tests on Linux.
   - We stopped <https://bugzilla.mozilla.org/show_bug.cgi?id=1763103>
   using extended functions for most class methods, to reduce memory usage.

-- 
You received this message because you are subscribed to the Google Groups 
"[email protected]" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/a/mozilla.org/d/msgid/dev-platform/CABTC%2BJfFoC2-Wpt%3DPSMR0WskcX8U-URuaaKDCHkQXd6fmbVwgw%40mail.gmail.com.

Reply via email to