mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 11:40:18 +02:00
update NEWS
* NEWS: Update for 2.0.2.
This commit is contained in:
parent
7b0a2576c1
commit
e4a2807eee
1 changed files with 156 additions and 0 deletions
156
NEWS
156
NEWS
|
@ -5,6 +5,162 @@ See the end for copying conditions.
|
||||||
Please send Guile bug reports to bug-guile@gnu.org.
|
Please send Guile bug reports to bug-guile@gnu.org.
|
||||||
|
|
||||||
|
|
||||||
|
Changes in 2.0.2 (since 2.0.1):
|
||||||
|
|
||||||
|
* Notable changes
|
||||||
|
|
||||||
|
** New control operators: `shift' and `reset'
|
||||||
|
|
||||||
|
See "Shift and Reset" in the manual, for more information.
|
||||||
|
|
||||||
|
** `while' as an expression
|
||||||
|
|
||||||
|
Previously the return value of `while' was unspecified. Now its
|
||||||
|
values are specified both in the case of normal termination, and via
|
||||||
|
termination by invoking `break', possibly with arguments. See "while
|
||||||
|
do" in the manual for more.
|
||||||
|
|
||||||
|
** Disallow access to handles of weak hash tables
|
||||||
|
|
||||||
|
`hash-get-handle' and `hash-create-handle!' are no longer permitted to
|
||||||
|
be called on weak hash tables, because the fields in a weak handle could
|
||||||
|
be nulled out by the garbage collector at any time, but yet they are
|
||||||
|
otherwise indistinguishable from pairs. Use `hash-ref' and `hash-set!'
|
||||||
|
instead.
|
||||||
|
|
||||||
|
** More precision for `get-internal-run-time', `get-internal-real-time'
|
||||||
|
|
||||||
|
On 64-bit systems which support POSIX clocks, Guile's internal timing
|
||||||
|
procedures offer nanosecond resolution instead of the 10-millisecond
|
||||||
|
resolution previously available. 32-bit systems now use 1-millisecond
|
||||||
|
timers.
|
||||||
|
|
||||||
|
** Guile now measures time spent in GC
|
||||||
|
|
||||||
|
`gc-stats' now returns a meaningful value for `gc-time-taken'.
|
||||||
|
|
||||||
|
** Add `gcprof'
|
||||||
|
|
||||||
|
The statprof profiler now exports a `gcprof' procedure, driven by the
|
||||||
|
`after-gc-hook', to see which parts of your program are causing GC. Let
|
||||||
|
us know if you find it useful.
|
||||||
|
|
||||||
|
** `map', `for-each' and some others now implemented in Scheme
|
||||||
|
|
||||||
|
We would not mention this in NEWS, as it is not a user-visible change,
|
||||||
|
if it were not for one thing: `map' and `for-each' are no longer
|
||||||
|
primitive generics. Instead they are normal bindings, which can be
|
||||||
|
wrapped by normal generics. This fixes some modularity issues between
|
||||||
|
core `map', SRFI-1 `map', and GOOPS.
|
||||||
|
|
||||||
|
Also it's pretty cool that we can do this without a performance impact.
|
||||||
|
|
||||||
|
** Add `scm_peek_byte_or_eof'.
|
||||||
|
|
||||||
|
This helper is like `scm_peek_char_or_eof', but for bytes instead of
|
||||||
|
full characters.
|
||||||
|
|
||||||
|
** Implement #:stop-at-first-non-option option for getopt-long
|
||||||
|
|
||||||
|
See "getopt-long Reference" in the manual, for more information.
|
||||||
|
|
||||||
|
** Improve R6RS conformance for conditions in the I/O libraries
|
||||||
|
|
||||||
|
The `(rnrs io simple)' module now raises the correct R6RS conditions in
|
||||||
|
error cases. `(rnrs io ports)' is also more correct now, though it is
|
||||||
|
still a work in progress.
|
||||||
|
|
||||||
|
** All deprecated routines emit warnings
|
||||||
|
|
||||||
|
A few deprecated routines were lacking deprecation warnings. This has
|
||||||
|
been fixed now.
|
||||||
|
|
||||||
|
* Speed improvements
|
||||||
|
|
||||||
|
** Constants in compiled code now share state better
|
||||||
|
|
||||||
|
Constants with shared state, like `("foo")' and `"foo"', now share state
|
||||||
|
as much as possible, in the entire compilation unit. This cuts compiled
|
||||||
|
`.go' file sizes in half, generally, and speeds startup.
|
||||||
|
|
||||||
|
** VLists: optimize `vlist-fold-right', and add `vhash-fold-right'
|
||||||
|
|
||||||
|
These procedures are now twice as fast as they were.
|
||||||
|
|
||||||
|
** UTF-8 ports to bypass `iconv' entirely
|
||||||
|
|
||||||
|
This reduces memory usage in a very common case.
|
||||||
|
|
||||||
|
** Compiler speedups
|
||||||
|
|
||||||
|
The compiler is now about 40% faster. (Note that this is only the case
|
||||||
|
once the compiler is itself compiled, so the build still takes as long
|
||||||
|
as it did before.)
|
||||||
|
|
||||||
|
** VM speed tuning
|
||||||
|
|
||||||
|
Some assertions that were mostly useful for sanity-checks on the
|
||||||
|
bytecode compiler are now off for both "regular" and "debug" engines.
|
||||||
|
This together with a fix to cache a TLS access and some other tweaks
|
||||||
|
improve the VM's performance by about 20%.
|
||||||
|
|
||||||
|
** SRFI-1 list-set optimizations
|
||||||
|
|
||||||
|
lset-adjoin and lset-union now have fast paths for eq? sets.
|
||||||
|
|
||||||
|
** `memq', `memv' optimizations
|
||||||
|
|
||||||
|
These procedures are now at least twice as fast than in 2.0.1.
|
||||||
|
|
||||||
|
* Deprecations
|
||||||
|
|
||||||
|
** Deprecate scm_whash API
|
||||||
|
|
||||||
|
`scm_whash_get_handle', `SCM_WHASHFOUNDP', `SCM_WHASHREF',
|
||||||
|
`SCM_WHASHSET', `scm_whash_create_handle', `scm_whash_lookup', and
|
||||||
|
`scm_whash_insert' are now deprecated. Use the normal hash table API
|
||||||
|
instead.
|
||||||
|
|
||||||
|
** Deprecate scm_struct_table
|
||||||
|
|
||||||
|
`SCM_STRUCT_TABLE_NAME', `SCM_SET_STRUCT_TABLE_NAME',
|
||||||
|
`SCM_STRUCT_TABLE_CLASS', `SCM_SET_STRUCT_TABLE_CLASS',
|
||||||
|
`scm_struct_table', and `scm_struct_create_handle' are now deprecated.
|
||||||
|
These routines formed part of the internals of the map between structs
|
||||||
|
and classes.
|
||||||
|
|
||||||
|
** Deprecate scm_internal_dynamic_wind
|
||||||
|
|
||||||
|
The `scm_t_inner' type and `scm_internal_dynamic_wind' are deprecated,
|
||||||
|
as the `scm_dynwind' API is better, and this API encourages users to
|
||||||
|
stuff SCM values into pointers.
|
||||||
|
|
||||||
|
** Deprecate scm_immutable_cell, scm_immutable_double_cell
|
||||||
|
|
||||||
|
These routines are deprecated, as the GC_STUBBORN API doesn't do
|
||||||
|
anything any more.
|
||||||
|
|
||||||
|
* Manual updates
|
||||||
|
|
||||||
|
Andreas Rottman kindly transcribed the missing parts of the `(rnrs io
|
||||||
|
ports)' documentation from the R6RS documentation. Thanks Andreas!
|
||||||
|
|
||||||
|
* Bugs fixed
|
||||||
|
|
||||||
|
** Fix double-loading of script in -ds case
|
||||||
|
** -x error message fix
|
||||||
|
** iconveh-related cross-compilation fixes
|
||||||
|
** Fix small integer return value packing on big endian machines.
|
||||||
|
** Fix hash-set! in weak-value table from non-immediate to immediate
|
||||||
|
** Fix call-with-input-file & relatives for multiple values
|
||||||
|
** Fix `hash' for inf and nan
|
||||||
|
** Fix libguile internal type errors caught by typing-strictness==2
|
||||||
|
** Fix compile error in mingw fstat socket detection
|
||||||
|
** Fix multithreaded access to internal hash tables
|
||||||
|
** Emit a 1-based line number in error messages
|
||||||
|
** Fix define-module ordering
|
||||||
|
|
||||||
|
|
||||||
Changes in 2.0.1 (since 2.0.0):
|
Changes in 2.0.1 (since 2.0.0):
|
||||||
|
|
||||||
* Notable changes
|
* Notable changes
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue