Version 1.47.91
---------------

- Closed bugs:

  * overrides/Gio: Provide an empty array on error, rather than null [#677513,
    Jasper St. Pierre, Philip Chimento]
  * WithSignals parameter for Lang.Class [#664897, Philip Chimento]
  * add API to better support asynchronous code [#608450, Philip Chimento]
  * 1.47.90 tests are failing [#778780, Philip Chimento]
  * boxed: Plug a memory leak [#779036, Florian Müllner]
  * Don't crash when marshalling an unsafe integer from introspection [#778705,
    Philip Chimento]
  * Lang.Class should include symbol properties [#778718, Philip Chimento]
  * Console output of arrays should be UTF-8 aware [#778729, Philip Chimento]
  * Various fixes for 1.47.91 [#779293, Philip Chimento]

- Progress towards a Visual Studio build of GJS on Windows [Chun-wei Fan]
- Misc bug fixes [Chun-wei Fan, Philip Chimento]

Version 1.47.90
---------------

- New JavaScript features! This version of GJS is based on SpiderMonkey 38, an
  upgrade from the previous ESR (Extended Support Release) of SpiderMonkey 31.
  Our plans are to continue upgrading to subsequent ESRs as maintainer
  availability allows. Here are the highlights of the new JavaScript features.
  For more information, look them up on MDN or devdocs.io.

  * New syntax
    + Shorthand syntax for method definitions: { foo() { return 5; } }
    + Shorthand syntax for object literals: let b = 42; let o = {b}; o.b === 42
    + Computed property names for the above, as well as in getter and setter
      expressions and destructuring assignment: { ['b' + 'ar']() { return 6; } }
    + Spread operator in destructuring assignment: let [a, ...b] = [1, 2, 3];
    + Template literals: `Hello, ${name}` with optional tags: tag`string`

  * New APIs
    + Symbol, a new fundamental type
    + WeakSet, a Set which does not prevent its members from being
      garbage-collected
    + [Symbol.iterator] properties for Array, Map, Set, String, TypedArray, and
      the arguments object
    + New Array and TypedArray functionality: Array.copyWithin(), Array.from()
    + New return() method for generators
    + New Number.isSafeInteger() method
    + New Object.assign() method which can replace Lang.copyProperties() in many
      cases
    + New Object.getOwnPropertySymbols() method
    + New RegExp flags, global, ignoreCase, multiline, sticky properties that
      give access to the flags that the regular expression was created with
    + String.raw, a tag for template strings similar to Python's r""
    + New TypedArray methods for correspondence with Array: entries(), every(),
      fill(), filter(), find(), findIndex(), forEach(), indexOf(), join(),
      keys(), lastIndexOf(), map(), of(), reduce(), reduceRight(), reverse(),
      slice(), some(), values()

  * New behaviour
    + Temporal dead zone: print(x); let x = 5; no longer allowed
    + Full ES6-compliant implementation of const keyword
    + The Set, Map, and WeakMap constructors can now take null as their argument
    + The WeakMap constructor can now take an iterable as its argument
    + The Function.name and Function.length properties are configurable
    + When subclassing Map, WeakMap, and Set or using the constructors on
      generic objects, they will look for custom set() and add() methods.
    + RegExp.source and RegExp.toString() now deal with empty regexes, and
      escape their output.
    + Non-object arguments to Object.preventExtensions() now do not throw an
      exception, simply return the original object

  * Backwards-incompatible changes
    + It is now a syntax error to declare the same variable twice with "let" or
      "const" in the same scope. Existing code may need to be fixed, but the
      fix is trivial.
    + SpiderMonkey is now extra vocal about warning when you access an
      undefined property, and this causes some false positives. You can turn
      this warning off by setting GJS_DISABLE_EXTRA_WARNINGS=1. If it is overly
      annoying, let me know and I will consider making it disabled by default
      in a future release.
    + When enumerating the importer object (i.e.,
      "for (let i in imports) {...}") you will now get the names of any built-in
      modules that have previously been imported. (But don't do this, anyway.)

- Closed bugs:

  * SpiderMonkey 38 prep [#776966, Philip Chimento]
  * Misc fixes [#777205, Philip Chimento]
  * missing class name in error message [#642506, Philip Chimento]
  * Add continuous integration to GJS [#776549, Claudio André]
  * Switch to SpiderMonkey 38 [#777962, Philip Chimento]

- Progress towards a build of GJS on Windows [Chun-wei Fan]
- Progress towards increasing test coverage [Claudio André]
- Misc bug fixes [Philip Chimento]

Version 1.47.4
--------------

- New JavaScript feature: ES6 Promises. This release includes Lie [1], a small,
  self-contained Promise implementation, which is imported automatically to
  form the Promise global object [2]. In the future, Promises will be built into
  the SpiderMonkey engine and Lie will be removed, but any code using Promises
  will continue to work as before.
  [1] https://github.com/calvinmetcalf/lie
  [2] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

- News for GJS embedders such as gnome-shell:

  * New API: The GjsCoverage type and its methods are now exposed. Use this if
    you are embedding GJS and need to output code coverage statistics.

- Closed bugs:

  * Add GjsCoverage to gjs-1.0 public API [#775776, Philip Chimento]
  * Should use uint32_t instead of u_int32_t in coverage.cpp [#776193, Shawn
    Walker, Alan Coopersmith]
  * Port tests to use an embedded copy of Jasmine [#775444, Philip Chimento]
  * support fields in GObject [#563391, Havoc Pennington, Philip Chimento]
  * Javascript errors in property getters and setter not always reported
    [#730101, Matt Watson, Philip Chimento]
  * Exception swallowed while importing Gom [#737607, Philip Chimento]
  * log a warning if addSignalMethods() replaces existing methods [#619710, Joe
    Shaw, Philip Chimento]
  * Provide a useful toString for importer and module objects [#636283, Jasper
    St. Pierre, Philip Chimento]
  * Fails to marshal out arrays [#697020, Paolo Borelli]
  * coverage: Don't warn about executing odd lines by default anymore [#751146,
    Sam Spilsbury, Philip Chimento]
  * coverage: Crash in EnterBaseline on SpiderMonkey when Ion is enabled during
    coverage mode. [#742852, Sam Spilsbury, Philip Chimento]
  * installed tests cannot load libregress.so [#776938, Philip Chimento]
  * Crash with subclassed fundamental with no introspection [#760057, Lionel
    Landwerlin]

- Misc bug fixes [Philip Chimento, Claudio André]

Version 1.47.3
--------------

- New JavaScript features! This version of GJS is based on SpiderMonkey 31, an
  upgrade from the previous ESR (Extended Support Release) of SpiderMonkey 24.
  Our plans are to continue upgrading to subsequent ESRs as maintainer
  availability allows. Here are the highlights of the new JavaScript features.
  For more information, look them up on MDN or devdocs.io.

  * New syntax
    + Spread operator in function calls: someFunction(arg1, arg2, ...iterableObj)
    + Generator functions: yield, function*, yield*
    + Binary and octal numeric literals: 0b10011100, 0o377
    + Function arguments without defaults can now come after those with
      defaults: function f(x=1, y) {}

  * New standard library module
    + Intl - Locale-sensitive formatting and string comparison

  * New APIs
    + Iterator protocol - any object implementing certain methods is an
      "iterator"
    + New Array functionality: fill(), find(), findIndex(), of()
    + New String functionality for working with Unicode: codePointAt(),
      fromCodePoint(), normalize()
    + New Array methods for correspondence with Object: entries(), keys()
    + ES6 Generator methods to replace the old Firefox-specific generator API:
      next(), throw()
    + forEach() methods for Map and Set, for correspondence with Array
    + A bunch of new Math functions: acosh(), asinh(), atanh(), cbrt(), clz32(),
      cosh(), expm1(), fround(), hypot(), log10(), log1p(), log2(), sign(),
      sinh(), tanh(), trunc()
    + Some constants to tell information about float support on the platform:
      Number.EPSILON, Number.MAX_SAFE_INTEGER, Number.MIN_SAFE_INTEGER
    + New Number.parseInt() and Number.parseFloat() which are now preferred over
      those in the global namespace
    + New Object.setPrototypeOf() which now is preferred over setting
      obj.prototype.__proto__
    + New locales and options extra arguments to all toLocaleString() and
      related methods
    + Misc new functionality: ArrayBuffer.isView(), Proxy.handler.isExtensible,
      Proxy.revocable()

  * New behaviour
    + -0 and +0 are now considered equal as Map keys and Set values
    + On typed arrays, numerical indexed properties ignore the prototype object:
      Int8Array.prototype[20] = 'foo'; (new Int8Array(32))[20] == 0

  * New non-standard Mozilla extensions
    + Array comprehensions
    + Generator comprehensions; both were originally proposed for ES6 but removed

- Backwards-incompatible change: we have changed the way certain JavaScript
  values are marshalled into GObject introspection 32 or 64-bit signed integer
  values, to match the ECMA standard. Here is the relevant section of the
  standard:
  http://www.ecma-international.org/ecma-262/7.0/index.html#sec-toint32
  Notable differences between the old and new behaviour are:

  * Floating-point numbers ending in 0.5 are rounded differently when
    marshalled into 32 or 64-bit signed integers. Previously they were
    rounded to floor(x + 0.5), now they are rounded to
    signum(x) * floor(abs(x)) as per the ECMA standard:
    http://www.ecma-international.org/ecma-262/7.0/index.html#sec-toint32
    Note that previously, GJS rounded according to the standard when
    converting to *unsigned* integers!

  * Objects whose number value is NaN (e.g, arrays of strings), would
    previously fail to convert, throwing a TypeError. Now they convert to
    0 when marshalled into 32 or 64-bit signed integers.

  Note that the new behaviour is the behaviour you got all along when using
  pure JavaScript, without any GObject introspection:

  gjs> let a = new Int32Array(2);
  gjs> a[0] = 10.5;
  10.5
  gjs> a[1] = ['this', 'is', 'fine'];
  this,is,fine
  gjs> a[0]
  10
  gjs> a[1]
  0

- News for GJS embedders such as gnome-shell:

  * New API: gjs_error_quark() is now exposed, and the error domain GJS_ERROR
    and codes GJS_ERROR_FAILED and GJS_ERROR_SYSTEM_EXIT.

  * Backwards-incompatible change: Calling System.exit() from JS code will now
    not abort the program immediately, but instead will return immediately from
    gjs_context_eval() so that you can unref your GjsContext before internal
    resources are released on exit.

    If gjs_context_eval() or gjs_context_eval_file() returns an error with code
    GJS_ERROR_SYSTEM_EXIT, it means that the JS code called System.exit(). The
    exit code will be found in the 'exit_status_p' out parameter to
    gjs_context_eval() or gjs_context_eval_file(). If you receive this error,
    you should do any cleanup needed and exit your program with the given exit
    code.

- Closed bugs:

  * spidermonkey 31 prep [Philip Chimento, Tim Lunn, #742249]
  * Please use dbus-run-session to run dbus related tests [Philip Chimento,
    #771745]
  * don't abort gdb'd tests [Philip Chimento, Havoc Pennington, #605972]
  * Use Automake test suite runner [Philip Chimento, #775205]
  * please add doc/ directory to make dist tar file [Philip Chimento, #595439]
  * support new mozjs 31.5 [Philip Chimento, #751252]
  * SEGFAULT in js::NewObjectWithClassProtoCommon when instantiating a dynamic
    type defined in JS [Philip Chimento, Juan Pablo Ugarte, #770244]

- Misc bug fixes [Philip Chimento, Alexander Larsson]

Version 1.47.0
--------------

- New API: GLib.log_structured() is a convenience wrapper for the C function
  g_log_variant(), allowing you to do structured logging without creating
  GVariants by hand. For example:

  GLib.log_structured('test', GLib.LogLevelFlags.LEVEL_WARNING, {
      'MESSAGE': 'Just a test',
      'A_FIELD': 'A value',
  });

- Backwards-incompatible change: we have changed the way gjs-console interprets
  command-line arguments. Previously there was a heuristic to try to decide
  whether "--help" given on the command line was meant for GJS itself or for a
  script being launched. This did not work in some cases, for example:

  $ gjs -c 'if (ARGV.indexOf("--help") == -1) throw "ugh"' --help

  would print the GJS help.

  Now, all arguments meant for GJS itself must come _before_ the name of the
  script to execute or any script given with a "-c" argument. Any arguments
  _after_ the filename or script are passed on to the script. This is the way
  that Python handles its command line arguments as well.

  If you previously relied on any -I arguments after your script being added to
  the search path, then you should either reorder those arguments, use GJS_PATH,
  or handle -I inside your script, adding paths to imports.searchPath manually.

  In order to ease the pain of migration, GJS will continue to take those
  arguments into account for the time being, while still passing them on to the
  script. A warning will be logged if you are using the deprecated behaviour.

- News for GJS embedders such as gnome-shell:

  * Removed API: The gjs-internals-1.0 API is now discontinued. Since
    gnome-shell was the only known user of this API, its pkg-config file has
    been removed completely and gnome-shell has been patched not to use it.

- Closed bugs:

  * make check fails with --enable-debug / -DDEBUG spidermonkey [Philip
    Chimento, #573335]
  * Modernize autotools configuration [Philip Chimento, #772027]
  * overrides/GLib: Add log_structured() - wrapper for g_log_variant() [Jonh
    Wendell, #771598]
  * Remove gjs-internals-1.0 API [Philip Chimento, #772386]
  * Add support for boolean, gunichar, and 64-bit int arrays [Philip Chimento,
    #772790]
  * add a --version flag [Philip Chimento, #772033]
  * Switch to AX_COMPILER_FLAGS and compile warning-free [Philip Chimento,
    #773297]
  * Reinstate importer test [Philip Chimento, #773335]

Version 1.46.0
--------------

- Be future proof against Format fixes in SpiderMonkey [Giovanni Campagna,
  #770111]

Version 1.45.4
--------------
- Release out args before freeing caller-allocated structs [Florian Müllner,
  #768413]
- Marshal variable array-typed signal arguments [Philip Chimento, Florian
  Müllner, #761659]
- Marshal all structs in out arrays correctly [Philip Chimento, #761658]
- Call setlocale() before processing arguments [Ting-Wei Lan, #760424]
- Build fixes and improvements [Philip Chimento, #737702, #761072] [Hashem
  Nasarat, #761366] [Carlos Garnacho, #765905] [Simon McVittie, #767368]
  [Emmanuele Bassi] [Michael Catanzaro] [Matt Watson]

Version 1.45.3
--------------

- Support external construction of gjs-defined GObjects [Florian Müllner,
  #681254]
- Add new format.printf() API [Colin Walters, #689664]
- Add new API to get the name of a repository [Jasper St. Pierre, #685413]
- Add C to JS support for arrays of flat structures [Giovanni Campagna,
  #704842]
- Add API to specify CSS node name [Florian Müllner, #758349]
- Return value of default signal handler for "on_signal_name" methods
  [Philip Chimento, #729288]
- Fix multiple emissions of onOverwrite in Tweener [Tommi Komulainen, #597927]
- Misc bug fixes [Philip Chimento, #727370] [Owen Taylor, #623330]
  [Juan RP, #667908] [Ben Iofel, #757763]

Version 1.44.0
--------------

- Add Lang.Interface and GObject.Interface [Philip Chimento, Roberto Goizueta,
  #751343, #752984]
- Support callbacks with (transfer full) return types [Debarshi Ray, #750286]
- Add binding for setlocale() [Philip Chimento, #753072]
- Improve support to generate code coverage reports [Sam Spilsbury, #743009,
  #743007, #742362, #742535, #742797, #742466, #751732]
- Report errors from JS property getters/setters [Matt Watson, #730101]
- Fix crash when garbage collection triggers while inside an init function
  [Sam Spilsbury, #742517]
- Port to CallReceiver/CallArgs [Tim Lunn, #742249]
- Misc bug fixes [Ting-Wei Lan, #736979, #753072] [Iain Lane, #750688]
  [Jasper St. Pierre] [Philip Chimento] [Colin Walters]

Version 1.43.3
--------------

- GTypeClass and GTypeInterface methods, such as
  g_object_class_list_properties(), are now available [#700347]
- Added full automatic support for GTK widget templates [#700347,
  #737661] [Jonas Danielsson, #739739]
- Added control of JS Date caches to system module [#739790]
- Misc bug fixes and memory leak fixes [Owen Taylor, #738122]
  [Philip Chimento, #740696, #737701]

Version 1.42.0
--------------

- Fix a regression caused by PPC fixes in 1.41.91

Version 1.41.91
---------------

- Added the ability to disable JS language warnings [Lionel Landwerlin,
  #734569]
- Fixed crashes in PPC (and probably other arches) due to invalid
  callback signatures [Michel Danzer, #729554]
- Fixed regressions with dbus 1.8.6 [Tim Lunn, #735358]
- Readded file system paths to the default module search, to allow
  custom GI overrides for third party libraries [Jasper St. Pierre]

Version 1.41.4
--------------

- Fixed memory management of GObject methods that unref their instance
  [#729545]
- Added a package module implementing the
  https://wiki.gnome.org/Projects/Gjs/Package application conventions
  [#690136]
- Misc bug fixes

Version 1.41.3
--------------

- Fixed GObject and Gtk overrides [Mattias Bengtsson, #727781] [#727394]
- Fixed crashes caused by reentrancy during finalization [#725024]
- Added a wrapper type for cairo regions [Jasper St. Pierre, #682303]
- Several cleanups to GC [#725024]
- Thread-safe structures are now finalized in the background, for greater
  responsiveness [#725024] [#730030]
- A full GC is now scheduled if after executing a piece of JS we see
  that the RSS has grown by over 150% [Cosimo Cecchi, #725099] [#728048]
- ParamSpecs now support methods and static methods implemented by glib
  and exposed by gobject-introspection, in addition to the manually
  bound fields [#725282]
- Protototypes no longer include static properties or constructors [#725282]
- Misc cleanups and bugfixes [Mattias Bengtsson, #727786] [#725282]
  [Lionel Landwerlin, #728004] [Lionel Landwerlin, #727824]

Version 1.40.0
--------------

- No changes

Version 1.39.90
---------------

- Implemented fundamental object support [Lionel Landwerlin, #621716, #725061]
- Fixed GIRepositoryGType prototype [#724925]
- Moved GObject.prototype.disconnect() to a JS implementation [#698283]
- Added support for enumeration methods [#725143]
- Added pseudo-classes for fundamental types [#722554]
- Build fixes [Ting-Wei Lan, #724853]

Version 0.3 (03-Jul-2009)
-------------------------

Changes:
    - DBus support
      At a high level there are three pieces. First, the "gjs-dbus" library is
      a C support library for DBus.  Second, the modules/dbus*.[ch] implement
      parts of the JavaScript API in C.  Third, the modules/dbus.js file fills
      out the rest of the JavaScript API and implementation.
    - Support simple fields for boxed types
    - Support "copy construction" of boxed types
    - Support simple structures not registered as boxed
      - Allow access to nested structures
      - Allow direct assignment to nested structure fields
      - Allow enum and flag structure fields
      - Allow creating boxed wrapper without copy
    - Support for non-default constructor (i.e. constructors like
      GdkPixbuf.Pixbuf.new_from_file(file))
    - Add a Lang.bind function which binds the meaning of 'this'
    - Add an interactive console gjs-console
    - Allow code in directory modules (i.e. the code should reside in
      __init__.js files)
    - Fix handling of enum/flags return values
    - Handle non-gobject-registered flags
    - Add Tweener.registerSpecialProperty to tweener module
    - Add profiler for javascript code
    - Add gjs_context_get_all and gjs_dumpstack - useful to invoke from a
      debugger such as gdb
    - Support GHashTable
      - GHashTable return values/out parameters
      - Support GHashTable 'in' parameters
      - Convert JSON-style object to a GHashTable
    - Add support for UNIX shebang (i.e. #!/usr/bin/gjs-console)
    - Support new introspection short/ushort type tags
    - Support GI_TYPE_TAG_FILENAME
    - Improve support for machine-dependent integer types and arrays of
      integers
    - Fix several memory leaks

Contributors:
    Colin Walters, C. Scott Ananian, Dan Winship, David Zeuthen,
    Havoc Pennington, Johan Bilien, Johan Dahlin, Lucas Rocha,
    Marco Pesenti Gritti, Marina Zhurakhinskaya, Owen Taylor,
    Tommi Komulainen

Bugs fixed:
    Bug 560506 - linking problem
    Bug 560670 - Turn on compilation warnings
    Bug 560808 - Simple field supported for boxed types
    Bug 561514 - memory leak when skipping deprecated methods
    Bug 561516 - skipping deprecated methods shouldn't signal error case
    Bug 561849 - Alternate way of connecting signals.
    Bug 562892 - valgrind errors on get_obj_key
    Bug 564424 - Add an interactive console
    Bug 564664 - Expose JS_SetDebugErrorHook
    Bug 566185 - Allow code in directory modules
    Bug 567675 - Handle non-gobject-registered flags
    Bug 569178 - Add readline support to the console module
    Bug 570775 - array of parameters leaked on each new GObject
    Bug 570964 - Race when shutting down a context, r=hp
    Bug 580948 - Add DBus support
    Bug 584560 - Add support for UNIX shebang
    Bug 584850 - Clean up some __BIG definitions.
    Bug 584858 - Fix errors (and leftover debugging) from dbus merge.
    Bug 584858 - Move gjsdbus to gjs-dbus to match installed location.
    Bug 585386 - Add a flush() method to DBus bus object.
    Bug 585460 - Fix segfault when a non-existing node is introspected.
    Bug 586665 - Fix seg fault when attempting to free callback type.
    Bug 586760 - Support converting JavaScript doubles to DBus int64/uint64.
    Bug 561203 - Fix priv_from_js_with_typecheck() for dynamic types
    Bug 561573 - Add non-default constructors and upcoming static methods to "class"
    Bug 561585 - allow using self-built spidermonkey
    Bug 561664 - Closure support is broken
    Bug 561686 - Don't free prov->gboxed for "has_parent" Boxed
    Bug 561812 - Support time_t
    Bug 562575 - Set correct GC parameters and max memory usage
    Bug 565029 - Style guide - change recommendation for inheritance
    Bug 567078 - Don't keep an extra reference to closures
    Bug 569374 - Logging exceptions from tweener callbacks could be better
    Bug 572113 - add profiler
    Bug 572121 - Invalid read of size 1
    Bug 572130 - memory leaks
    Bug 572258 - profiler hooks should be installed only when needed
    Bug 580865 - Call JS_SetLocaleCallbacks()
    Bug 580947 - Validate UTF-8 strings in gjs_string_to_utf8()
    Bug 580957 - Change the way we trigger a warning in testDebugger
    Bug 581277 - Call JS_SetScriptStackQuota on our contexts
    Bug 581384 - Propagate exceptions from load context
    Bug 581385 - Return false when gjs_g_arg_release_internal fails
    Bug 581389 - Fix arg.c to use 'interface' instead of 'symbol'
    Bug 582686 - Don't g_error() when failing to release an argument
    Bug 582704 - Don't depend on hash table order in test cases
    Bug 582707 - Fix problems with memory management for in parameters
    Bug 584849 - Kill warnings (uninitialized variables, strict aliasing)
    Bug 560808 - Structure support


Version 0.2 (12-Nov-2008)
-------------------------

Changes:
    - Compatible with gobject-introspection 0.6.0
    - New modules: mainloop, signals, tweener
    - Support passing string arrays to gobject-introspection methods
    - Added jsUnit based unit testing framework
    - Improved error handling and error reporting

Contributors:
    Colin Walters, Havoc Pennington, Johan Bilien, Johan Dahlin, Lucas Rocha,
    Owen Taylor, Tommi Komulainen

Bugs fixed:
    Bug 557398 – Allow requiring namespace version
    Bug 557448 – Enum and Flags members should be uppercase
    Bug 557451 – Add search paths from environment variables
    Bug 557451 – Add search paths from environment variables
    Bug 557466 – Module name mangling considered harmful
    Bug 557579 – Remove use of GJS_USE_UNINSTALLED_FILES in favor of GI_TYPELIB_PATH
    Bug 557772 - gjs_invoke_c_function should work with union and boxed as well
    Bug 558114 – assertRaises should print return value
    Bug 558115 – Add test for basic types
    Bug 558148 – 'const char*' in arguments are leaked
    Bug 558227 – Memory leak if invoked function returns an error
    Bug 558741 – Mutual imports cause great confusion
    Bug 558882 – Bad error if you omit 'new'
    Bug 559075 – enumerating importer should skip hidden files
    Bug 559079 – generate code coverage report
    Bug 559194 - Fix wrong length buffer in get_obj_key()
    Bug 559612 - Ignore deprecated methods definitions.
    Bug 560244 - support for strv parameters


Version 0.1 
-----------

Initial version! Ha!
