[gambit-list] Gambit-C 4.0 beta 13

Marc Feeley feeley at iro.umontreal.ca
Wed May 11 22:10:12 EDT 2005

A new beta of Gambit-C 4.0 is now available in source form at this


Here's what's new:

- The "table" type.  Tables map keys to values.  Gambit has an
   efficient implementation of tables using hashing and open
   addressing.  The runtime system and compiler now use tables
   internally instead of association lists in critical places.
   This improves the speed of the compiler when compiling
   large files containing many constants, or when the -debug
   option is used (on some tests the compiler runs 5 times faster).
   Tables can hold their keys weakly and/or their values weakly.
   The key comparison procedure and hashing procedure can be specified
   when a table is created.  A reasonably efficient hashing procedure
   is used by default when the key comparison procedure is eq?,
   eqv?, equal?, string=? or string-ci=?.

- Hashing.  There are several hashing procedures (symbol-hash,
   keyword-hash, string=?-hash, string-ci=?-hash, eq?-hash,
   eqv?-hash, and equal?-hash).  The procedures object->serial-number
   and serial-number->object are more efficient (thanks to eq? tables).

- A new implementation of syntax-case is now included.  This
   version preserves source-code location information, so it makes
   debugging easier than the previous version.  It is usable
   in the interpreter and in the compiler.  The integration with
   Gambit is not perfect: local variables are renamed, some special
   forms are transformed (e.g. when pretty-printing a procedure
   the code may look very different from what the programmer wrote),
   and some Gambit-specific special forms (such as ##namespace,
   ##declare, etc) are not available when using syntax-case.  For
   this reason syntax-case is not enabled by default.  To use it
   you must start Gambit like this:

           % gsi ~~/syntax-case -

   or load it from your customization file.

- The web-server example has been extended to demonstrate how
   web-continuations can be used.  There is also a fairly complete
   library for dynamically generating HTML.  It shows how the
   ##namespace and ##include forms can be used to modularize code.

- Most of the bugs and misfeatures reported on gambit-list have been
   fixed.  Other bugs fixed: equal? on structures, passing Scheme
   functions to C, imprecise error messages, Mac OS X assembly code
   problem when using --enable-debug, and more.  The system builds
   cleanly and has been tested in 32 bit and 64 bit environments
   (mainly Linux and Mac OS X).

- The source code for GUIDE (Gambit Universal IDE) is now included
   in the distribution.  Unfortunately, there were some problems
   getting the makefiles and configure script working properly with
   Qt, so currently GUIDE is disabled.  I expect this to be fixed
   shortly.  [If you feel adventurous the sources are in lib/guide.]

- Gambit is now dual licensed.  You have the option to choose
   between the Apache license and the LGPL.


More information about the Gambit-list mailing list