#11093: gjs-1.54.0
-------------------------+-----------------------
 Reporter:  bdubbs       |       Owner:  renodr
     Type:  enhancement  |      Status:  assigned
 Priority:  normal       |   Milestone:  8.4
Component:  BOOK         |     Version:  SVN
 Severity:  normal       |  Resolution:
 Keywords:               |
-------------------------+-----------------------

Comment (by renodr):

 1.53.1:

 {{{
 Version 1.53.1
 --------------

 - Improvements to garbage collection performance. Read for more
 information:
   https://feaneron.com/2018/04/20/the-infamous-gnome-shell-memory-leak/

 - Now, when building a class from a UI template file (using the `Template`
   parameter passed to `GObject.registerClass()`, for example) signals
 defined in
   the UI template file will be automatically connected.

 - As an experimental feature, we now offer a flatpak built with each GJS
 commit,
   including branches. You can use this to test your apps with a particular
 GJS
   branch before it is merged. Look for it in the "Artifacts" section of
 the CI
   pipeline.

 - Closed bugs and merge requests:

   * Tweener: Add min/max properties [!67, Jason Hicks]
   * `ARGV` encoding issues [#22, !108, Evan Welsh]
   * Make GC much more aggressive [#62, !50, Giovanni Campagna, Georges
 Basile
     Stavracas Neto, Philip Chimento]
   * Queue GC when a GObject reference is toggled down [#140, !114, !127,
 Georges
     Basile Stavracas Neto]
   * overrides: support Gtk template callbacks [!124, Andy Holmes]
   * Ensure not to miss the force_gc flag [#150, !132, Carlos Garnacho]
   * Create a flatpak on CI [#153, !135, Claudio André]
   * Readme update [!138, Claudio André]
 }}}

 1.53.2:

 {{{
 Version 1.53.2
 --------------

 - The `Template` parameter passed to `GObject.registerClass()` now accepts
   file:/// URIs as well as resource:/// URIs and byte arrays.

 - New API: `gjs_get_js_version()` returns a string identifying the version
 of
   the underlying SpiderMonkey JS engine. The interpreter executable has
 also
   gained a `--jsversion` argument which will print this string.

 - Several fixes for memory efficiency and performance.

 - Once again we welcomed contributions from a number of first-time
 contributors!

 - Closed bugs and merge requests:

   * Add support for file:/// uri to glade template [#108, !41, Jesus
 Bermudez,
     Philip Chimento]
   * Reduce memory overhead of g_object_weak_ref() [#144, !122, Carlos
 Garnacho,
     Philip Chimento]
   * gjs: JS_GetContextPrivate(): gjs-console killed by SIGSEGV [#148,
 !121,
     Philip Chimento]
   * Use compacting GC on RSS size growth [#151, !133, Carlos Garnacho]
   * Segfault on enumeration of GjSFileImporter properties when a
 searchpath
     entry contains a symlink [#154, !144, Ole Jørgen Brønner]
   * Compare linter jobs to correct base [#156, !140, Claudio André]
   * Various maintenance [!141, Philip Chimento]
   * Support interface signal handlers [!142, Tomasz MiÄ…sko]
   * Remove unnecessary inline [!145, Emmanuele Bassi]
   * Add badges to the readme [!146, !147, Claudio André]
   * Fix debug logging [!148, Philip Chimento]
   * CI: add a GC zeal test [!149, Claudio André]
 }}}

 1.53.4:

 {{{
 Version 1.53.4
 --------------

 - Refactored the way GObject properties are accessed. This should be a bit
 more
   efficient, as property info (GParamSpec) is now cached for every object
 type.
   There may still be some regressions from this; please be on the lookout
 so
   we can fix them in the next release.

 - The memory usage for each object instance has been reduced, resulting in
   several dozens of megabytes less memory usage in GNOME Shell.

 - The CI pipeline was refactored, now runs a lot faster, detects more
 failure
   situations, builds on different architectures, uses the GitLab Docker
   registry, and publishes code coverage statistics to
   https://gnome.pages.gitlab.gnome.org/gjs/

 - For contributors, the C++ style guide has been updated, and there is now
 a
   script in the tools/ directory that will install a Git hook to
 automatically
   format your code when you commit it. The configuration may not be
 perfect yet,
   so bear with us while we get it right.

 - Closed bugs and merge requests:

   * Define GObject properties and fields as JS properties [#160, !151,
 Philip
     Chimento]
   * Possible refcounting bug around GtkListbox signal handlers [#24, !154,
     Philip Chimento]
   * Fix up GJS_DISABLE_JIT flag now the JIT is enabled by default in
     SpiderMonkey [!159, Christopher Wheeldon]
   * Various CI maintenance [!160, !161, !162, !169, !172, !180, !191,
 !193,
     Claudio André]
   * Update GJS wiki URL [!157, Seth Woodworth]
   * Build failure in GNOME Continuous [#104, !156, Philip Chimento]
   * Refactor ObjectInstance into C++ class [!158, !164, Philip Chimento]
   * Use Ubuntu in the coverage job [!163, Claudio André]
   * Remove unused files [!165, Claudio André]
   * Add a ARMv8 build test [!166, Claudio André]
   * Make CI faster [!167, Claudio André]
   * Add a PPC4LE build test [!168, Claudio André]
   * gdbus: Fix deprecated API [!170, Philip Chimento]
   * Change Docker images names pattern [#173, !174, Claudio André]
   * Assert failure on a GC_ZEAL run [#165, !173, Philip Chimento]
   * Do not run linters on tagged commits [!181, Claudio André]
   * Fail on compiler warnings [!182, Claudio André]
   * Save code statistics in GitLab Pages [!183, Claudio André]
   * Build static analysis Docker image in GitLab [!184, !185, !187, !189,
     Claudio André]
   * GNOME Shell always crashes with SIGBUS [#171, !188, Georges Basile
     Stavracas Neto]
   * Coverage badge is no longer able to show its value [#177, !186,
 Claudio
     André]
   * Move the Docker images creation to GitLab [!190, Claudio André]
   * Cut the Gordian knot of coding style [#172, !171, Philip Chimento]
   * Some GObect/GInterface properties broke [#182, !195, Philip Chimento]

 Version 1.53.3
 --------------

 - This release was made from an earlier state of master, before a bug was
   introduced, while we sort out how to fix it. As a result, we don't have
 too
   many changes this round.

 - Closed bugs and merge requests:

   * Adding multiple ESLint rules for spacing [!152, Avi Zajac]
   * Various maintenance [!153, Philip Chimento]
 }}}

 1.53.90:

 {{{
 Version 1.53.90
 ---------------

 - GJS now depends on SpiderMonkey 60 and requires a compiler capable of
 C++14.

 - GJS includes a simple debugger now. It has basic stepping, breaking, and
   printing commands, that work like GDB. Activate it by running the GJS
 console
   interpreter with the -d or --debugger flag before the name of the JS
 program
   on the command line.

 - New API for programs that embed GJS:
 gjs_context_setup_debugger_console().
   To integrate the debugger into programs that embed the GJS interpreter,
 call
   this before executing the JS program.

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

   * New syntax
     + `for await (... of ...)` syntax is used for async iteration.
     + The rest operator is now supported in object destructuring: e.g.
       `({a, b, ...cd} = {a: 1, b: 2, c: 3, d: 4});`
     + The spread operator is now supported in object literals: e.g.
       `mergedObject = {...obj1, ...obj2};`
     + Generator methods can now be async, using the `async function*`
 syntax,
       or `async* f() {...}` method shorthand.
     + It's now allowed to omit the variable binding from a catch
 statement, if
       you don't need to access the thrown exception: `try {...} catch {}`

   * New APIs
     + Promise.prototype.finally(), popular in many third-party Promise
       libraries, is now available natively.
     + String.prototype.toLocaleLowerCase() and
       String.prototype.toLocaleUpperCase() now take an optional locale or
       array of locales.
     + Intl.PluralRules is now available.
     + Intl.NumberFormat.protoype.formatToParts() is now available.
     + Intl.Collator now has a caseFirst option.
     + Intl.DateTimeFormat now has an hourCycle option.

   * New behaviour
     + There are a lot of minor behaviour changes as SpiderMonkey's JS
       implementation conforms ever closer to ECMAScript standards. For
 complete
       information, read the Firefox developer release notes:
       https://developer.mozilla.org/en-US/Firefox/Releases/53#JavaScript
       https://developer.mozilla.org/en-US/Firefox/Releases/54#JavaScript
       https://developer.mozilla.org/en-US/Firefox/Releases/55#JavaScript
       https://developer.mozilla.org/en-US/Firefox/Releases/56#JavaScript
       https://developer.mozilla.org/en-US/Firefox/Releases/57#JavaScript
       https://developer.mozilla.org/en-US/Firefox/Releases/58#JavaScript
       https://developer.mozilla.org/en-US/Firefox/Releases/59#JavaScript
       https://developer.mozilla.org/en-US/Firefox/Releases/60#JavaScript

   * Backwards-incompatible changes
     + Conditional catch clauses have been removed, as they were a Mozilla
       extension which will not be standardized. This requires some
 attention in
       GJS programs, as previously we condoned code like `catch (e if
       e.matches(Gio.IOError, Gio.IOError.EXISTS))`  with a comment in
       overrides/GLib.js, so it's likely this is used in several places.
     + The nonstandard `for each (... in ...)` loop was removed.
     + The nonstandard legacy lambda syntax (`function(x) x*x`) was
 removed.
     + The nonstandard Mozilla iteration protocol was removed, as well as
       nonstandard Mozilla generators, including the Iterator and
 StopIteration
       objects, and the Function.prototype.isGenerator() method.
     + Array comprehensions and generator comprehensions have been removed.
     + Several nonstandard methods were removed: ArrayBuffer.slice() (but
 not
       the standard version, ArrayBuffer.prototype.slice()),
       Date.prototype.toLocaleFormat(), Function.prototype.isGenerator(),
       Object.prototype.watch(), and Object.prototype.unwatch().

 - Many of the above backwards-incompatible changes can be caught by
 scanning
   your source code using https://gitlab.gnome.org/ptomato/moz60tool, or
   https://extensions.gnome.org/extension/1455/spidermonkey-60-migration-
 validator/

 - Deprecation: the custom ByteArray is now discouraged. Instead of
 ByteArray,
   use Javascript's native Uint8Array. The ByteArray module still contains
   functions for converting between byte arrays, strings, and GLib.Bytes
   instances.

   The old ByteArray will continue to work as before, except that
 Uint8Array
   will now be returned from introspected functions that previously
 returned a
   ByteArray. To keep your old code working, change this:

       let byteArray = functionThatReturnsByteArray();

   to this:

       let byteArray = new
 ByteArray.ByteArray(functionThatReturnsByteArray());

   To port to the new code:

   * ByteArray.ByteArray -> Uint8Array
   * ByteArray.fromArray() -> Uint8Array.from()
   * ByteArray.ByteArray.prototype.toString() -> ByteArray.toString()
   * ByteArray.ByteArray.prototype.toGBytes() -> ByteArray.toGBytes()
   * ByteArray.fromString(), ByteArray.fromGBytes() remain the same

   * Unlike ByteArray, Uint8Array's length is fixed. Assigning an element
 past
     the end of a ByteArray would lengthen the array. Now, it is ignored.
     Instead use Uint8Array.of(), for example, this code:

         let a = ByteArray.fromArray([97, 98, 99, 100]);
         a[4] = 101;

     should be replaced by this code:

         let a = Uint8Array.from([97, 98, 99, 100]);
         a = Uint8Array.of(...a, 101);

     The length of the byte array must be set at creation time. This code
 will
     not work anymore:

         let a = new ByteArray.ByteArray();
         a[0] = 255;

     Instead, use "new Uint8Array(1)" to reserve the correct length.

 - Closed bugs and merge requests:

   * Run tests using real software [#178, !192, Claudio André]
   * Script tests are missing some errors [#179, !192, Claudio André]
   * Create a '--disable-readline' option and use it [!196, Claudio André]
   * CI: stop using Fedora for clang builds [!198, Claudio André]
   * Expose GObject static property symbols. [!197, Evan Welsh]
   * CI fixes [!200, Claudio André]
   * Docker images creation [!201, Claudio André]
   * Get Docker images built and stored in GJS registry [#185, !203, !208,
     Claudio André, Philip Chimento]
   * Clear the static analysis image a bit more [!205, Claudio André]
   * Rename the packaging job to flatpak [!210, Claudio André]
   * Create SpiderMonkey 60 docker images [!202, Claudio André]
   * Debugger [#110, !204, Philip Chimento]
   * Add convenience g_object_set() replacement [!213, Florian Müllner]
   * Add dependencies of the real tests (examples) [!215, Claudio André]
   * CWE-126 [#174, !218, Philip Chimento]
   * gjs no longer builds after recent autoconf-archive updates [#149,
 !217,
     Philip Chimento]
   * gjs-1.52.0 fails to compile against x86_64 musl systems [#132, !214,
 Philip
     Chimento]
   * Run the GTK real tests (recently added) [!212, Claudio André]
   * Fix thorough tests failures [!220, Philip Chimento]
   * Port to SpiderMonkey 60 [#161, !199, Philip Chimento]
   * Replace ByteArray with native ES6 TypedArray [#5, !199, Philip
 Chimento]
   * Overriding GInterface properties broke [#186, !216, Florian Müllner,
 Philip
     Chimento]
   * Avoid segfault when checking for GByteArray [!221, Florian Müllner]

 - Various build fixes [Philip Chimento]
 }}}

 1.53.91:

 {{{
 Version 1.53.91
 ---------------

 - Closed bugs and merge requests:
   * CI: add webkit and gtk-app tests [!222, Claudio André]
   * Fix example eslint errors [!207, Claudio André, Philip Chimento]
   * Fix more "lost" GInterface properties [!223, Florian Müllner]
   * Fix --enable-installed-tests when built from a tarball [!224, Simon
     McVittie]
 }}}

 1.53.92;

 {{{
 Version 1.53.92
 ---------------

 - Technology preview of a GNOME 3.32 feature: native Promises for GIO-
 style
   asynchronous operations. This is the result of Avi Zajac's summer
 internship.
   To use it, you can opt in once for each specific asynchronous method, by
   including code such as the following:

       Gio._promisify(Gio.InputStream.prototype, 'read_bytes_async',
           'read_bytes_finish');

   After executing this, you will be able to use native Promises with the
   Gio.InputStream.prototype.read_async() method, simply by not passing a
   callback to it:

       try {
           let bytes = await stream.read_bytes_async(count, priority,
 cancel);
       } catch (e) {
           logError(e, 'Failed to read bytes');
       }

   Note that any "success" boolean return values are deleted from the array
 of
   return values from the async method. That is,

       let [contents, etag] = file.load_contents_async(cancel);

   whereas the callback version still returns a useless [ok, contents,
 etag]
   that can never be false, since on false an exception would be thrown. In
 the
   callback version, we must keep this for compatibility reasons.

   Note that due to a bug in GJS
 (https://gitlab.gnome.org/GNOME/gjs/issues/189),
   promisifying methods on Gio.File.prototype and other interface
 prototypes will
   not work. We provide the API Gio._LocalFilePrototype on which you can
   promisify methods that will work on Gio.File instances on the local disk
 only:

       Gio._promisify(Gio._LocalFilePrototype, 'load_contents_async',
           'load_contents_finish');

   We estimate this will cover many common use cases.

   Since this is a technology preview, we do not guarantee API stability
 with
   the version coming in GNOME 3.32. These APIs are marked with underscores
 to
   emphasize that they are not stable yet. Use them at your own risk.

 - Closed bugs and merge requests:
   * Added promisify to GJS GIO overrides [!225, Avi Zajac]
   * Temporary fix for Gio.File.prototype [!226, Avi Zajac]
 }}}

 1.54.0:

 {{{
 Version 1.54.0
 --------------

 - Compatibility fix for byte arrays: the legacy toString() behaviour of
 byte
   arrays returned from GObject-introspected functions is now restored. If
 you
   use the functionality, a warning will be logged asking you to upgrade
 your
   code.

 - Closed bugs and merge requests:
   * byteArray: Add compatibility toString property [Philip Chimento, !227]
 }}}

 I love the detailed release notes.

--
Ticket URL: <http://wiki.linuxfromscratch.org/blfs/ticket/11093#comment:2>
BLFS Trac <http://wiki.linuxfromscratch.org/blfs>
Beyond Linux From Scratch
-- 
http://lists.linuxfromscratch.org/listinfo/blfs-book
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page

Reply via email to