A new beta of Gambit-C 4.0 is now available in source form at this address:
http://www.iro.umontreal.ca/~feeley/gambc40b13.tar.gz
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.
Marc