1
Fork 0
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.2.0.
This commit is contained in:
Andy Wingo 2017-03-14 11:26:49 +01:00
parent c50c3a47b3
commit bbc93ed910

127
NEWS
View file

@ -6,60 +6,7 @@ Please send Guile bug reports to bug-guile@gnu.org.
Changes in 2.1.8 (changes since the 2.1.7 alpha release):
* Notable changes
** Update to latest 2.0 changes
Notably this includes the fix for CVE-2016-8606 and the fix to make
Guile's builds reproducible.
** GUILE_PROGS searches for versioned Guile
The GUILE_PROGS autoconf macro can take a required version argument. As
a new change, that version argument is additionally searched for as a
suffix. For example, GUILE_PROGS(2.2) would look for guile-2.2,
guile2.2, guile-2, guile2, and then guile. The found prefix is also
applied to guild, guile-config, and the like. Thanks to Freja Nordsiek
for this work.
** Add thread-local fluids
Guile now has support for fluids whose values are not captured by
`current-dynamic-state' and not inheritied by child threads, and thus
are local to the kernel thread they run on. See "Thread-Local
Variables" in the manual, for more.
* Bug fixes
** Fix build errors on macOS
** Fix build errors on Cygwin
** Fix build errors with clang
** Fix statprof and gcprof stack narrowing
** Fix errors on platforms with 64 KB pages
** Fix make-polar signedness of zeros
** Fix backtraces in case-lambda with multiple cases
** Fix generic function dispatch with multiple arities
** Fix guild compile --to=cps
** Fix bogus strength reduction on (* -1 x)
** Fix type inference when multiplying flonum with complex
** Fix bug comparing real and complex numbers
** Improve memory use of read-string / get-string-all
** Allow contification within case-lambda
** Relax some constraints for circular module dependencies
** Fix scm_with_guile for threads already known to libgc
** Better errors for keyword arguments missing values (foo #:bar)
** Various manual updates
** Use docstrings instead of comments for many core Guile functions
** Support truncate-file on string ports
** Getting output from R6RS string ports now truncates buffer
** Fix class-allocated GOOPS slots
** Fix tracing/breakpoints (broken in 2.2 since a long time!)
** `select' just returns instead of throwing exception on EINTR
Previous changes in 2.1.x (changes since the 2.0.x series):
Changes in 2.2.0 (changes since the 2.0.x stable release series):
* Notable changes
@ -75,6 +22,8 @@ better memory usage, and faster execution of user code. See the
This new release series takes the ABI-break opportunity to fix some
interfaces that were difficult to use correctly from multiple threads.
Notably, weak hash tables and ports are now transparently thread-safe.
See "Scheduling" in the manual, for updated documentation on threads and
communications primitives.
** Better space-safety
@ -106,14 +55,14 @@ hash-bang line (e.g. "#!/usr/bin/guile"), it now installs the current
locale via a call to `(setlocale LC_ALL "")'. For users with a unicode
locale, this makes all ports unicode-capable by default, without the
need to call `setlocale' in your program. This behavior may be
controlled via the GUILE_INSTALL_LOCALE environment variable; see the
manual for more.
controlled via the GUILE_INSTALL_LOCALE environment variable; see
"Environment Variables" in the manual, for more.
** Complete Emacs-compatible Elisp implementation
Thanks to the work of BT Templeton, Guile's Elisp implementation is now
fully Emacs-compatible, implementing all of Elisp's features and quirks
in the same way as the editor we know and love.
Thanks to the work of Robin Templeton, Guile's Elisp implementation is
now fully Emacs-compatible, implementing all of Elisp's features and
quirks in the same way as the editor we know and love.
** Dynamically expandable stacks
@ -169,14 +118,14 @@ interface, at least for `stdint' support.
** Lightweight pre-emptive threading primitives
The compiler now inserts special "handle-interrupts" opcodes before each
call, return, and loop back-edge. This allows the user to interrupt any
computation and to accurately profile code using interrupts. It used to
be that interrupts were run by calling a C function from the VM; now
interrupt thunks are run directly from the VM. This allows interrupts
to save a delimited continuation and, if the continuation was
established from the same VM invocation (the usual restriction), that
continuation can then be resumed. In this way users can implement
lightweight pre-emptive threading facilities.
call, return, and backwards jump target. This allows the user to
interrupt any computation and to accurately profile code using
interrupts. It used to be that interrupts were run by calling a C
function from the VM; now interrupt thunks are run directly from the VM.
This allows interrupts to save a delimited continuation and, if the
continuation was established from the same VM invocation (the usual
restriction), that continuation can then be resumed. In this way users
can implement lightweight pre-emptive threading facilities.
** with-dynamic-state in VM
@ -184,11 +133,7 @@ Similarly, `with-dynamic-state' no longer recurses out of the VM,
allowing captured delimited continuations that include a
`with-dynamic-state' invocation to be resumed. This is a precondition
to allow lightweight threading libraries to establish a dynamic state
per thread.
** cancel-thread uses asynchronous interrupts, not pthread_cancel
See "Asyncs" in the manual, for more on asynchronous interrupts.
per lightweight fiber.
* Performance improvements
@ -289,11 +234,6 @@ Since the compiler was rewritten, there are new modules for the back-end
of the compiler and the low-level loader and introspection interfaces.
See the "Guile Implementation" chapter in the manual for all details.
** New functions: `scm_to_intptr_t', `scm_from_intptr_t'
** New functions: `scm_to_uintptr_t', `scm_from_uintptr_t'
See "Integers" in the manual, for more.
** Add "tree" display mode for statprof.
See the newly updated "Statprof" section of the manual, for more.
@ -322,6 +262,13 @@ and Communication" in the manual, for more.
See "Atomics" in the manual.
** Thread-local fluids
Guile now has support for fluids whose values are not captured by
`current-dynamic-state' and not inheritied by child threads, and thus
are local to the kernel thread they run on. See "Thread-Local
Variables" in the manual, for more.
** suspendable-continuation?
This predicate returns true if the delimited continuation captured by
@ -331,7 +278,7 @@ Primitives" in the manual for more.
** scm_c_prepare_to_wait_on_fd, scm_c_prepare_to_wait_on_cond,
** scm_c_wait_finished
See "Interrupts" in the manual for more.
See "Asyncs" in the manual for more.
** File descriptor finalizers
@ -361,12 +308,13 @@ section of the manual, for more.
** <standard-vtable>, standard-vtable-fields
See "Structures" in the manual for more on these
See "Structures" in the manual for more on these.
** Convenience utilities for ports and strings.
See XXX for more on `scm_from_port_string', `scm_from_port_stringn',
`scm_to_port_string', and `scm_to_port_stringn'.
See "Conversion to/from C" for more on `scm_from_port_string',
`scm_from_port_stringn', `scm_to_port_string', and
`scm_to_port_stringn'.
** New expressive PEG parser
@ -520,6 +468,10 @@ break, however; we used the deprecation facility to signal a warning
message while also providing these bindings in the root environment for
the duration of the 2.2 series.
** cancel-thread uses asynchronous interrupts, not pthread_cancel
See "Asyncs" in the manual, for more on asynchronous interrupts.
** SRFI-18 threads, mutexes, cond vars disjoint from Guile
When we added support for the SRFI-18 threading library in Guile 2.0, we
@ -962,10 +914,6 @@ that Guile can bootstrap itself from its minimal bootstrap C
interpreter. If you do not want to depend on these pre-built binaries,
you can "make -C prebuilt clean" before building.
If Guile doesn't pre-build binaries for your architecture and you would
like support for your architecture, see prebuilt/Makefile.am for more
information on how to add support.
** New minor version
The "effective version" of Guile is now 2.2, which allows parallel
@ -975,6 +923,15 @@ Notably, the `pkg-config' file is now `guile-2.2'.
** Bump required libgc version to 7.2, released March 2012.
** GUILE_PROGS searches for versioned Guile
The GUILE_PROGS autoconf macro can take a required version argument. As
a new change, that version argument is additionally searched for as a
suffix. For example, GUILE_PROGS(2.2) would look for guile-2.2,
guile2.2, guile-2, guile2, and then guile. The found prefix is also
applied to guild, guile-config, and the like. Thanks to Freja Nordsiek
for this work.
** The readline extension is now installed in the extensionsdir
The shared library that implements Guile's readline extension is no