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, and the official git repository is at

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.



The DMBCS repository is at
(use the master 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 dmbcs-guile
cd dmbcs-guile
git pull master


Our Guix channel descriptor is (this goes into your $HOME/.config/guix/channels.scm)

    (name 'dmbcs-development)
    (url ""))

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.


    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 July, 2020

    This page is