Libraries and Programs for Chicken

This page contains links to a few handy libraries I wrote for Felix L. Winkelmann’s excellent Chicken scheme compiler.

You probably want to use Chicken version 0.990 or newer. I’ve been using the “development” version from CVS, 0.1073, and it seems fine.

These files should work on most Unix-based operating systems. I’ve personally tried them on Redhat Linux, Solaris and HP-UX 11.00. Note that there are important bugfixes in Chicken for Solaris and HP-UX which are only present in versions 0.1072 and newer.

If you have any suggestions, patches, bug-fixes, or comments, please email them to me! You can reach me at the address listed on this page.



  • Database connectivity modules - db.scm, based on Oleg Kiselyov’s db-util.scm, and drivers for a few databases:

    • oracle.scm
    • mysql.scm
  • Networking libraries:

    • socket.scm - low- and higher-level interfaces to BSD sockets (AF_UNIX and AF_INET)
    • plt-net.scm - PLT (mzscheme) compatibility routines, layered on top of socket.scm
    • multiplex.scm - Mailboxes for interthread communications, and a select()-driven multiplexor for socket I/O. This allows threads to do “blocking” reads without really blocking all the other threads in the process - the multiplexor uses select() to awaken blocked threads as necessary. A simple multi-threaded “eval” server is included as an example.
    • md5-openssl.scm - A binding to the OpenSSL MD5 library
  • lalr v0.9 - Mark Johnson’s 1993 LALR(1) parser generator
  • readline.scm - A binding to GNU readline (note - GPLed!). Makes using csi more fun :-)
  • coroutine.scm - Simple call/cc based coroutines

  • scmake - a quick, ugly, buggy, incomplete experiment in writing a “make” tool in scheme

Once you’ve got readline.scm compiled up and installed, you can make CSI load it at startup time by putting the following in your ~/.csirc:

(require 'readline)
(current-input-port (make-gnu-readline-port "csi> "))
  (string-append (or (getenv "HOME") ".") "/.csi.history"))


A simple Javadoc/Doxygen/Schmooz-like documentation-extraction tool for Scheme. Specially formatted comments in Scheme source code are translated to (pseudo-)SXML fragments of DocBook, which can then be translated to XML text and included in DocBook documents.


A binding for GTK+ version 2.0 (not 1.2!). The version you see linked above is really alpha. I’ll be fleshing it out and cleaning it up over the coming weeks. A PDF rendering of the API documentation is available.

New since version 20021014.1:

  • Many new examples, including explore.scm, a very simple GObject type-tree explorer

  • New library, G+, based on JLib. (Not source compatible with JLib, just based on the idea.)

  • Able to hook GBoxed copy/finalize and GObject reference/finalize.
  • gsignal-connect-closure renamed to gsignal-connect
  • gsignal-handler-disconnect renamed to gsignal-disconnect
  • Support for gdk-color and gdk-rectangle structures

  • Convenience function gtk:gc-when-idle, which collects when the program is idle for a configurable length of time

  • Better support for GtkTreeStore, GtkWidget, graphics contexts, and GtkEditable.
  • Some type errors fixed
  • Many new procedures

New since version 20021007.1:

  • Installs as a proper Chicken extension by using the chicken-setup library

  • There’s now more than zero documentation. Still work to be done, but it’s a start. It uses docscm.

  • Support for libglade 2.0
  • Wrapper-generation completely reorganised

    • GType now used to generate object/boxed/enum/etc. wrappers (it was always used by gobject.scm)

    • Each GObject/GInterface/GBoxed subclass now compiled separately

  • Supports GtkListStore to a usable degree. It’s no more painful to use than it is in C.
  • Timeouts and idle-handlers are supported.