From 6cf430473a3e9698a57649c9bd3f682f05f9e809 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Tue, 17 Nov 2009 21:51:56 +0100 Subject: [PATCH] Update NEWS. * NEWS: Update for 1.9.5. Still needs these entries to be folded into the main section though. --- NEWS | 167 +++++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 127 insertions(+), 40 deletions(-) diff --git a/NEWS b/NEWS index a9a7adf24..75d198724 100644 --- a/NEWS +++ b/NEWS @@ -8,63 +8,146 @@ Please send Guile bug reports to bug-guile@gnu.org. (During the 1.9 series, we will keep an incremental NEWS for the latest prerelease, and a full NEWS corresponding to 1.8 -> 2.0.) -Changes in 1.9.4 (since the 1.9.3 prerelease): +Changes in 1.9.5 (since the 1.9.4 prerelease): -** Guile now adds its install prefix to the LTDL_LIBRARY_PATH +** Compiled procedures may now have more than one arity. -Users may now install Guile to nonstandard prefixes and just run -`/path/to/bin/guile', instead of also having to set LTDL_LIBRARY_PATH to -include `/path/to/lib'. +This can be the case, for example, in case-lambda procedures. The +arities of compiled procedures may be accessed via procedures from the +`(system vm program)' module; see "Compiled Procedures", "Optional +Arguments", and "Case-lambda" in the manual. -** Dynamically loadable extensions may be placed in a Guile-specific path +** `case-lambda' is now available in the default environment. -Before, Guile only searched the system library paths for extensions -(e.g. /usr/lib), which meant that the names of Guile extensions had to -be globally unique. Installing them to a Guile-specific extensions -directory is cleaner. Use `pkg-config --variable=extensionsdir -guile-2.0' to get the location of the extensions directory. +The binding in the default environment is equivalent to the one from the +`(srfi srfi-16)' module. Use the srfi-16 module explicitly if you wish +to maintain compatibility with Guile 1.8 and earlier. -** The programmatic `compile' procedure compiles its expression in a - fresh module, by default +** VM calling convention change: callee-parsed arguments -This should make the results of `compile' more predictable. Users may -specify a specific module in which to compile via the `#:env' keyword -argument to `compile' (and `compile-file'). +As an internal implementation detail, compiled procedures are now +responsible for parsing their own arguments, which they receive on the +stack. -** `compile-file' preserves expansion-time side-effects to `current-reader' +** VM support for multiple-arity dispatch -User modules may now modify the `current-reader' fluid at expansion -time, usually within an eval-when, and those modifications will remain -in place when compiling subsequent forms in the file. +Calls to procedures with multiple arities, for example those made be +`case-lambda', now dispatch via special opcodes, without the need to +cons a rest list. -See "The Scheme Compiler" in the Guile manual for more details. +** Intermediate language support for multiple-arity procedures. -** Guile's Emacs integration is now more keyboard-friendly +In the intermediate language, tree-il, all procedures may have one or +more arities. This allows all Guile languages to have multiple arities. +It is, however, an incompatible change, and anyone maintaining a +compiler out-of-tree would be advised to get it into Guile soon :) -Backtraces may now be disclosed with the keyboard in addition to the -mouse. +** `lambda*' and `define*' are now available in the default environment -** Compile-time warnings: -Wunbound-variable +As with `case-lambda', `(ice-9 optargs)' continues to be supported, for +compatibility purposes. No semantic change has been made (we hope). +Optional and keyword arguments now dispatch via special VM operations, +without the need to cons rest arguments, making them very fast. -Guile can warn about potentially unbound free variables. Pass the --Wunbound-variable on the `guile-tools compile' command line, or add -`#:warnings '(unbound-variable)' to your `compile' or `compile-file' -invocation. +** Better support for Lisp `nil'. -** Wide character/string support in locale-specific character/string - functions +The bit representation of `nil' has been tweaked so that it is now very +efficient to check e.g. if a value is equal to Scheme's end-of-list or +Lisp's nil. Additionally there are a heap of new, specific predicates +like scm_is_null_or_nil. Probably in the future we will #define +scm_is_null to scm_is_null_or_nil. -The `(ice-9 i18n)' functions (`string-locale