1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00

update NEWS for 1.9.10

* NEWS: Update for new 1.9.10 entries.
This commit is contained in:
Andy Wingo 2010-04-07 00:26:48 +02:00
parent 4d75554d0a
commit f5318d8b18

77
NEWS
View file

@ -10,6 +10,83 @@ prerelease, and a full NEWS corresponding to 1.8 -> 2.0.)
Changes in 1.9.10 (since the 1.9.9 prerelease):
** Hygienic macros documented as the primary syntactic extension mechanism.
The macro documentation was finally fleshed out with some documentation
on `syntax-case' macros, and other parts of the macro expansion process.
See "Macros" in the manual, for details.
** Interactive Guile follows GNU conventions
As recommended by the GPL, Guile now shows a brief copyright and
warranty disclaimer on startup, along with pointers to more information.
On the other hand, changing languages is more concise.
** Support for arbitrary procedure metadata
Building on its support for docstrings, Guile now supports multiple
docstrings, adding them to the tail of a compiled procedure's
properties. For example:
(define (foo)
"one"
"two"
3)
(use-modules (system vm program))
(program-properties foo)
=> ((name . foo) (documentation . "one") (documentation . "two"))
Also, vectors of pairs are now treated as additional metadata entries:
(define (bar)
#((quz . #f) (docstring . "xyzzy"))
3)
(use-modules (system vm program))
(program-properties bar)
=> ((name . bar) (quz . #f) (docstring . "xyzzy"))
This allows arbitrary literals to be embedded as metadata in a compiled
procedure.
** Better documentation infrastructure for macros
It is now possible to introspect on the type of a macro, e.g.
syntax-rules, identifier-syntax, etc, and extract information about that
macro, such as the syntax-rules patterns or the defmacro arguments.
`(texinfo reflection)' takes advantage of this to give better macro
documentation.
** Autocompilation for applications that use Guile as an extension language
It used to be that only applications that ran Guile through the
`scm_shell' function got the advantages of autocompilation. This has
been changed so that all applications have autocompilation on by
default.
** Better integration of Lisp nil
`scm_is_boolean', `scm_is_false', and `scm_is_null' all return true now
for Lisp's `nil'. This shouldn't affect any Scheme code at this point,
but when we start to integrate more with Emacs, it is possible that we
break code that assumes that, for example, `(not x)' implies that `x' is
`eq?' to `#f'. This is not a common assumption. Refactoring affected
code to rely on properties instead of identities will improve code
correctness.
That is to say, user code should test falsity with `if', not with `eq?'.
** Integration of lalr-scm, a parser generator
Guile has included Dominique Boucher's fine `lalr-scm' parser generator
as `(system base lalr)'. See "LALR(1) Parsing" in the manual, for more
information.
** Documentation for the dynamic foreign function interface (FFI).
See "Foreign Function Interface" in the manual, for more information.
** Unicode character set update to Unicode 5.2.
** And of course, the usual collection of bugfixes
Interested users should see the ChangeLog for more information.