Hello everyone,
Matthew here from the SpiderMonkey team. As the weather whipsaws from cold to hot to cold, I have elected to spend some time whipping together a too brief newsletter, which will almost certainly not capture the best of what we’ve done these last few months. Nevertheless, onwards!
🧑🎓Outreachy
We hosted an Outreachy intern, Serah Nderi, for the most recent Outreachy cycle, with Dan as her mentor. Serah worked on implementing the Iterator.range proposal as well as a few other things. We were happy to host her, and grateful to her for joining. Read about her internship project here.
🥯HYTRADBOI: Have You Tried Rubbing a Database On It
HYTRADBOI is an interesting independent online only conference, which this year had a strong programming languages track. Iain from the SpiderMonkey team was able to produce a stellar video talk called A quick ramp-up on ramping up quickly, where he helps the audience reinvent our baseline interpreter in 10 minutes. The talk is fun and short, so go forth and watch it!
👷🏽♀️ New features & In Progress Standards Work
We have done a whole bunch of shipping work this cycle. By far the most important thing is that Temporal has now been shipped on Nightly. We must extend our enormous gratitude to André Bargull, who has been implementing this proposal for years, providing reams of feedback to champions, and making it possible for us to ship so early. We’ve also been working on improving error messages reported to developers, and have a list of “good first bugs” available for people interested in getting started contributing to SpiderMonkey or Firefox.
In addition to Temporal, Dan has worked on shipping a number of our complete proposal implementations:
and Atomics.pause.
🚀 Performance
- New contributor abdoatef.ab got a nice speedup (2.3x on a micro-benchmark!) by hinting our object allocator on the final size an object literal.
- Jon added a slots-and-elements allocator which should reduce contention on the system allocator which is used for many other things.
- Jan added code to recycle LifoAllocs for IonCompilations, which reduces the amount of contention on the memory allocator where possible.
- Jan continued work on register allocation tuning, continuing on from where we left it last with Jan’s blog post.
- Jan’s been doing some work with fuses to take advantage of knowing the state of the VM more.
🚉 SpiderMonkey Platform Improvements
- Iain landed the infrastructure for off-thread baseline compilation and batched baseline compilation. The hope is that this will eventually lead to some performance improvements but it’s disabled while it is tuned for now.
- We now share the parsed version of our self-hosted code from parent process to child process on Android, leading to a small improvement in child process startup time on Android.
- Ryan added JitDump support for Wasm compilation, which means that now it shows up beautifully in Samply.