prepare NEWS for 1.9.6
* NEWS: Prepare NEWS for 1.9.6.
This commit is contained in:
parent
9035e9d6db
commit
5bb408ccaf
1 changed files with 22 additions and 144 deletions
166
NEWS
166
NEWS
|
|
@ -8,150 +8,7 @@ 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.5 (since the 1.9.4 prerelease):
|
||||
|
||||
** Compiled procedures may now have more than one arity.
|
||||
|
||||
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.
|
||||
|
||||
** `case-lambda' is now available in the default environment.
|
||||
|
||||
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.
|
||||
|
||||
** VM calling convention change: callee-parsed arguments
|
||||
|
||||
As an internal implementation detail, compiled procedures are now
|
||||
responsible for parsing their own arguments, which they receive on the
|
||||
stack.
|
||||
|
||||
** VM support for multiple-arity dispatch
|
||||
|
||||
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.
|
||||
|
||||
** Intermediate language support for multiple-arity procedures.
|
||||
|
||||
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 :)
|
||||
|
||||
** `lambda*' and `define*' are now available in the default environment
|
||||
|
||||
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.
|
||||
|
||||
** Better support for Lisp `nil'.
|
||||
|
||||
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.
|
||||
|
||||
** No future.
|
||||
|
||||
Actually the future is still in the state that it was, is, and ever
|
||||
shall be, Amen, except that `futures.c' and `futures.h' are no longer a
|
||||
part of it. These files were experimental, never compiled, and would be
|
||||
better implemented in Scheme anyway. In the future, that is.
|
||||
|
||||
** Support for static allocation of strings, symbols, and subrs.
|
||||
|
||||
Calls to snarfing CPP macros like SCM_DEFINE macro will now allocate
|
||||
much of their associated data as static variables, reducing Guile's
|
||||
memory footprint.
|
||||
|
||||
** Inline vector allocation
|
||||
|
||||
Instead of having vectors point out into the heap for their data, their
|
||||
data is now allocated inline to the vector object itself. The same is
|
||||
true for bytevectors, by default, though there is an indirection
|
||||
available which should allow for making a bytevector from an existing
|
||||
memory region.
|
||||
|
||||
** New syntax: include-from-path.
|
||||
|
||||
`include-from-path' is like `include', except it looks for its file in
|
||||
the load path. It can be used to compile other files into a file.
|
||||
|
||||
** New syntax: quasisyntax.
|
||||
|
||||
`quasisyntax' is to `syntax' as `quasiquote' is to `quote'. See the R6RS
|
||||
documentation for more information. Thanks to Andre van Tonder for the
|
||||
implementation.
|
||||
|
||||
** Cleanups to Guile's primitive object system.
|
||||
|
||||
There were a number of pieces in `objects.[ch]' that tried to be a
|
||||
minimal object system, but were never documented, and were quickly
|
||||
obseleted by GOOPS' merge into Guile proper. So `scm_make_class_object',
|
||||
`scm_make_subclass_object', `scm_metaclass_standard', and like symbols
|
||||
from objects.h are no more. In the very unlikely case in which these
|
||||
were useful to you, we urge you to contact guile-devel.
|
||||
|
||||
** GOOPS cleanups.
|
||||
|
||||
GOOPS had a number of concepts that were relevant to the days of Tcl,
|
||||
but not any more: operators and entities, mainly. These objects were
|
||||
never documented, and it is unlikely that they were ever used. Operators
|
||||
were a kind of generic specific to the Tcl support. Entities were
|
||||
applicable structures, but were unusable; entities will come back in the
|
||||
next alpha release, but with a less stupid name.
|
||||
|
||||
** Faster bit operations.
|
||||
|
||||
The bit-twiddling operations `ash', `logand', `logior', and `logxor' now
|
||||
have dedicated bytecodes. Guile is not just for symbolic computation,
|
||||
it's for number crunching too.
|
||||
|
||||
** `inet-ntop' and `inet-pton' are always available.
|
||||
|
||||
Guile now use a portable implementation of `inet_pton'/`inet_ntop', so
|
||||
there is no more need to use `inet-aton'/`inet-ntoa'. The latter
|
||||
functions are deprecated.
|
||||
|
||||
** R6RS block comment support
|
||||
|
||||
Guile now supports R6RS nested block comments. The start of a comment is
|
||||
marked with `#|', and the end with `|#'.
|
||||
|
||||
** `guile-2' cond-expand feature
|
||||
|
||||
To test if your code is running under Guile 2.0 (or its alpha releases),
|
||||
test for the `guile-2' cond-expand feature. Like this:
|
||||
|
||||
(cond-expand (guile-2 (eval-when (compile)
|
||||
;; This must be evaluated at compile time.
|
||||
(fluid-set! current-reader my-reader)))
|
||||
(guile
|
||||
;; Earlier versions of Guile do not have a
|
||||
;; separate compilation phase.
|
||||
(fluid-set! current-reader my-reader)))
|
||||
|
||||
** ABI harmonization
|
||||
|
||||
`scm_search_path' now has the signature it did in 1.8, reverting an
|
||||
incompatible change made in 1.9.0.
|
||||
|
||||
** Compile-time warnings: -Warity-mismatch
|
||||
|
||||
Guile can warn when you pass the wrong number of arguments to a
|
||||
procedure. Pass the -Warity-mismatch on the `guile-tools compile'
|
||||
command line, or add `#:warnings '(arity-mismatch)' to your `compile'
|
||||
or `compile-file' invocation.
|
||||
|
||||
** Guile is now built without `-Werror' by default
|
||||
|
||||
Use the `--enable-error-on-warning' configure option to enable it.
|
||||
Changes in 1.9.6 (since the 1.9.5 prerelease):
|
||||
|
||||
** And of course, the usual collection of bugfixes
|
||||
|
||||
|
|
@ -637,6 +494,13 @@ 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.
|
||||
|
||||
** Compiled procedures may now have more than one arity.
|
||||
|
||||
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.
|
||||
|
||||
** `lambda*' and `define*' are now available in the default environment
|
||||
|
||||
As with `case-lambda', `(ice-9 optargs)' continues to be supported, for
|
||||
|
|
@ -772,6 +636,12 @@ Guile now use a portable implementation of `inet_pton'/`inet_ntop', so
|
|||
there is no more need to use `inet-aton'/`inet-ntoa'. The latter
|
||||
functions are deprecated.
|
||||
|
||||
** Fast bit operations.
|
||||
|
||||
The bit-twiddling operations `ash', `logand', `logior', and `logxor' now
|
||||
have dedicated bytecodes. Guile is not just for symbolic computation,
|
||||
it's for number crunching too.
|
||||
|
||||
** R6RS block comment support
|
||||
|
||||
Guile now supports R6RS nested block comments. The start of a comment is
|
||||
|
|
@ -886,6 +756,14 @@ shall be, Amen, except that `futures.c' and `futures.h' are no longer a
|
|||
part of it. These files were experimental, never compiled, and would be
|
||||
better implemented in Scheme anyway. In the future, that is.
|
||||
|
||||
** Better support for Lisp `nil'.
|
||||
|
||||
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.
|
||||
|
||||
** Support for static allocation of strings, symbols, and subrs.
|
||||
|
||||
Calls to snarfing CPP macros like SCM_DEFINE macro will now allocate
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue