The CHICKEN Scheme-to-C compiler, Version 2, Build 0 is now available at <http://www.call-with-current-continuation.org>.
Things changed since the last release (1.89): - Many bugfixes - Loads of minor improvements (better error messages, more warnings, more error checks, etc.) - On systems supported by the "libffi" library, the 128-argument limit can be exceeded (currently to an arbitrary maximum of 1000). To take advantage of this, add `--with-libffi' to the configuration options when building chicken (libffi has to be installed - see <http://freshmeat.net/projects/libffi>) - The `libsrfi-chicken' and `libstuffed-chicken' libraries have been folded into `libchicken', so only a single library is linked with generated executables, which greatly simplifies and speeds up the build process. It is recommended to remove any traces of `libstuffed-chicken.*' and `libsrfi-chicken.*' before installing a new release. This requires also to reinstall all eggs (extension libraries). - The compiler is able to inline more procedure calls - Implicit non-multival continuations (like in `begin' or 'let') accept multiple values and discard all but the first value - finalization should actually work now and is much more efficient (unless used excessively) - csi: `advise' has been removed `-eval' implies `-batch' and `-quiet' added `-require-extension' short option names are now supported and may be collapsed, if unambigous - New runtime options: -:b (enter REPL on error) -:B (ring bell on every major GC) -:fNNN (set pending finalizer maximum limit) - New compiler options: -accumulate-profile -inline -inline-limit -emit-external-prototypes-first - The compiler-option `-require-for-syntax' has been renamed to `-require-extension' and is the same as putting a `(require-extension ...)' form directly into the code - Removed compiler- and interpreter option `-no-feature' - New declarations: (lambda-lift) ([not] inline) (inline-limit LIMIT) (emit-external-prototypes-first) ([not] check-c-syntax) - `foreign-callback-lambda[*]' has been renamed to `foreign-safe-lambda[*]' - the old names are still valid but deprecated - New foreign type specifier `scheme-pointer' (the same as `pointer', which is deprecated now) - Easy FFI: `___scheme_pointer' and `___byte_vector' pseudo types `___pointer' and `___length' markers `default_renaming' and `opaque' pseudo declarations `___inout' and `___out' argument markers work also for C++ reference types Recognizes `C_word' and `size_t' - The reader supports selective case sensitive/insensitive reading using the `#cs...' and `#ci...' syntax (as supported in PLT Scheme) - `\uXXXX' and `\UXXXXXXXX' escape-sequences for string literals - `#\UXXXXXXXX' character literal syntax - `\v', `\a' and `\f' escape sequences and `#\delete', `#\esc', `#\alarm', `#\vtab' and `#\nul' character literals - `chicken-setup' supports proxy connections via the `-proxy' option - library: (set-dynamic-load-mode! MODE) `(end-of-file)' has been removed (use `#!eof' instead) - The alternative continuation API described in Marc Feeley's paper "A better API for first class continuations" is supported natively: (continuation-capture PROC) (continuation-graft K THUNK) (continuation-return K VALUE ...) (continuation? X) - `foreign-primitive' and `define-extension' macros - tinyclos: (instance-of? X) `define-method' specializes on all arguments and allows DSSSL keyword argument lists - eval: (set-dispatch-read-syntax! CHAR PROC) - extras: (hash-table-update! HT KEY PROC INIT) (hash-table-exists? HT KEY) (hash-table-values HT) (hash-table-keys HT) (alist->hash-table ALIST [TEST SIZE]) `hash-table->list' has been renamed to `hash-table->alist `hash-table-for-each' takes the arguments in reversed order (the old order is still valid but deprecated) Hash-tables support now user-defined hash functions - posix: (file-link OLD NEW) (symbolic-link? FILENAME) (regular-file? FILENAME) errno/exist `process' and `process-execute' allow passing an environment - regex: (regexp-escape STR) - tcp: (tcp-listener-fileno LISTENER) - utils: (port-for-each FN THUNK) (port-map FN THUNK) - On Windows, the batch file `win-install.bat' can be used to install the system into the desired location - Building Chicken on Windows with the free development tools from Microsoft (VCToolkit, Platform Core SDK) has been tested and is documented in the file `vctk-install.txt' - The `-script-meta' option has been removed - The srfi-25 and srfi-37 library units and the test-infrastructure facility have been removed from the core system and are now separately available as extensions (eggs) - The syntax-case macro and module system has been removed and also available as an extension. This implies that all compiler- and interpreter options related to hygienic macros and syntax-case are gone as well. - All strictness compiler- and interpreter options (and the `strict-reader' parameter) have been removed - the `examples' directory and its contents have been removed from the distribution Many thanks to William Annis, Mark Baily, Peter Bex, Dominique Boucher, Patrick Brannan, Thomas Chust, Alejandro Forero Cuervo, Graham Fawcett, Damian Gryski, Sven Hartrumpf, Hans Huebner, Christian Jaeger, Dale Jordan, Daishi Kato, Sergey Khorev, Krysztof Kowalczyk, Goran Krampe, John Lenz, Kon Lovett, Scott G. Miller, Julian Morrison, Nicolas Pelletier, Carlos Pita, Benedikt Rosenau, Andreas Rottmann, Reed Sheridan, Alex Shinn, Andrey Sidorenko, Michele Simionato, Volker Stolz, Sunnan, Zbigniew Szadkowski, Andre van Tonder, Henrik Tramberend and Mark Wutka for their helpful contributions, suggestions and bug reports! Features: - Generates tail-recursive C with full support for first-class continuations and multiple values (Using the translation scheme as described in Henry Baker's paper "Cheney on the M.T.A."). - Fairly R5RS compliant. - Support for SRFIs 0, 1, 2, 4, 6, 8, 9, 10, 13, 14, 16, 18, 23, 26, 28, 30, 39 and 55. - Record structures, hash-tables, queues, custom I/O ports, extended string operations, regular expressions, Common LISP style `format', TCP sockets and more... - Provides an object system with multiple inheritance, multimethods and a Meta-Object-Protocol (based on Gregor Kiczales' TinyCLOS). - Lightweight threads (based on call/cc). - High portability (known to work on Windows, Linux, Free/Net/Open BSD, Solaris, SunOS, MAC OS X, HP-UX, IRIX and probably many more. Supported processors include x86, AMD64, Sparc, PA-RISC, Alpha, ARM, IA64, S/390, MIPS and PowerPC). - Freely available under the BSD license. - A POSIX interface (partially available for Windows) - Powerful pattern matching macros. - `syntax-case' macros and module system - Generation of profiling information. - A extensive Foreign Function Interface with callbacks, finalization, user defined foreign type converters, locatives, embedding of C code inside Scheme programs, statically allocated (non GC'd) Scheme data and the possibility of embedding compiled Scheme code into other applications. - On many systems compiled code can be loaded dynamically into a running application. - The compiler can be customized in various ways. - Support for writing interpreted or compiled UNIX shell scripts or Windows batch files. Limitations: - No unlimited-precision integers (bignums), rationals or complex numbers (available seperately as an extension) - No support for unicode (also available separately) - Procedures can not have more than 126 arguments. - Compilation of large files is quite slow. Extensions and libraries: Check out <http://www.call-with-current-continuation.org/eggs/index.html> for a rapidly growing list of readily packaged extensions for Chicken. Currently available: args axst autoload awk base64 bb binary-parse blas c3 charconv complex crypt csv datatype debug defstruct dissector doctype eggdoc environments epeg expat ezxdisp ftp g2 gdbm generalised-case gmp hostinfo html-stream htmlprag http iconv imlib2 inline irc iset japi lalr lazy-ffi levenshtein lightning loop mailbox make man mapm matcher md5 meroon metakit miscmacros mole ncurses numbers oblist opengl pcap phoghorn pmatch pop3 postgresql ppi protobj qthack readline regex-case rfc3339 rgraph rss sandbox schelog sdl sedna sfio sha1 silex simple-macros smtp spiffy-utils spiffy spread sqlite srfi-17 srfi-25 srfi-37 srfi-38 srfi-40 srfi-42 srfi-47 srfi-57 ssax stream-base64 stream-cgi stream-ext stream-ldif stream-parser stream-wiki structures sxpath syntax-case tagged-begin test-infrastructure tcc tcp-server tcp6 testeez tk udp unix-sockets update-egg url utf8 vector-lib web-scheme xlib xmi xml-rpc xosd Particular attention should be be paid to the `utf8' and `numbers' eggs, which provide support for UNICODE and the full numeric tower, respectively. The current development version can be accessed via the "darcs" revision control system (available at <http://www.darcs.net>), like this: $ darcs get http://chicken.humankraft.com/chicken See the file README.darcs for details on how to bootstrap the system. A mailing list for CHICKEN can be accessed here: To post a message send e-mail to <[email protected]> General information about the mailing list is at <http://mail.nongnu.org/mailman/listinfo/chicken-users> Bug reports, suggestions and comments would be very welcome. Contact me at <[EMAIL PROTECTED]> _______________________________________________ Chicken-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/chicken-users
