Company logo: Granite slab with DM Bespoke Computer
                Solutions written on it.

GNU guile

Guile is GNUʼs ubiquitous programming language for extensions: a semi-compilable lisp-family scripting language which integrates deeply into the runtime stack of fully compiled languages, such as C or C++, allowing it to become an integral part of the program logic. Typical uses are to provide end-user programmable configuration files (exemplified by mcron) and macro/4GL runtime facilities (like what emacs does with its own lisp implementation). Guile is also useful stand-alone in the development of extremely flexible and self-evolving applications, such as GUIX.

Officially the project is managed at Savannah: the project home page is https://www.gnu.org/software/guile, and the official git repository is at

https://git.savannah.gnu.org/git/guile.git

DMBCSʼs version adds a command line processor module in the ice-9 namespace, which provides a simplified way to define available command-line options, and then sophisticated processing which includes automatic responses to --help and --version requests.

Download

GIT

The DMBCS repository is at

https://rdmp.org/dmbcs/guile.git
(use the trunk branch). Note that this may not be completely up to date with the official repository; you want to pull the master branch of that after taking ours (or vice-versa). In other words, to obtain a completely up to date version, do

git clone https://rdmp.org/dmbcs/guile.git dmbcs-guile
cd dmbcs-guile
git pull https://git.savannah.gnu.org/git/guile.git master

Guix

Our Guix channel descriptor is (this goes into your $HOME/.config/guix/channels.scm; note that these instructions have changed somewhat from earlier versions of this document)

(channel
  (name 'dmbcs-development)
  (url "https://rdmp.org/dmbcs/guix-channel.git")
  (introduction
     (make-channel-introduction
         "11cfe27f9eb439e94781abec25695f87dc3fdecb"
         (openpgp-fingerprint
            "E23C 21ED 864F F4F3 A711  4CDF CA47 1FD5 0161 8A49"))))

With this (after a guix pull), you can then import our version of Guile into your profile with

guix install guile@3.0.4+dmbcs

(you should use guix show guile to see what the currently available versions are).

Our developments

  • The (ice-9 getopt-long) module is made to more intelligently determine if the token which follows an option which may optionally take a value, is a value for that option, or not. It can do this if the user supplies a predicate function which says whether or not a token is a plausible value for an option. Formerly a command-line like mcron -s file.scm (where -s may take a numerical argument) bombed out of the program with an error message, but after our update the program gives s its default value and proceeds to parse the rest of the command line correctly.
        There are further benefits to the enhanced behaviour, as discussed here.
  • We added a tiny amount of doc-string to the (srfi srfi-9 gnu) module, so that in an interactive Guile environment you at least get something if you type, for example, (help set-fields).
  • We have created a brand-new (ice-9 command-line-processor) module which builds upon the getopt-long module we alluded to above. This provides a ‘one-stop shop’ for specifying the command-line options, and automatically deals with the --help and --version option. Full instructions for the use of this facility are in the enhanced manual, i.e. type info guile at the command line and then look under the modules section.
  • Contact and Support

    Please click here if you wish to send us a message, for help or support, or even just to let us know that you are successfully using this software!

    Mailing list

    If you would like to receive e-mail notices of matters arising about our developments in this application, you may request this through the contact form.

    Contribution to development

    Generally speaking, developments to Guile should be offered to the upstream project. We will happily consider contributions to our developments of the source code if you provide the address of a GIT repository we can pull from, and will consider all bug reports and feature requests made to the above contact form.

    Donations

    If you use this application please consider a bitcoin donation if you can. A small amount informs us that there is interest and that we are providing a useful service to the community; it will keep us motivated to continue to make open source software. Donations can be made by bitcoin to the address 1PWHez4zT2xt6PoyuAwKPJsgRznAKwTtF9.

    This web page Copyright © 2020 DM Bespoke Computer Solutions Ltd.

    This page was last modified December, 2023

    This page is https://rdmp.org/dmbcs/guile.