We are pleased to announce the release of the GNU Guix Workflow Language version 0.3.0, representing 156 commits by two people. This release contains a number of incompatible changes compared to the previous release 0.2.1. The biggest change is the use of an inferior Guix, which lets the workflow languag use a well-known version of Guix (namely the “guix” package in (gnu packages package-management)) as a library without also using the dated package definitions of that package. Package lookups are instead performed through an inferior that’s opened at ~/.config/guix/current by default. Another breaking change is the use of Guile Config for argument parsing, which unifies the way sub-commands and arguments are handled. The result is that we have “run”, “graph”, and “web” sub-commands with fewer irrelevant options at the top level. For details see the NEWS excerpt below. See also the updated manual: https://workflows.guix.info/manual/ • About The Guix Workflow Language (GWL) provides an extension to GNU Guix's declarative language for package management to automate the execution of programs in scientific workflows. The GWL can use process engines to integrate with various computing environments. • Download Here are the compressed sources and a GPG detached signature[*]: https://ftpmirror.gnu.org/gwl/gwl-0.3.0.tar.gz https://ftpmirror.gnu.org/gwl/gwl-0.3.0.tar.gz.sig Use a mirror for higher download bandwidth: https://www.gnu.org/order/ftp.html [*] 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 gwl-0.3.0.tar.gz.sig 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 BCA689B636553801C3C62150197A5888235FACAC and rerun the 'gpg --verify' command. This release was bootstrapped with the following tools: Autoconf 2.69 Automake 1.16.2 Gnulib v0.1-3269-g03d7a6b1f NEWS * Changes in 0.3.0 (since 0.2.1) ** Command line interface - Add sub-commands “run”, “graph”, and “web”; remove options from the main command. - =guix/scripts/workflow.scm= no longer exists. The file is now called =gwl/main.scm=. The entry point, however, is now =guix/extensions/workflow.scm=, and it is invoked with =guix workflow= when the directory is found on the new =GUIX_EXTENSIONS_PATH= environment variable (since Guix commit cf289d7cfa34315bf13b3114b9a5bf3d3c05ebea). ** Web interface - GWL source snippets now have better syntax highlighting. ** Bug fixes - handle caching of files with UTF-8 encoded file names - handle more errors in the web interface ** Package handling – packages are now looked up in an inferior Guix, which defaults to the current Guix. This avoids the problem of loading older packages from the Guix that was available when the GWL was built. - extra care is taken to ensure that the Guile load path is consistent and predictable, so that the version of Guix at runtime does not affect the behavior of the workflow language. Only the variant of Guix that was used at build time is used as a library. - the new =require-packages= form at the top of a workflow file can be used to specify packages that should be available when evaluating the workflow ** Error handling - accidental keywords instead of =process= or =workflow= field names now trigger a more specific “invalid field” syntax error instead of generating invalid syntax that throws an unclear error later. - errors when loading workflows no longer show the GWL or SRFI modules as the error location; instead they are limited to the source file where they originated. - brace errors in code snippets are now reported with approximate location - =pick= from =(gwl utils)= now raise error conditions when an item cannot be found. - when a code snippet references an element of a tagged list that does not exist, an error is thrown at runtime instead of injecting =#false= ** Workflow syntax - new procedure =get= to access members of nested association lists by path. ** Execution engines - The =runner= field of all execution engines is now a procedure that takes a list of commands and returns a list of commands. - process properties are now passed as script arguments to allow reuse of generated process scripts.