[gambit-list] Gambit-C 4.0 beta 13
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