chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Chicken-users] Chicken 2.0 released


From: felix winkelmann
Subject: [Chicken-users] Chicken 2.0 released
Date: Sun, 17 Jul 2005 10:31:00 +0200

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 <address@hidden>

  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 <address@hidden>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]