-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Gambit-C 4.0 beta 22 is now available. The source tarball is here:
http://www.iro.umontreal.ca/~gambit/download/gambit/4.0/source/ gambc-4.0b22.tar.gz
Here are the highlights of this release:
- The compiler did not check for interrupts and stack-overflows at all the right places. This caused a failure in "make check". This has been fixed.
- The compiler generates better code for the "case" construct. A C "switch" statement is used when there are enough cases of a given type (i.e. fixnum, symbol, etc) to justify it. For example, the code below now runs over 3 times faster.
(declare (standard-bindings) (block) (fixnum) (not safe))
(define (prime? x) (case x ((2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199) #t) (else (if (< x 200) #f 'maybe))))
(define (go x n) (let loop ((i n) (res #f)) (if (> i 0) (loop (- i 1) (prime? x)) res)))
(time (go 12 100000000))
- Several changes have been made to accomodate Snow v1.1.0 . All standard special forms now come with a "##" alias, i.e. (##define n 5) is equivalent to (define n 5). This makes it possible to redefine "define" (and other special forms) to do some special processing, and expand into a ##define .
- The syntax-case implementation has been upgraded to the latest version of portable syntax-case (version 7.3). The integration with Gambit has been improved. It is now possible to use Gambit specific special forms, such as "declare", "namespace" and "c-declare", when syntax-case is active. You can also make changes to the syntax-case implementation (misc/psyntax73.ss) and expand it to get a new syntax-case.scm .
- When generating a dynamically loadable file, the compiler deletes the intermediate C file that was generated. Use the new "-keep-c" compiler option to keep the C file.
- The debugger now correctly handles "leap" (the ,l command).
- A bug in the bignum division algorithm has been fixed.
- A bug in the expansion of tables has been fixed.
Marc