Latest News

June 2018

Grip version 0.2.0 is released.

Here is a summary of the changes since version 0.1.2. See Grip git summary and git log for a complete description:

Installation location changes

The default and --prefix installation locations for source modules and compiled files has been changed, and, in the absence of the new configure option described below, are now:

  • $(datadir)/grip
  • $(libdir)/grip/guile/$(GUILE_EFFECTIVE_VERSION)/site-ccache

In the above, $(datadir) is substituted to the default /usr/local/share or /your/prefix/share and $(libdir) is substituted to /usr/local/lib or /your/prefix/lib, when/if --prefix was passed.

$(GUILE_EFFECTIVE_VERSION) is substituted to the stable version number with which Grip is being compile, for example, 2.2

This change makes Grip compatible with the GNU Coding Standards, but it also implies that, unless you use the new configure option describe below, you will have to augment both Guile's variables %load-path and %load-compiled-path, respectively, with the two (substituted) paths described above, so that Guile finds Grip's installed source modules and compiled files (see Grip's installation 'Notes' for more on this).

New configure option

The configure option --with-guile-site has been added, used to explicitly ask Grip's source modules and compiled files to be installed using Guile's global site and site-ccache directories respectively (see Grip's installation 'Notes' for more on this).

It will only be honored if (and only if) it is passed as:

  • --with-guile-site=yes
  • [ in this case, there is obviously no need to augment Guile's
  • [ variables %load-path and %load-compiled-path

Module name changes

A few modules were having their name using plural, such as dates, strings, ... I decided to rename these using singular. A few have been renamed, such as fs-ops -> file. Here is list of these module name changes, the name on the left is the new module name:

  • (grip module) <- (grip reexport)
  • (grip optargs) <- (grip keywords)
  • (grip date) <- (grip dates)
  • (grip file) <- (grip fs-ops)
  • (grip list) <- (grip lists)
  • (grip regex) <- (grip regexp)
  • (grip string) <- (grip strings)
  • (grip latex) <- (grip tex-utils)
  • (grip queue) <- (grip push)
  • (grip iter) <- (grip do)
  • (grip angle) <- (grip nbs pi)
  • (grip float <- (grip nbs fp)
  • (grip gnome color) <- (grip gnome colours)
  • (grip gnome mdialog) <- (grip gnome mdialogs)
  • (grip clutter color) <- (grip clutter colours)
  • (grip db filter) <- (grip db filters)
  • (grip number hex) <- (grip nbs hex)
  • (grip number nb2str) <- (grip nbs nb2str)
  • (grip number str2nb) <- (grip nbs str2nb)
  • (grip number) <- (grip nbs)

New modules

  • (grip store)

Interface changes

The following procedures have been renamed, and their interface has sometimes also changed (see the reference manual, also available online). The name on the left is the new interface name:

(grip optargs)

  • split-keyword-args

  • both the two arguments and the two returned values have been inverted: the first returned value is now the list of keyword arguments listed in KEYWORDS (which is now the first argument of the procedure), followed by the list of all other arguments.

(grip list)

  • list-replace-all <- list-replace

(grip string)

  • string-replace-all <- str/replace-all
  • string-escape-sql <- str/prep-str-for-sql
  • string-escape-filename <- str/prep-str-for-fs
  • string-tokens <- str/get-tokens
  • string-contains-ixs <- str/contains?
  • string-span <- str/span
  • string-read <- str/read

(grip float)

  • float-zero? <- fp/zero?
  • float=? <- fp/=?
  • float<? <- fp/<?
  • float>? <- fp/>?
  • float-round <- fp/round

New interfaces

(grip goops)

  • define-method*

(grip string)

  • string-delete-all
  • string-escape
  • string-contains-ci-ixs

(grip store)

  • <store>
  • get
  • ref
  • set-!
  • remove!
  • inventory
  • init!
  • load!
  • save
  • store-inventory?

(grip angle)

  • radian->degree
  • degree->radian

(grip float)

  • float<=?
  • float>=?
  • float-member

New variables

(grip string)

  • %filename-reserved-chars


Till now, Grip documentation was just a mock-up. There still is quite a lot to do - along with reviewing/rewriting grip's modules) - but the good news are I started to work on it.

The following modules are now fully documented:

  • (grip module)
  • (grip goops)
  • (grip optargs)
  • (grip list)
  • (grip string)
  • (grip queue)
  • (grip store)
  • (grip iter)
  • (grip angle)
  • (grip float)
  • (grip xft)
  • (grip utils)

The reference manual is now available online.

Bugs fixed

  • There was a bug in str/replace-all, that would produce wrong results if the str argument would contain valid regexp characters. This has been fixed in string-replace-all.

Older News

March 2018

Grip version 0.1.2 is released.

Here is a summary of the changes since version 0.1.1. See Grip's git summary and git log for a complete description:


  • Guile >= 2.0.14
  • Guile-Gnome >= 2.16.5


  • Guile-2.2 does not query (default-duplicate-binding-handler) at module expand eval load time as it did for Guile-2.0, a bad decision imo, but we have to cope with it, and declare #:duplicates (merge-generics ...) in each individual module instead, and remove our patched version of guild.
  • All getters, setters, accessors and methods exported using g-export not as part of the module #:export declarations - which re-export defined names (and precisely should only be used for getters, setters, accessors and methods.

Bugs fixed

  • The configure step was raising an exception if it could not find guile-gnome, but it should not, it should just not install grip-gnome in this case: this is fixed now.

February 2016

Grip version 0.1.1 is released.

Here is a summary of the changes since version 0.1.0. See Grip's git summary and git log for a complete description:


  • fixing read-config;
  • (grip sqlite3) renamed as (grip sqlite).


  • Adding sqlite/table-rename;
  • use %sqlite-* variables for all query/command strings, not procedures;
  • (grip db sqlite) should not import (grip db filters).


Note: Grip's Users Manual still is a mock-up.

  • undefined links fixed;
  • all sections also part of the web-pages now sync.

January 2016

Grip version 0.1.0 is released.

This is Grip's first release:

Unlike Amstrong's one, this is a [very] small step for humanity, but a big step for GNU Foliot and Guile-Clutter users :-)

November 2015

We are currently working on Grip's first release, stay tuned! In the mean time, see our developers page.

Octobre 2015

Our request for a nongnu project page at Savannah for our Grip toolbox is accepted, with all the honors! Bruno Félix Rezende Ribeiro, the GNU Savannah hacker in charge of our evaluation said:

... I wish every package submitted to Savannah were so easy to evaluate as your. Congratulations for the high level of compliance! ...