Skip to content
Tags give the ability to mark specific points in history as being important
  • 1.63.90
    Version 1.63.90
    
    - New JS API: The GObject module has gained new overrides:
      GObject.signal_handler_find(), GObject.signal_handlers_block_matched(),
      GObject.signal_handlers_unblock_matched(), and
      GObject.signal_handlers_disconnect_matched(). These overrides replace the
      corresponding C API, which was not idiomatic for JavaScript and was not fully
      functional because it used bare C pointers for some of its functionality.
      See modules/overrides/GObject.js for API documentation.
    
    - New JavaScript features! This version of GJS is based on SpiderMonkey 68, an
      upgrade from the previous ESR (Extended Support Release) of SpiderMonkey 60.
      Here are the highlights of the new JavaScript features.
      For more information, look them up on MDN or devdocs.io.
    
      * New language features
        + The BigInt type, currently a stage 3 proposal in the ES standard, is now
          available.
    
      * New syntax
        + `globalThis` is now the ES-standard supported way to get the global
          object, no matter what kind of JS environment. The old way, `window`, will
          still work, but is no longer preferred.
        + BigInt literals are expressed by a number with "n" appended to it: for
          example, `1n`, `9007199254740992n`.
    
      * New APIs
        + String.prototype.trimStart() and String.prototype.trimEnd() now exist and
          are preferred instead of trimLeft() and trimRight() which are nonstandard.
        + String.prototype.matchAll() allows easier access to regex capture groups.
        + Array.prototype.flat() flattens nested arrays, well-known from lodash and
          similar libraries.
        + Array.prototype.flatMap() acts like a reverse filter(), allowing adding
          elements to an array while iterating functional-style.
        + Object.fromEntries() creates an object from iterable key-value pairs.
        + Intl.RelativeTimeFormat is useful for formatting time differences into
          human-readable strings such as "1 day ago".
        + BigInt64Array and BigUint64Array are two new typed array types.
    
      * 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/61#JavaScript
          https://developer.mozilla.org/en-US/Firefox/Releases/62#JavaScript
          https://developer.mozilla.org/en-US/Firefox/Releases/63#JavaScript
          https://developer.mozilla.org/en-US/Firefox/Releases/64#JavaScript
          https://developer.mozilla.org/en-US/Firefox/Releases/65#JavaScript
          https://developer.mozilla.org/en-US/Firefox/Releases/66#JavaScript
          https://developer.mozilla.org/en-US/Firefox/Releases/67#JavaScript
          https://developer.mozilla.org/en-US/Firefox/Releases/68#JavaScript
    
      * Backwards-incompatible changes
        + The nonstandard String generics were removed. These had only ever been
          implemented by Mozilla and never made it into a standard. (An example of a
          String generic is calling a string method on something that might not be a
          string like this: `String.endsWith(foo, 5)`. The proper way is
          `String.prototype.endsWith.call(foo, 5)` or converting `foo` to a string.)
          This should not pose much of a problem for existing code, since in the
          previous version these would already print a deprecation warning whenever
          they were used.
          You can use `moz68tool` from mozjs-deprecation-tools
          (https://gitlab.gnome.org/ptomato/moz60tool) to scan your code for this
          nonstandard usage.
    
    - Closed bugs and merge requests:
      * invalid import on signal.h [#295, !382, Philip Chimento]
      * SpiderMonkey 68 [#270, !386, Philip Chimento]
      * GObject: Add override for GObject.handler_block_by_func [#290, !371, Philip
        Chimento]
  • 1.63.3
    Version 1.63.3
    
    - Closed bugs and merge requests:
      * JS ERROR: TypeError: this._rooms.get(...) is undefined [Philip Chimento,
        #289, !367]
      * Run CI build with --werror [Philip Chimento, #286, !365]
      * build: Remove Autotools build system [Philip Chimento, !364]
      * gjs-symlink script is incompatible with distro builds [Michael Catanzaro,
        Bastien Nocera, #291, !369, !370]
      * installed-tests: Don't hardcode the path of bash [Ting-Wei Lan, !372]
      * Update Visual Studio build instructions (after migrating to full Meson-based
        builds) [Chun-wei Fan, !375]
      * object: Warn when setting a deprecated property [Florian Müllner, !378]
      * CI: Create mozjs68 CI images [Philip Chimento, !379]
      * Various maintenance [Philip Chimento, !374, !380, !381]
  • 1.58.4
    Version 1.58.4
    
    - Now prints a warning when constructing an unregistered object inheriting from
      GObject (i.e. if you forgot to use GObject.registerClass.) In 1.58.2 this
      would throw an exception, which broke some existing code, so that change was
      reverted in 1.58.3. In this version the check is reinstated, but we log a
      warning instead of throwing an exception, so that people know to fix their
      code, but without breaking things.
      NOTE: In 1.64 (the next stable release) the warning will be changed back into
      an exception, because code with this problem can be subtly broken and cause
      unexpected errors elsewhere. So make sure to fix your code if you get this
      warning.
    
    - Closed bugs and merge requests:
      * GSettings crash fixes [Andy Holmes, !373]
    
    - Memory savings for Cairo objects [Philip Chimento, !374]
    
    - Fix for crash in debug functions [Philip Chimento, !374]
  • 1.58.3
    Version 1.58.3
    
    - Emergency release, intended to correct two mistakes in 1.58.2, both coming
      from crash fixes that had unexpected other effects on working code.
      Distributors shipping 1.58.2 are urged to update to 1.58.3 as soon as
      possible.
    
    - Closed bugs and merge requests:
      * possible regression in gjs 1.58.2 [Philip Chimento, #288]
      * JS ERROR: TypeError: this._rooms.get(...) is undefined [Philip Chimento,
        #289, !366]
  • 1.63.2
    Version 1.63.2
    
    - There is an option for changing the generated GType name for GObject classes
      created in GJS to a new scheme that is less likely to have collisions. This
      scheme is not yet the default, but you can opt into it by setting
      `GObject.gtypeNameBasedOnJSPath = true;` as early as possible in your
      prograṁ. Doing this may require some changes in Glade files if you use
      composite widget templates.
    
      We recommend you make this change in your codebase as soon as possible, to
      avoid any surprises in the future.
    
    - New JS API: GObject.Object has gained a stop_emission_by_name() method which
      is a bit more idiomatic than calling GObject.signal_stop_emission_by_name().
    
    - It's now supported to use the "object" attribute in a signal connection in a
      composite widget template in a Glade file.
    
    - Closed bugs and merge requests:
      * CI: Tweak eslint rule for unneeded parentheses [Florian Müllner, !353]
      * Smarter GType name computation [Marco Trevisan, !337]
      * Meson CI [Philip Chimento, !354]
      * Visual Studio builds using Meson [Chun-wei Fan, !355]
      * Hide internal symbols from ABI [Marco Trevisan, #194, !352]
      * Allow creating custom tree models [Giovanni Campagna, #71]
      * build: Fix dist files [Florian Müllner, !357]
      * GObject: Add convenience wrapper for signal_stop_emission_by_name() [Florian
        Müllner, !358]
      * Various maintenance [Philip Chimento, !356]
      * object_instance_props_to_g_parameters should do more check on argv [Philip
        Chimento, #63, !359]
      * Support flat C arrays of structures [Philip Chimento, !361]
      * Gtk Templates: support connectObj argument [Andy Holmes, !363]
    
    - Various build fixes [Philip Chimento]
  • 1.58.2
    Version 1.58.2
    
    - Closed bugs and merge requests:
      * GObject based class initialization checks [Marco Trevisan, Philip Chimento,
        !336]
      * Silently leaked return value of callbacks [Xavier Claessens, Philip
        Chimento, #86, !44]
      * Crash when calling Gio.Initable.async_init with not vfunc_async_init
        implementation [Philip Chimento, #287, !362]
      * [cairo] insufficient checking [Philip Chimento, #49, !360]
    
    - Various crash fixes backported from the development branch that didn't close
      a bug or merge request.
  • 1.63.1
    Version 1.63.1
    
    - Note that the 1.59, 1.60, 1.61, and 1.62 releases are hereby skipped, because
      we are calling the next stable series 1.64 to match gobject-introspection and
      GLib.
    
    - GJS now includes a Meson build system. This is now the preferred way to build
      it; however, the old Autotools build system is still available for a
      transitional period.
    
    - Closed bugs and merge requests:
      * GObject: Add convenience wrapper for signal_handler_(un)block() [Florian
        Müllner, !326]
      * GObject based class initialization checks [Marco Trevisan, Philip Chimento,
        !336]
      * Meson port [Philip Chimento, !338]
      * add http client example [Sonny Piers, !342]
      * Smaller CI, phase 2 [Philip Chimento, !343]
      * add websocket client example [Sonny Piers, !344]
      * Fix Docker images build [Philip Chimento, !345]
      * CI: Use new Docker images [Philip Chimento, !346]
      * docs: Update internal links [Andy Holmes, !348]
      * Don't pass generic marshaller to g_signal_newv() [Niels De Graef, !349]
      * tests: Fail debugger tests if command failed [Philip Chimento, !350]
      * Minor CI image fixes [Philip Chimento, !351]
      * Various fixes [Marco Trevisan, Philip Chimento]
  • 1.58.1
    Version 1.58.1
    
    - Closed bugs and merge requests:
      * Import wiki documentation [Sonny Piers, !341]
      * Smaller CI, phase 1 [Philip Chimento, !339]
      * Crashes after setting child property 'icon-name' on GtkStack then displaying
        another GtkStack [Florian Müllner, #284, !347]
      * GLib.strdelimit crashes [Philip Chimento, #283, !340]
  • 1.58.0
    Version 1.58.0
    
    - No change from 1.57.92.
  • 1.57.92
    Version 1.57.92
    
    - Closed bugs and merge requests:
      * tests: Enable regression test cases for GPtrArrays and GArrays of structures
        [Stéphane Seng, !334]
      * Various maintenance [Philip Chimento, !333, !335]
  • 1.57.91
    Version 1.57.91
    
    - GJS no longer links to libgtk-3. This makes it possible to load the Gtk-4.0
      typelib in GJS and write programs that use GTK 4.
    
    - The heapgraph tool has gained some improvements; it is now possible to print a
      heap graph of multiple targets. You can also mark an object for better
      identification in the heap graph by assigning a magic property: for example,
      myObject.__heapgraph_name = 'Button' will make that object identify itself as
      "Button" in heap graphs.
    
    - Closed bugs and merge requests:
      * Remove usage of Lang in non legacy code [Sonny Piers, !322]
      * GTK4 [Florian Müllner, #99, !328, !330]
      * JS syntax fixes [Marco Trevisan, Philip Chimento, !306, !323]
      * gi: Avoid infinite recursion when converting GValues [Florian Müllner, !329]
      * Implement all GObject-introspection test suites [Philip Chimento, !327,
        !332]
      * Heapgraph improvements [Philip Chimento, !325]
  • 1.57.90
    Version 1.57.90
    
    - New JS API: GLib.Variant has gained a recursiveUnpack() method which
      transforms the variant entirely into a JS object, discarding all type
      information. This can be useful for dealing with a{sv} dictionaries, where
      deepUnpack() will keep the values as GLib.Variant instances in order to
      preserve the type information.
    
    - New JS API: GLib.Variant has gained a deepUnpack() method which is exactly the
      same as the already existing deep_unpack(), but fits with the other camelCase
      APIs that GJS adds.
    
    - Closed bugs and merge requests:
      * Marshalling of GPtrArray broken [#9, !311, Stéphane Seng]
      * Fix locale chooser [!313, Philip Chimento]
      * dbus-wrapper: Remove interface skeleton flush idle on dispose [!312, Marco
        Trevisan]
      * gobject: Use auto-compartment when getting property as well [!316, Florian
        Müllner]
      * modules/signals: Use array destructuring in _emit [!317, Jonas Dreßler]
      * GJS can't call glibtop_init function from libgtop [#259, !319,
        Philip Chimento]
      * GLib's VariantDict is missing lookup [#263, !320, Sonny Piers]
      * toString on an object implementing an interface fails [#252, !299, Marco
        Trevisan]
      * Regression in GstPbutils.Discoverer::discovered callback [#262, !318, Philip
        Chimento]
      * GLib.Variant.deep_unpack not working properly with a{sv} variants [#225,
        !321, Fabián Orccón, Philip Chimento]
      * Various maintenance [!315, Philip Chimento]
    
    - Various CI fixes [Philip Chimento]
  • 1.57.4
    Version 1.57.4
    
    - Closed bugs and merge requests:
      * gjs 1.57 requires a recent sysprof version for sysprof-capture-3 [#258,
        !309, Olivier Fourdan]
    
    - Misc documentation changes [Philip Chimento]
  • 1.57.3
    Version 1.57.3
    
    - The GJS profiler is now integrated directly into Sysprof 3, via the
      GJS_TRACE_FD environment variable. Call stack information and garbage
      collector timing will show up in Sysprof. See also GNOME/Initiatives#10
    
    - New JS API: System.addressOfGObject(obj) will return a string with the hex
      address of the underlying GObject of `obj` if it is a GObject wrapper, or
      throw an exception if it is not. This is intended for debugging.
    
    - New JS API: It's now possible to pass a value from Gio.DBusProxyFlags to the
      constructor of a class created by Gio.DBusProxy.makeProxyWrapper().
    
    - Backwards-incompatible change: Trying to read a write-only property on a DBus
      proxy object, or write a read-only property, will now throw an exception.
      Previously it would fail silently. It seems unlikely any code is relying on
      the old behaviour, and if so then it was probably masking a bug.
    
    - Closed bugs and merge requests:
      * Build failure on Continuous [#253, !300, Philip Chimento]
      * build: Bump glib requirement [!302, Florian Müllner]
      * profiler: avoid clearing 512 bytes of stack [!304, Christian Hergert]
      * system: add addressOfGObject method [!296, Marco Trevisan]
      * Add support for GJS_TRACE_FD [!295, Christian Hergert]
      * Gio: Make possible to pass DBusProxyFlags to proxy wrapper [!297, Marco
        Trevisan]
      * Various maintenance [!301, Philip Chimento]
      * Marshalling of GPtrArray broken [#9, !307, Stéphane Seng]
      * Build fix [!308, Philip Chimento]
      * Gio: sync dbus wrapper properties flags [!298, Marco Trevisan]
      * GjsMaybeOwned: Reduce allocation when used as Object member [!303, Marco
        Trevisan]
  • 1.57.2
    Version 1.57.2
    
    - There are now overrides for Gio.SettingsSchema and Gio.Settings which avoid
      aborting the whole process when trying to access a nonexistent key or child
      schema. The original API from GLib was intended for apps, since apps should
      have complete control over which settings keys they are allowed to access.
      However, it is not a good fit for shell extensions, which may need to access
      different settings keys depending on the version of GNOME shell they're
      running on.
    
      This feature is based on code from Cinnamon which the copyright holders have
      kindly agreed to relicense to GJS's license.
    
    - New JS API: It is now possible to pass GObject.TypeFlags to
      GObject.registerClass(). For example, passing
      `GTypeFlags: GObject.TypeFlags.ABSTRACT` in the class info object, will create
      a class that cannot be instantiated. This functionality was present in
      Lang.Class but has been missing from GObject.registerClass().
    
    - Closed bugs and merge requests:
      * Document logging features [#230, !288, Andy Holmes]
      * Support optional GTypeFlags value in GObject subclasses [!290, Florian
        Müllner]
      * Ensure const-correctness in C++ objects [#105, !291, Onur Şahin]
      * Programmer errors with GSettings cause segfaults [#205, !284, Philip
        Chimento]
      * Various maintenance [!292, Philip Chimento]
      * debugger: Fix summary help [!293, Florian Müllner]
      * context: Use Heap pointers for GC objects stored in vectors [!294, Philip
        Chimento]
  • 1.56.2
    Version 1.56.2
    
    - Closed bugs and merge requests:
      * Crash in BoxedInstance when struct could not be allocated directly [#240,
        !285, Philip Chimento]
      * Cairo conversion bugs [!286, Philip Chimento]
      * Gjs crashes when binding inherited property to js added gobject-property
        [#246, !289, Marco Trevisan]
      * console: Don't accept --profile after the script name [!287, Philip
        Chimento]
  • 1.57.1
    Version 1.57.1
    
    - Closed bugs and merge requests:
      * Various maintenance [!279, Philip Chimento]
      * mainloop: Assign null to property instead of deleting [!280, Jason Hicks]
      * Added -d version note README.md [!282, Nauman Umer]
      * Extra help for debugger commands [#236, !283, Nauman Umer]
      * Crash in BoxedInstance when struct could not be allocated directly [#240,
        !285, Philip Chimento]
      * Cairo conversion bugs [!286, Philip Chimento]
  • 1.56.1
    Version 1.56.1
    
    - Closed bugs and merge requests:
      * Calling dumpHeap() on non-existent directory causes crash [#134, !277,
        Philip Chimento]
      * Using Gio.MemoryInputStream.new_from_data ("string") causes segfault [#221,
        !278, Philip Chimento]
      * Fix gjs_context_eval() for non-zero-terminated strings [!281, Philip
        Chimento]
  • 1.56.0
    Version 1.56.0
    
    - No change from 1.55.92.
  • 1.55.92
    Version 1.55.92
    
    - Closed bugs and merge requests:
      * Fix CI failures [!269, Philip Chimento]
      * Possible memory allocation/deallocation bug (possibly in js_free() in GJS)
        [!270, Chun-wei Fan, Philip Chimento]
      * cairo-context: Special-case 0-sized vector [!271, Florian Müllner]
      * Add some more eslint rules [!272, Florian Müllner]
      * win32/NMake: Fix introspection builds [!274, Chun-wei Fan]
      * NMake/libgjs-private: Export all the public symbols there [!275, Chun-wei
        Fan]