Skip to content
Version 1.65.90

- GJS now has an optional, Linux-only, dependency on libsysprof-capture-4
  instead of libsysprof-capture-3 for the profiler functionality.

- New API: gjs_coverage_enable() allows the collection of code coverage metrics.
  If you are using GjsCoverage, it is now required to call gjs_coverage_enable()
  before you create the first GjsContext. Previously this was not necessary, but
  due to changes in SpiderMonkey 78 you must now indicate in advance if you want
  to collect code coverage metrics.

- New JavaScript features! This version of GJS is based on SpiderMonkey 78, an
  upgrade from the previous ESR (Extended Support Release) of SpiderMonkey 68.
  Here are the highlights of the new JavaScript features.
  For more information, look them up on MDN or devdocs.io.

  * New language features
    + A new regular expression engine, supporting lookbehind and named capture
      groups, among other things

  * New syntax
    + The ?? operator ("nullish coalescing operator") is now supported
    + The ?. operator ("optional chaining operator") is now supported
    + Public static class fields are now supported
    + Separators in numeric literals are now supported: for example, 1_000_000

  * New APIs
    + String.replaceAll() for replacing all instances of a string inside another
      string
    + Promise.allSettled() for awaiting until all Promises in an array have
      either fulfilled or rejected
    + Intl.Locale
    + Intl.ListFormat
    + Intl.RelativeTimeFormat.formatToParts()

  * New behaviour
    + There are a lot of minor behaviour changes as SpiderMonkey's JS
      implementation conforms ever closer to existing ECMAScript standards and
      adopts new ones. For complete information, read the Firefox developer
      release notes:
      https://developer.mozilla.org/en-US/Firefox/Releases/69#JavaScript
      https://developer.mozilla.org/en-US/Firefox/Releases/70#JavaScript
      https://developer.mozilla.org/en-US/Firefox/Releases/71#JavaScript
      https://developer.mozilla.org/en-US/Firefox/Releases/72#JavaScript
      https://developer.mozilla.org/en-US/Firefox/Releases/73#JavaScript
      https://developer.mozilla.org/en-US/Firefox/Releases/74#JavaScript
      https://developer.mozilla.org/en-US/Firefox/Releases/75#JavaScript
      https://developer.mozilla.org/en-US/Firefox/Releases/76#JavaScript
      https://developer.mozilla.org/en-US/Firefox/Releases/77#JavaScript
      https://developer.mozilla.org/en-US/Firefox/Releases/78#JavaScript

  * Backwards-incompatible changes
    + The Object.toSource() method has been removed
    + The uneval() global function has been removed
    + A leading zero is now never allowed for BigInt literals, making 08n and
      09n invalid similar to the existing error when legacy octal numbers like
      07n are used
    + The Function.caller property now has the value of null if the caller is a
      strict, async, or generator function, instead of throwing a TypeError

- Backwards-incompatible change: Paths specified on the command line with
  the --coverage-prefix argument, are now always interpreted as paths. If they
  are relative paths, they will be resolved relative to the current working
  directory. In previous versions, they would be treated as string prefixes,
  which led to unexpected behaviour when the path of the script was absolute
  and the coverage prefix relative, or vice versa.

- Closed bugs and merge requests:
  * Port to libsysprof-capture-4.a [!457, Philip Withnall, Philip Chimento]
  * CI: Switch ASAN jobs to runners tagged so [!461, Bartłomiej Piotrowski]
  * Rework global code to support multiple global "types". (Part 1) [!453, Evan
    Welsh]
  * SpiderMonkey 78 [#329, !462, !458, Evan Welsh, Philip Chimento]
  * GIArgument inlines [!460, Marco Trevisan, Philip Chimento]
  * gjs stopped building on 32 bits [#335, !463, Marco Trevisan, Philip
    Chimento]
  * Improve performance of argument marshalling [#70, !48, Giovanni Campagna,
    Philip Chimento]
  * Build failure on 32-bit [#336, !465, Michael Catanzaro]
  * Various maintenance [!464, Philip Chimento]
  * arg-cache.cpp: Fix build on Visual Studio [!466, Chun-wei Fan]
  * [regression] Super+A crashes gnome-shell [#338, !467, Philip Chimento]
  * Generating coverage information seems to be broken [#322, !470, Philip
    Chimento]

- Various refactors for type safety [Marco Trevisan]

- Various maintenance [Philip Chimento]