Next: , Previous: Top, Up: Top

1 (gnome-2)

1.1 Overview

Selects version 2 of the Guile-GNOME libraries. This module is used for its side effects; it exports no procedures.

1.2 Rationale

Early in the development of guile-gnome, we realized that at some point we might need to make incompatible changes. Of course, we would not want to force a correctly-written program to break when guile-gnome gets upgraded. For this reason, we decided to make guile-gnome parallel-installable. A program is completely specified when it indicates which version of guile-gnome it should use.

Guile-gnome has the concept of an API version, which indicates a stable API series. For example, a program written against API version 2 of guile-gnome will continue to work against all future releases of that API version. It is permitted to add interfaces within a stable series, but never to remove or change them incompatibly.

Changing the API version is expected to be a relatively infrequent operation. The current API version is 2.

There are two manners for a program to specify the guile-gnome version:

  1. Via importing the (gnome-version) module.

    This special module alters guile's load path to include the path of the specified API version of guile-gnome. For example:

               (use-modules (gnome-2))
  2. Via invoking guile as guile-gnome-version.

    This shell script is installed when building a particular version of guile-gnome, and serves to automatically load the (gnome-apiversion) module. For example, to get a repl ready for guile-gnome:

               $ guile-gnome-2

    To load a script with a particular version of guile-gnome:

               $ guile-gnome-2 -s script args...

    To specify the guile-gnome version in a script, you might begin the file with:

               #! /bin/sh
               # -*- scheme -*-
               exec guile-gnome-2 -s $0
               ;; scheme code here...

A program must select the guile-gnome version before importing any guile-gnome modules. Indeed, one cannot even import (gnome gobject) before doing so.

For a further rationale on parallel installability, see

1.3 Usage