mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 03:40:34 +02:00
pre-prepare NEWS
* NEWS: Integrate 1.9.10 entries into the main text.
This commit is contained in:
parent
43d6eb75f3
commit
139fa149a8
1 changed files with 62 additions and 92 deletions
154
NEWS
154
NEWS
|
@ -8,83 +8,8 @@ Please send Guile bug reports to bug-guile@gnu.org.
|
||||||
(During the 1.9 series, we will keep an incremental NEWS for the latest
|
(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.)
|
prerelease, and a full NEWS corresponding to 1.8 -> 2.0.)
|
||||||
|
|
||||||
Changes in 1.9.10 (since the 1.9.9 prerelease):
|
Changes in 1.9.11 (since the 1.9.10 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. See "Nil" in the manual, for more details.
|
|
||||||
|
|
||||||
** 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
|
** And of course, the usual collection of bugfixes
|
||||||
|
|
||||||
Interested users should see the ChangeLog for more information.
|
Interested users should see the ChangeLog for more information.
|
||||||
|
@ -109,6 +34,12 @@ The statprof statistical profiler, the SSAX XML toolkit, and the texinfo
|
||||||
toolkit from Guile-Lib have been imported into Guile proper. See
|
toolkit from Guile-Lib have been imported into Guile proper. See
|
||||||
"Standard Library" in the manual for more details.
|
"Standard Library" in the manual for more details.
|
||||||
|
|
||||||
|
** 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.
|
||||||
|
|
||||||
* Changes to the stand-alone interpreter
|
* Changes to the stand-alone interpreter
|
||||||
|
|
||||||
** Guile now can compile Scheme to bytecode for a custom virtual machine.
|
** Guile now can compile Scheme to bytecode for a custom virtual machine.
|
||||||
|
@ -185,6 +116,10 @@ allows Guile's copy of SSAX to override any Guile-Lib copy the user has
|
||||||
installed. Also it should cut the number of `stat' system calls by half,
|
installed. Also it should cut the number of `stat' system calls by half,
|
||||||
in the common case.
|
in the common case.
|
||||||
|
|
||||||
|
** 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.
|
||||||
|
|
||||||
* Changes to Scheme functions and syntax
|
* Changes to Scheme functions and syntax
|
||||||
|
|
||||||
|
@ -230,8 +165,7 @@ If you think you need `local-eval', you should probably implement your
|
||||||
own metacircular evaluator. It will probably be as fast as Guile's
|
own metacircular evaluator. It will probably be as fast as Guile's
|
||||||
anyway.
|
anyway.
|
||||||
|
|
||||||
** Files loaded with `primitive-load-path' will now be compiled
|
** Scheme source files will now be compiled automatically.
|
||||||
automatically.
|
|
||||||
|
|
||||||
If a compiled .go file corresponding to a .scm file is not found or is
|
If a compiled .go file corresponding to a .scm file is not found or is
|
||||||
not fresh, the .scm file will be compiled on the fly, and the resulting
|
not fresh, the .scm file will be compiled on the fly, and the resulting
|
||||||
|
@ -249,20 +183,6 @@ will be created if needed.
|
||||||
To inhibit autocompilation, set the GUILE_AUTO_COMPILE environment
|
To inhibit autocompilation, set the GUILE_AUTO_COMPILE environment
|
||||||
variable to 0, or pass --no-autocompile on the Guile command line.
|
variable to 0, or pass --no-autocompile on the Guile command line.
|
||||||
|
|
||||||
** Files loaded with `load' will now be compiled automatically.
|
|
||||||
|
|
||||||
As with files loaded via `primitive-load-path', `load' will also compile
|
|
||||||
its target if autocompilation is enabled, and a fresh compiled file is
|
|
||||||
not found.
|
|
||||||
|
|
||||||
There are two points of difference to note, however. First, `load' does
|
|
||||||
not search `GUILE_LOAD_COMPILED_PATH' for the file; it only looks in the
|
|
||||||
autocompilation directory, normally a subdirectory of ~/.cache/guile.
|
|
||||||
|
|
||||||
Secondly, autocompilation also applies to files loaded via the -l
|
|
||||||
command-line argument -- so the user may experience a slight slowdown
|
|
||||||
the first time they run a Guile script, as the script is autocompiled.
|
|
||||||
|
|
||||||
** New POSIX procedures: `getrlimit' and `setrlimit'
|
** New POSIX procedures: `getrlimit' and `setrlimit'
|
||||||
|
|
||||||
Note however that the interface of these functions is likely to change
|
Note however that the interface of these functions is likely to change
|
||||||
|
@ -324,6 +244,14 @@ Guile now has an experimental Emacs Lisp compiler and runtime. You can
|
||||||
now switch to Elisp at the repl: `,language elisp'. All kudos to Daniel
|
now switch to Elisp at the repl: `,language elisp'. All kudos to Daniel
|
||||||
Kraft, and all bugs to bug-guile@gnu.org.
|
Kraft, and all bugs to bug-guile@gnu.org.
|
||||||
|
|
||||||
|
** 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.
|
||||||
|
|
||||||
** Defmacros may now have docstrings.
|
** Defmacros may now have docstrings.
|
||||||
|
|
||||||
Indeed, any macro may have a docstring. `object-documentation' from
|
Indeed, any macro may have a docstring. `object-documentation' from
|
||||||
|
@ -331,6 +259,32 @@ Indeed, any macro may have a docstring. `object-documentation' from
|
||||||
have a macro value -- but see the above note about first-class macros.
|
have a macro value -- but see the above note about first-class macros.
|
||||||
Docstrings are associated with the syntax transformer procedures.
|
Docstrings are associated with the syntax transformer procedures.
|
||||||
|
|
||||||
|
** 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.
|
||||||
|
|
||||||
** The psyntax expander now knows how to interpret the @ and @@ special
|
** The psyntax expander now knows how to interpret the @ and @@ special
|
||||||
forms.
|
forms.
|
||||||
|
|
||||||
|
@ -594,6 +548,12 @@ been removed, along with `defmacro-transformer', `macro-table',
|
||||||
any of these procedures provided useful facilities to you, we encourage
|
any of these procedures provided useful facilities to you, we encourage
|
||||||
you to contact the Guile developers.
|
you to contact the Guile developers.
|
||||||
|
|
||||||
|
** 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.
|
||||||
|
|
||||||
** psyntax is now the default expander
|
** psyntax is now the default expander
|
||||||
|
|
||||||
Scheme code is now expanded by default by the psyntax hygienic macro
|
Scheme code is now expanded by default by the psyntax hygienic macro
|
||||||
|
@ -1195,6 +1155,16 @@ 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
|
Lisp's nil. Additionally there are a heap of new, specific predicates
|
||||||
like scm_is_null_or_nil.
|
like scm_is_null_or_nil.
|
||||||
|
|
||||||
|
** 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. See "Nil" in the manual, for more details.
|
||||||
|
|
||||||
** Support for static allocation of strings, symbols, and subrs.
|
** Support for static allocation of strings, symbols, and subrs.
|
||||||
|
|
||||||
Calls to snarfing CPP macros like SCM_DEFINE macro will now allocate
|
Calls to snarfing CPP macros like SCM_DEFINE macro will now allocate
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue