Hi! Here’s a proposal for a condensed NEWS for the announcement:
Highlights of changes in 2.0.0 (since the 1.8.x release series): * New compiler infrastructure and VM Guile 2.0 compiles Scheme code to bytecode, which is then interpreted by the VM. This gives a noticeable performance improvement compared to earlier Guile series. By default source code is compiled automatically as it is encountered, without any manual intervention. The "guile-tools compile" command provides a command-line interface, and there are also Scheme procedures to drive the compiler. Besides Scheme, the compiler comes with front-ends for the ECMAScript and Emacs Lisp languages. * New REPL, new debugger A read-eval-print-loop (REPL) is available. Compared to the REPL in earlier releases, it supports "meta-commands" that provide convenient access to interactive programming features. For instance, the ",compile" meta-command compiles the given expression, ",profile" shows an execution profile of the given expression, etc. Any error or uncaught exception leads to a "recursive REPL", which is a REPL augmented with debugging capabilities: it has meta-commands to display a backtrace, inspect the variables on a stack frame, etc. The recursive REPL can be quit to return to the original one. * Support for hygienic macros The `syntax-rules' and `syntax-case' hygienic macro systems are supported natively by Guile, without importing `(ice-9 syncase)', and work across module boundaries. They are a better replacement for `defmacro'. * Unicode support Scheme strings can hold any Unicode character, and ports can read and write Unicode text in various encodings. * Partial R6RS compatibility The `library' and `import' forms of R6RS are supported, and all the R6RS libraries defined in the standard are available. See "R6RS Incompatibilities" in the manual, for details about remaining incompatibilities. * New dynamic foreign function interface The `(system foreign)' module provides a new dynamic foreign function interface (FFI). It allows bindings to C libraries to be written without a single line of C code. * Switch to the Boehm-Demers-Weiser garbage collector Guile now uses the Boehm-Demers-Weiser conservative garbage collector (aka. libgc). It makes interaction with C code easier making, for instance, the use of mark and free SMOB procedures optional in many cases. It also improves performance. * New modules ** `(srfi srfi-18)', more sophisticated multithreading support ** `(srfi srfi-27)', sources of random bits ** `(srfi srfi-38)', External Representation for Data With Shared Structure ** `(srfi srfi-42)', eager comprehensions ** `(srfi srfi-45)', primitives for expressing iterative lazy algorithms ** `(srfi srfi-67)', compare procedures ** `(ice-9 i18n)', internationalization support ** `(ice-9 futures)', fine-grain parallelism ** `(rnrs bytevectors)', the R6RS bytevector API ** `(rnrs io ports)', a subset of the R6RS I/O port API ** `(system xref)', a cross-referencing facility (FIXME undocumented) ** `(ice-9 vlist)', lists with constant-time random access; hash lists ** `(system foreign)', foreign function interface ** `(sxml ...)', tools for XML processing ** `(texinfo ...)', parsing and production of Texinfo documents ** `(sxml match)', a pattern matcher for SXML ** `(srfi srfi-9 gnu)', extensions to the SRFI-9 record library ** `(system vm coverage)', a line-by-line code coverage library ** `(web ...)', modules for URI and HTTP handling ** `(ice-9 poll)', a poll wrapper ** `(system base lalr)', the `lalr-scm' LALR(1) parser generator ** `(statprof)', statistical profiler * New dependencies ** libgc 7.x, http://www.hpl.hp.com/personal/Hans_Boehm/gc/ ** GNU libunistring, http://www.gnu.org/software/libunistring/ ** libffi, http://sourceware.org/libffi/ Thanks, Ludo'.