[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 01/01: Update NEWS

From: Andy Wingo
Subject: [Guile-commits] 01/01: Update NEWS
Date: Sun, 7 Oct 2018 09:02:31 -0400 (EDT)

wingo pushed a commit to branch master
in repository guile.

commit d08f2c116660db32e4e631b9852b257f92acba11
Author: Andy Wingo <address@hidden>
Date:   Sun Oct 7 15:02:08 2018 +0200

    Update NEWS
    * NEWS: Update.
 NEWS | 49 ++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 44 insertions(+), 5 deletions(-)

diff --git a/NEWS b/NEWS
index ea0f99f..9fb31b6 100644
--- a/NEWS
+++ b/NEWS
@@ -6,10 +6,38 @@ Please send Guile bug reports to address@hidden
-Changes in alpha 2.3.0 (since the stable 2.2 series):
+Changes in alpha 2.3.1 (since the stable 2.2 series):
 * Notable changes
+** Just-in-time code generation
+Guile programs now run up to 4 times faster, relative to Guile 2.2,
+thanks to just-in-time (JIT) native code generation.  Notably, this
+brings the performance of "eval" as written in Scheme back to the level
+of "eval" written in C, as in the days of Guile 1.8.
+See "Just-In-Time Native Code" in the manual, for more information.  JIT
+compilation will be enabled automatically and transparently.  To disable
+JIT compilation, configure Guile with `--enable-jit=no' or
+`--disable-jit'.  See `./configure --help' for more.
+Guile uses an embedded copy of GNU lightning, providing support for JIT
+on about a dozen platforms.
+** Lower-level bytecode
+Relative to the virtual machine in Guile 2.2, Guile's VM instruction set
+is now more low-level.  This allows it to express more advanced
+optimizations, for example type check elision or integer
+devirtualization, and makes the task of JIT code generation easier.
+Note that this change can mean that for a given function, the
+corresponding number of instructions in Guile 3.0 may be higher than
+Guile 2.2, which can lead to slowdowns when the function is interpreted.
+We hope that JIT compilation more than makes up for this slight
 ** By default, GOOPS classes are not redefinable
 It used to be that all GOOPS classes were redefinable, at least in
@@ -26,13 +54,18 @@ redefinable.  To make a class redefinable, it should be an 
instance of
 `<redefinable-class>'.  See "Redefining a Class" in the manual for more
-* New interfaces
 * New deprecations
-* Bug fixes
+** scm_t_uint8, etc deprecated in favor of C99 stdint.h
-* Performance improvements
+It used to be that Guile defined its own `scm_t_uint8' because C99
+`uint8_t' wasn't widely enough available.  Now Guile finally made the
+change to use C99 types, both internally and in Guile's public headers.
+Note that this also applies to SCM_T_UINT8_MAX, SCM_T_INT8_MIN, for intN
+and uintN for N in 8, 16, 32, and 64.  Guile also now uses ptrdiff_t
+instead of scm_t_ptrdiff, and similarly for intmax_t, uintmax_t,
+intptr_t, and uintptr_t.
 * Incompatible changes
@@ -52,6 +85,12 @@ and `scm_array_handle_rank' to check the rank.
 These fields were used as part of the machinery for class redefinition
 and is no longer needed.
+** VM hook manipulation simplified
+The low-level mechanism to instrument a running virtual machine for
+debugging and tracing has been simplified.  See "VM Hooks" in the
+manual, for more.
 * Changes to the distribution
 ** New effective version

reply via email to

[Prev in Thread] Current Thread [Next in Thread]