Hello Guilers, The fifth release candidate of the upcoming GNU G-Golf 0.8.0 release is now available for testing: * Tarball and a GPG detached signature [*]: http://ftp.gnu.org/gnu/g-golf/g-golf-0.8.0-rc.5.tar.gz http://ftp.gnu.org/gnu/g-golf/g-golf-0.8.0-rc.5.tar.gz.sig * Install Dependencies and complete installation instructions are given in the distributed INSTALL file, or here: https://www.gnu.org/software/g-golf/install.html * Noteworthy changes in 0.8.0-rc.5 Here is a summary of the noteworthy changes in this release, also available in NEWS file and on the G-Golf website. ** New interfaces g-markup-escape-text gi-import-by-name new #:allow-constant? optional keyword argument GVariant GVariantClass GVariantType The GLib Variant, VariantType and VariantClass typelib entries are now imported. Testing has been so far somewhat limited, but for what it's worth, the AdwDemoPageTabView, added in this release, defines and uses a couple of g-variant-new-boolean based simple actions. However, they work iif g-simple-action-new-stateful calls pass #f (NULL) as their parameter-type arg, and therefore, (as stated by the upstream documentation), none of the action activate callback ever receives a valid g-variant arg value (it always is #f (NULL)). This needs further investigation, but you may (and even may prefer to) implement an hold an action state as/in a goops slot, i.e. in the (pages tab-view tab-view-demo-page) module, the icon?, loading?, needs-attention?, indicator? and muted? slots. ** Enhancement *** Template and ui sxml files support Syntax highlighting support for the comments attribute has been added. *** g-closure-marshal (1) initialize method has been updated to not force the #:return-type and #:param-types initialize keyword arguments, as as GObject actually fills the GClosure structure with those (unless you are testing and plan to call the invoke g-golf method). (2) some GObject function/method GClosure arg(s) should preserve the GValue pointer when calling the user scheme closure, instead of extracting its value - for example, bind-property-full last two args expect a BindingTransformFunc GClosure, for which it is essential to preserve its second and third GValue arguments, as the user needs to actually set either one, the other or both. Note that wrt (2), there is no way to automatically detect which argument(s) of a callback require(s) a GValue pointer preservation prior to call the user scheme closure. Therefore, g-golf implements a (simple) mechanism to handle those situations, but it has to be maintained 'manually' - if you come across a similar need, not being covered by the existing implementation, let us know, we'll fix it. Those interested may search and read both the preserve-g-value-ptr? procedure code as well as the preceding comment, which briefly explains how it works, in the (g-golf hl-api callable) module. ** Examples *** Adwaita Demo The Adwaita demo has been restructured, and now properly support the Dark Style desktop (or application) mode. The following Adwaita Demo pages have been added: AdwDemoPageAvatar AdwDemoPageSplitViews AdwDemoPageTabView ** Bug fixing *** g-param slots initialization It was a bug not to call g-inst-g-param-set-property, whether the instance initialization was passed an init-kw arg or whether the initialization has to use the p-spec default value - fixed. *** gi-import-registered with-methods? default value Removing the specialization default value for the with-methods? argument when the namespace is part of the namespace import exception list. The fix allows to automatically (gi) import GLib/GObject typelib component(s) that are not part of the manually (ffi) defined subset, such as the GVariant type, constructors and methods. * You can help 1. Testing by installing from the tarball, or from the source if you prefer, on the distro of your choice. 2. By running the distributed examples. Ultimately, one of the best way to test, and participate, is to select G-Golf to develop the next application of your dream! Here is an overview of the GNOME platform libraries [1], accessible using G-Golf. In particular, libadwaita [2] provides a number of widgets that change their layout based on the available space. This can be used to make applications adapt their UI between desktop and mobile devices (as shown in the G-Golf port of the "Adwaita demo"). * Contact Consider joining us on irc [3], where you may ask for help or report a problem [4]. However, if you prefer: G-Golf uses the guile-user@gnu.org mailing list Report bugs to bug-g-golf@gnu.org Thanks! David [*] Use a .sig file to verify that the corresponding file (without the .sig suffix) is intact. First, be sure to download both the .sig file and the corresponding tarball. Then, run a command like this: gpg --verify g-golf-0.8.0-rc.5.tar.gz If that command fails because you don't have the required public key, then run this command to import it: gpg --keyserver keys.gnupg.net --recv-keys A3057AD7 and rerun the 'gpg --verify' command [1] https://developer.gnome.org/documentation/introduction/overview/libraries.html [2] https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/ [3] https://www.gnu.org/software/g-golf/contact.html [4] When reporting a problem, or if you think you found a bug, it is very important that you prepare a minimal reproducible example (MRE), sometimes also referred to as a short self-contained correct example (SSCCE) http://www.sscce.org/ https://en.wikipedia.org/wiki/Minimal_reproducible_example Also, on irc, we chat :), so please do not write code snipsets directly in the channel, unless 2 or 3 lines of code, nor (long/huge) error messages of course - for more then 2 or 3 lines of code, or error messages, always use a tor-friendly paste service (avoid those that track its visitors and require javascript, thanks!).