diff --git a/Makefile b/Makefile index 5c8a9b03bd..318b5795fd 100644 --- a/Makefile +++ b/Makefile @@ -1033,6 +1033,7 @@ SUBDIR+= gdal-grass SUBDIR+= gdb SUBDIR+= gdb-git SUBDIR+= gdb-netbsd +SUBDIR+= gdb-netbsd-wip SUBDIR+= gdb5 SUBDIR+= gdb6 SUBDIR+= gde @@ -1082,6 +1083,7 @@ SUBDIR+= gitless SUBDIR+= gitsome SUBDIR+= givaro SUBDIR+= gjots2 +SUBDIR+= gjs SUBDIR+= gksu SUBDIR+= gl2ps SUBDIR+= glib-java @@ -4667,6 +4669,7 @@ SUBDIR+= symon SUBDIR+= sympol SUBDIR+= sympow SUBDIR+= syn68k +SUBDIR+= synapse SUBDIR+= synce-dynamite SUBDIR+= synce-orange SUBDIR+= syncserver-dependencies diff --git a/gjs/DESCR b/gjs/DESCR new file mode 100644 index 0000000000..6bc76b1eaf --- /dev/null +++ b/gjs/DESCR @@ -0,0 +1,3 @@ +Gjs is a Javascript binding for GNOME. It's mainly based on +Spidermonkey javascript engine and the GObject introspection +framework. diff --git a/gjs/Makefile b/gjs/Makefile new file mode 100644 index 0000000000..0cd9134655 --- /dev/null +++ b/gjs/Makefile @@ -0,0 +1,42 @@ +# $NetBSD: Makefile,v 1.4 2020/03/10 22:10:24 wiz Exp $ + +DISTNAME= gjs-1.64.1 +CATEGORIES= lang +MASTER_SITES= ${MASTER_SITE_GNOME:=sources/gjs/${PKGVERSION_NOREV:R}/} +EXTRACT_SUFX= .tar.xz + +MAINTAINER= pkgsrc-users@NetBSD.org +HOMEPAGE= https://live.gnome.org/Gjs +COMMENT= Javascript binding for GNOME based on Spidermonkey +LICENSE= mit + +USE_TOOLS+= pkg-config +USE_LANGUAGES= c c++ + +MAKE_ENV+= LD_LIBRARY_PATH=${WRKSRC}/output/gjs@sha:${WRKSRC}/output/gjs-jsapi@sta:${WRKSRC}/output/gjs-console@exe +MESON_ARGS+= -Dinstalled_tests=false + +PKGCONFIG_OVERRIDE+= output/meson-private/gjs-1.0.pc +PKGCONFIG_OVERRIDE_STAGE= post-configure + +# Needed by the Javascript JIT used in gjs +NOT_PAX_MPROTECT_SAFE+= bin/gjs-console + +#pre-configure: +# echo '#!/bin/sh' > ${WRKSRC}/handle_pax +# echo 'cp $$1 $$2' >> ${WRKSRC}/handle_pax +# echo 'paxctl +m $$2' >> ${WRKSRC}/handle_pax +# chmod 755 ${WRKSRC}/handle_pax + +.include "../../devel/glib2/buildlink3.mk" +.include "../../devel/gobject-introspection/buildlink3.mk" +.include "../../devel/libffi/buildlink3.mk" +.include "../../devel/meson/build.mk" +.include "../../graphics/cairo-gobject/buildlink3.mk" +.include "../../graphics/gdk-pixbuf2/buildlink3.mk" +.include "../../lang/python/extension.mk" +.include "../../lang/mozjs68/buildlink3.mk" +.include "../../sysutils/dbus-glib/buildlink3.mk" +.include "../../x11/gtk3/buildlink3.mk" +.include "../../mk/readline.buildlink3.mk" +.include "../../mk/bsd.pkg.mk" diff --git a/gjs/PLIST b/gjs/PLIST new file mode 100644 index 0000000000..cff4f70500 --- /dev/null +++ b/gjs/PLIST @@ -0,0 +1,17 @@ +@comment $NetBSD$ +bin/gjs +bin/gjs-console +include/gjs-1.0/gjs/context.h +include/gjs-1.0/gjs/coverage.h +include/gjs-1.0/gjs/error-types.h +include/gjs-1.0/gjs/gjs.h +include/gjs-1.0/gjs/macros.h +include/gjs-1.0/gjs/mem.h +include/gjs-1.0/gjs/profiler.h +lib/gjs/girepository-1.0/GjsPrivate-1.0.typelib +lib/libgjs.so +lib/libgjs.so.0 +lib/libgjs.so.0.0.0 +lib/pkgconfig/gjs-1.0.pc +share/gjs-1.0/lsan/lsan.supp +share/gjs-1.0/valgrind/gjs.supp diff --git a/gjs/TODO b/gjs/TODO new file mode 100644 index 0000000000..1147362fca --- /dev/null +++ b/gjs/TODO @@ -0,0 +1,6 @@ +On PaX mprotect systems, the g-ir-scanner used to generate the typelib +loads the mozjs68 javascript interpreter library and fails to run. + +sysctl -w security.pax.mprotect.enabled=0 + +works around this, but I found no other workaround. diff --git a/gjs/buildlink3.mk b/gjs/buildlink3.mk new file mode 100644 index 0000000000..9b75262042 --- /dev/null +++ b/gjs/buildlink3.mk @@ -0,0 +1,18 @@ +# $NetBSD: buildlink3.mk,v 1.2 2020/03/08 16:47:52 wiz Exp $ + +BUILDLINK_TREE+= gjs + +.if !defined(GJS_BUILDLINK3_MK) +GJS_BUILDLINK3_MK:= + +BUILDLINK_API_DEPENDS.gjs+= gjs>=1.64.1 +BUILDLINK_PKGSRCDIR.gjs?= ../../lang/gjs + +.include "../../devel/glib2/buildlink3.mk" +.include "../../devel/gobject-introspection/buildlink3.mk" +.include "../../lang/mozjs68/buildlink3.mk" +.include "../../graphics/cairo-gobject/buildlink3.mk" +.include "../../sysutils/dbus-glib/buildlink3.mk" +.endif # GJS_BUILDLINK3_MK + +BUILDLINK_TREE+= -gjs diff --git a/gjs/distinfo b/gjs/distinfo new file mode 100644 index 0000000000..9b0069abb9 --- /dev/null +++ b/gjs/distinfo @@ -0,0 +1,7 @@ +$NetBSD: distinfo,v 1.2 2020/03/12 22:53:12 wiz Exp $ + +SHA1 (gjs-1.64.1.tar.xz) = f53d45551341806a5983f703295a66dae3404ca9 +RMD160 (gjs-1.64.1.tar.xz) = 427c4e37f70f99b5eef81d80d2e7b667fc6509e4 +SHA512 (gjs-1.64.1.tar.xz) = 8d076b9d9ff3eb66dc76ff1f3ea4c24de0604979b537cd09a62e3c5718f08a0acb6f29de60ed62bb7215a8ffa1387904db98e147d9b20cfab0391f7060566b2f +Size (gjs-1.64.1.tar.xz) = 418444 bytes +SHA1 (patch-meson.build.diff) = a0bef282355dd2cf4db5719cb84c71b64c6b217a diff --git a/gjs/log b/gjs/log new file mode 100644 index 0000000000..17aaa7b5eb --- /dev/null +++ b/gjs/log @@ -0,0 +1,886 @@ +Version 1.64.1 +-------------- + +- The BigInt type is now _actually_ available, as it wasn't enabled in the + 1.64.0 release even though it was mentioned in the release notes. + +- Closed bugs and merge requests: + * testCommandLine's Unicode tests failing on Alpine Linux [Philip Chimento, + #296, !399] + * build: Various clean-ups [Jan Tojnar, !403] + * Correctly handle vfunc inout parameters [Marco Trevisan, !404] + * Fix failed redirect of output in CommandLine tests [Liban Parker, !409] + +Version 1.58.6 +-------------- + +- Various backports: + * Correctly handle vfunc inout parameters [Marco Trevisan] + * Fix failed redirect of output in CommandLine tests [Liban Parker] + * Avoid filename conflict when tests run in parallel [Philip Chimento] + +Version 1.64.0 +-------------- + +- No change from 1.63.92. + +Version 1.63.92 +--------------- + +- Closed bugs and merge requests: + * object: Use g_irepository_get_object_gtype_interfaces [Colin Walters, Philip + Chimento, #55, !52] + * Add -fno-semantic-interposition to -Bsymbolic-functions [Jan Alexander + Steffens (heftig), #303, !397] + * examples: add a dbus-client and dbus-service example [Andy Holmes, !398] + * Various GNOME Shell crashes during GC, mozjs68 regression [Jan Alexander + Steffens (heftig), Philip Chimento, #301, !396] + +Version 1.63.91 +--------------- + +- Closed bugs and merge requests: + * [mozjs68] Reorganize modules for ESM. [Evan Welsh, Philip Chimento, !383] + * Various maintenance [Philip Chimento, !388] + * Fix building GJS master with Visual Studio and update build instructions + [Chun-wei Fan, !389] + * Resolve "Gnome Shell crash on GC run with mozjs68" [Philip Chimento, !391] + * installed-tests/js: Add missing dep on warnlib_typelib [Jan Alexander + Steffens, !393] + * object: Cache known unresolvable properties [Daniel van Vugt, Philip + Chimento, !394, #302] + +Version 1.58.5 +-------------- + +- Closed bugs and merge requests: + * Fix Visual Studio builds of gnome-3-34 (1.58.x) branch [Chun-wei Fan, !392] + * Can not access GObject properties of classes without GI information [Juan + Pablo Ugarte, !385, #299] + +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] + +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] + +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] + +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] + +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. + +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] + +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] + +Version 1.58.0 +-------------- + +- No change from 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] + +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] + +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] + +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] + +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] + +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] + +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] + +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] + +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] + +Version 1.56.0 +-------------- + +- No change from 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] + +Version 1.55.91 +--------------- + +- The problem of freezing while running the tests using GCC's sanitizers was + determined to be a bug in GCC, which was fixed in GCC 9.0.1. + +- Closed bugs and merge requests: + * gnome-sound-recorder crashes deep inside libgjs [#223, !266, Philip + Chimento] + * Various maintenance [!267, Philip Chimento] + * wrapperutils: Define $gtype property as non-enumerable [!268, Philip + Chimento] + +Version 1.55.90 +--------------- + +- New JS API: It's now possible to call and implement DBus methods whose + parameters or return types include file descriptor lists (type signature 'h'.) + This involves passing or receiving a Gio.UnixFDList instance along with the + parameters or return values. + + To call a method with a file descriptor list, pass the Gio.UnixFDList along + with the rest of the parameters, in any order, the same way you would pass a + Gio.Cancellable or async callback. + + For return values, things are a little more complicated, in order to avoid + breaking existing code. Previously, synchronously called DBus proxy methods + would return an unpacked GVariant. Now, but only if called with a + Gio.UnixFDList, they will return [unpacked GVariant, Gio.UnixFDList]. This + does not break existing code because it was not possible to call a method with + a Gio.UnixFDList before, and the return value is unchanged if not calling with + a Gio.UnixFDList. This does mean, unfortunately, that if you have a method + with an 'h' in its return signature but not in its argument signatures, you + will have to call it with an empty FDList in order to receive an FDList with + the return value, when calling synchronously. + + On the DBus service side, when receiving a method call, we now pass the + Gio.UnixFDList received from DBus to the called method. Previously, sync + methods were passed the parameters, and async methods were passed the + parameters plus the Gio.DBusInvocation object. Appending the Gio.UnixFDList to + those parameters also should not break existing code. + + See the new tests in installed-tests/js/testGDBus.js for examples of calling + methods with FD lists. + +- We have observed on the CI server that GJS 1.55.90 will hang forever while + running the test suite compiled with GCC 9.0.0 and configured with the + --enable-asan and --enable-ubsan arguments. This should be addressed in one of + the following 1.55.x releases. + +- Closed bugs and merge requests: + * GDBus proxy overrides should support Gio.DBusProxy.call_with_unix_fd_list() + [#204, !263, Philip Chimento] + * Add regression tests for GObject vfuncs [!259, Jason Hicks] + * GjsPrivate: Sources should be C files [!262, Philip Chimento] + * build: Vendor last-good version of AX_CODE_COVERAGE [!264, Philip Chimento] + +Version 1.55.4 +-------------- + +- Closed bugs and merge requests: + * Various maintenance [!258, Philip Chimento] + * Boxed copy constructor should not be called, split Boxed into prototype and + instance structs [#215, !260, Philip Chimento] + +Version 1.55.3 +-------------- + +- Closed bugs and merge requests: + * Manually constructed ByteArray toString segfaults [#219, !254, Philip + Chimento] + * signals: Add _signalHandlerIsConnected method [!255, Jason Hicks] + * Various maintenance [!257, Philip Chimento] + +Version 1.52.5 +-------------- + +- This was a release consisting only of backports from the GNOME 3.30 branch to + the GNOME 3.28 branch. + +- This release includes the "Big Hammer" patch from GNOME 3.30 to reduce memory + usage. For more information, read the blog post at + https://feaneron.com/2018/04/20/the-infamous-gnome-shell-memory-leak/ + It was not originally intended to be backported to GNOME 3.28, but in practice + several Linux distributions already backported it, and it has been working + well to reduce memory usage, and the bugs have been ironed out of it. + + It does decrease performance somewhat, so if you don't want that then don't + install this update. + +- Closed bugs and merge requests: + + * Ensure not to miss the force_gc flag [#150, !132, Carlos Garnacho] + * 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] + * Reduce memory overhead of g_object_weak_ref() [#144, !122, Carlos Garnacho, + Philip Chimento] + * context: Defer and therefore batch forced GC runs [performance] [!236, + Daniel van Vugt] + * context: use timeout with seconds to schedule a gc trigger [!239, Marco + Trevisan] + * Use compacting GC on RSS size growth [!133, #151, Carlos Garnacho] + * GType memleak fixes [!244, Marco Trevisan] + +Version 1.55.2 +-------------- + +- Closed bugs and merge requests: + * Gnome-shell crashes on destroying cached param specs [#213, !240, Marco + Trevisan] + * Various maintenance [!235, !250, Philip Chimento] + * Auto pointers builder [!243, Marco Trevisan] + * configure.ac: Update bug link [!245, Andrea Azzarone] + * SIGSEGV when exiting gnome-shell [#212, !247, Andrea Azzarone, Philip + Chimento] + * Fix build with --enable-dtrace and create CI job to ensure it doesn't break + in the future [#196, !237, !253, Philip Chimento] + * Delay JSString-to-UTF8 conversion [!249, Philip Chimento] + * Annotate return values [!251, Philip Chimento] + * Fix a regression with GError toString() [!252, Philip Chimento] + * GType memleak fixes [!244, Marco Trevisan] + * Atoms refactor [!233, Philip Chimento, Marco Trevisan] + * Write a "Code Hospitable" README file [#17, !248, Philip Chimento, Andy + Holmes, Avi Zajac] + * object: Method lookup repeatedly traverses introspection [#54, !53, Colin + Walters, Philip Chimento] + * Handler of GtkEditable::insert-text signal is not run [#147, !143, Tomasz + Miąsko, Philip Chimento] + +Version 1.54.3 +-------------- + +- Closed bugs and merge requests: + * object: Fix write-only properties [!246, Philip Chimento] + * SIGSEGV when exiting gnome-shell [#212, !247, Andrea Azzarone] + * SelectionData.get_targets crashes with "Unable to resize vector" [#201, + !241, Philip Chimento] + * Gnome-shell crashes on destroying cached param specs [#213, !240, Marco + Trevisan] + * GType memleak fixes [!244, Marco Trevisan] + * Fix build with --enable-dtrace and create CI job to ensure it doesn't break + in the future [#196, !253, Philip Chimento] + +Version 1.54.2 +-------------- + +- Closed bugs and merge requests: + * context: Defer and therefore batch forced GC runs [performance] [!236, + Daniel van Vugt] + * context: use timeout with seconds to schedule a gc trigger [!239, Marco + Trevisan] + * fundamental: Check if gtype is valid before using it [!242, Georges Basile + Stavracas Neto] + +- Backported a fix for a crash in the interactive interpreter when executing + something like `throw "foo"` [Philip Chimento] + +- Backported various maintenance from 3.31 [Philip Chimento] + +Version 1.55.1 +-------------- + +- New API for programs that embed GJS: gjs_memory_report(). This was already an + internal API, but now it is exported. + +- Closed bugs and merge requests: + + * object: Implement newEnumerate hook for GObject [!155, Ole Jørgen Brønner] + * Various maintenance [!228, Philip Chimento] + * ByteArray.toString should stop at null bytes [#195, !232, Philip Chimento] + * Byte arrays that represent encoded strings should be 0-terminated [#203, + !232, Philip Chimento] + * context: Defer and therefore batch forced GC runs [performance] [!236, + Daniel van Vugt] + * context: use timeout with seconds to schedule a gc trigger [!239, Marco + Trevisan] + * arg: Add special-case for byte arrays going to C [#67, !49, Jasper + St. Pierre, Philip Chimento] + +Version 1.52.4 +-------------- + +- This was a release consisting only of backports from the GNOME 3.30 branch to + the GNOME 3.28 branch. + +- Closed bugs and merge requests: + + * `ARGV` encoding issues [#22, !108, Evan Welsh] + * Segfault on enumeration of GjSFileImporter properties when a searchpath + entry contains a symlink [#154, !144, Ole Jørgen Brønner] + * 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] + * Expose GObject static property symbols. [!197, Evan Welsh] + * Do not run linters on tagged commits [!181, Claudio André] + * gjs-1.52.0 fails to compile against x86_64 musl systems [#132, !214, Philip + Chimento] + * gjs no longer builds after recent autoconf-archive updates [#149, !217, + Philip Chimento] + +Version 1.54.1 +-------------- + +- Closed bugs and merge requests: + * legacy: Ensure generated GType names are valid [!229, Florian Müllner] + * Fix GJS profiler with MozJS 60 [!230, Georges Basile Stavracas Neto] + * Regression with DBus proxies [#202, !231, Philip Chimento] + +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] + +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] + +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] + +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] diff --git a/gjs/patches/patch-meson.build.diff b/gjs/patches/patch-meson.build.diff new file mode 100644 index 0000000000..2133962590 --- /dev/null +++ b/gjs/patches/patch-meson.build.diff @@ -0,0 +1,21 @@ +$NetBSD$ + +On PaX mprotect systems, the test binary would need to be marked with +"paxctl +m". Disable test. + +--- meson.build.orig 2020-03-28 05:38:50.000000000 +0000 ++++ meson.build +@@ -232,13 +232,6 @@ int main(void) { + args: debug_arg, dependencies: spidermonkey, + name: 'SpiderMonkey sanity check') + +-if not minimal_program.compiled() or minimal_program.returncode() != 0 +- error('''A minimal SpiderMonkey program +-could not be compiled, linked, or run. Most likely you should build it with a +-different configuration. Check the recommended configuration: +-https://github.com/spidermonkey-embedders/spidermonkey-embedding-examples/blob/esr60/docs/Building%20SpiderMonkey.md''') +-endif +- + have_printf_alternative_int = cc.compiles(''' + #include + int main(void) {