Blog

  • 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 90 and 91 Nightly release cycles.

  • by Yulia Startsev

    Due to the recent changes on freenode, TC39 has moved to Matrix as its communication platform of choice. Read more here.

  • by Matthew Gaudet

    When programming with Private Fields and methods, it can sometimes be desirable to check if an object has a given private field. While the semantics of private fields allow doing that check by using try...catch, the Ergonomic Brand checks proposal provides a simpler syntax, allowing one to simply write #field in o.

  • by Yulia Startsev

    In this TC39 meeting, the updates to JavaScript Classes around private state have moved to stage 4. Other proposals of note this meeting were proposals related to ArrayBuffers, notably resizable ArrayBuffers and a new proposal, introducing read-only ArrayBuffers and fixed views into ArrayBuffers. Read-only ArrayBuffers are not a new ArrayBuffer, but rather a way to freeze existing ArrayBuffers so that they are not modified accidentally. Fixed views into ArrayBuffers would have the goal of not exposing more than the intended view of an ArrayBuffer to a third party.

  • by Matthew Gaudet
  • by Matthew Gaudet

    Firefox will ship Private Fields and Methods in Firefox 90. This new language syntax allows programmers to have strict access control over their class internals. A private field can only be accessed by code inside the class declaration.

  • by SpiderMonkey Team

    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 88 and 89 Nightly release cycles.

  • by Yulia Startsev

    Firefox will ship Top Level Await by default starting in Firefox 89. This new feature introduces a capability to modules allowing programmers to do asynchronous work, such as fetching data, directly at the top level of any module.

  • by Yulia Startsev

    This meeting marks the first of a series of shorter meetings, which will hopefully help us stay focused and more productive. TC39 has updated its process to have 8 meetings a year, instead of the usual 6, with 4 regular length meetings and 4 short two-day meetings. This being the first of that cycle. You may notice that these updates are a little shorter than usual.

  • by SpiderMonkey Team

    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 86 and 87 Nightly release cycles.

  • by Yulia Startsev

    This meeting, the focus was in brand checking. We had a few proposals looking at the question of “how do we know what this really is”. In JavaScript, instanceof is spoofable. A non spoofable check is refered to as a brand. A common example is Array.isArray. We discussed brand checks in a few forms, including class brand checks, using private fields as a way of determining a brand, Type.isType as a generic brand check, and brand checks on template strings.

  • by SpiderMonkey Team

    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 84 and 85 Nightly release cycles.

  • by Yulia Startsev

    A few weeks ago in November, we had our last TC39 meeting for the year. At this meeting, Shu-yu Guo preesented a vision for concurrent JavaScript – a goal that Google is working towards in a number of proposals. One of the presentations supported this goal, namely JS Module blocks. This would allow you to create a module block in the following way:

  • by SpiderMonkey Team

    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 82 and 83 Nightly release cycles.

  • by Yulia Startsev

    In the September 2020 TC39 meeting, a few smaller proposals moved into the mature stages. Display names (implemented in 78 by André Bargul) moved to stage 4 in this meeting. Import Assertions moved to stage 3, as did .item.

  • by SpiderMonkey Team

    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 80 and 81 Nightly release cycles. If you like these newsletters, you may also enjoy Yulia’s Compiler Compiler live stream.

  • by Yulia Startsev

    At this meeting a number of proposals moved from stage 3 (candidate proposal) to stage 4 (finished). WeakRefs was among the proposals to move to stage 4, introducing a capability to the web that was not present before. From an ergonomics point of view, logical assignment and Promise.any both advanced to stage 4. Two internationalization apis also advanced, DateTimeFormat and ListFormat. The only stage 2 proposal to move forward to stage 3 was an internationalization proposal, Intl.Segmenter. Adam Vandolder presented on the IteratorHelpers proposal, with the aim of moving it to stage 3 in September’s meeting.

  • by SpiderMonkey Team

    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 78 and 79 Nightly release cycles.

  • by Yulia Startsev

    At this meeting we covered a lot of ground. It was the first four day meeting, with each meeting at 5 hours. This meeting did not see any stage 2 proposals advance to stage 3, so in terms of implementation work, we do not have new tasks. However, we do have significant review work. One large proposal, Temporal, will be seeking stage 3 at an upcoming meeting. Decorators also needs to be discussed again.

  • by SpiderMonkey Team

    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 76 and 77 Nightly cycles.

  • by Yulia Startsev

    At this meeting, the draft for 2020 was approved. We are now starting work on the 2021 draft. There were a number of upates to proposals at this meeting, and a few proposals were revived – including decorators and pattern matching.

  • by SpiderMonkey Team

    JavaScript

  • by Yulia Startsev

    This was an unusual meeting. There were far more stage 1 seeking proposals, and a number of process proposals. As a result, there is not much work for us to do coming out of this meeting, beyond a few reviews.

  • by SpiderMonkey Team

    Happy new year from the SpiderMonkey team!

  • by Yulia Startsev

    Need Review:

  • by SpiderMonkey Team

    The SpiderMonkey team is experimenting with a newsletter at the end of each release cycle for status updates on ongoing projects, new features and contributor work. The format may change over time as we figure out what works best. This is our first newsletter and we’d love to hear your feedback!

  • Hello world!

    Nov 26, 2019
    by SpiderMonkey Team

    First blog post.

  • by Yulia Startsev

    Not much significant change that we need to be worried about but lot of new proposals moved to stage 1. We have some reviewing work to do, as there is so much new stuff.

  • by Yulia Startsev

    Stage 4, ready to ship: Promise.allSettled bug Two syntax changes have moved to stage 3, nullish coalescence and optional chaining A lot of discussion around built in modules. No forward movement. Issues with Weakref – it cannot be tested in the current test262 setup. Discussion around how to address this.

  • by Yulia Startsev
    • Quite a bit of work on string methods and promise methods.
    • temporal is now blocked on standard modules, adding pressure to do that
    • dynamic import will move to stage 4 if all goes well with realms?
    • Decorators minimal proposal with built in decorators was presented
    • Decorators were also presented as a solution for numeric separators / literals