[Top][All Lists]

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

[Guile-commits] 31/33: Merge from stable-2.2

From: Andy Wingo
Subject: [Guile-commits] 31/33: Merge from stable-2.2
Date: Fri, 2 Aug 2019 09:38:35 -0400 (EDT)

wingo pushed a commit to branch master
in repository guile.

commit 175acd700ccf8651c305ea592ef6e59cc955f7f5
Merge: 3869cdc 5f522e1
Author: Andy Wingo <address@hidden>
Date:   Fri Aug 2 15:35:39 2019 +0200

    Merge from stable-2.2

 NEWS                          | 24 ++++++++++++++++++++++++
 module/system/repl/server.scm |  2 +-
 2 files changed, 25 insertions(+), 1 deletion(-)

diff --cc NEWS
index 19b5be6,409d37f..4c60546
--- a/NEWS
+++ b/NEWS
@@@ -6,117 -6,30 +6,141 @@@ Please send Guile bug reports to bug-gu
 -Changes in 2.2.6 (since 2.2.5)
 +Changes in alpha 2.9.3 (since alpha 2.9.2):
 +* Notable changes
 +** Improved just-in-time machine code generation
 +Guile's JIT compiler emits better code for indirect procedure calls,
 +atomic instructions, numeric comparisons, procedure prologues,
 +well-known closures with no free variables, calls and returns, and
 +allocations.  Together these improvements can speed up some benchmarks
 +by up to 50%.
 +Changes in alpha 2.9.x (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'.  The default is `--enable-jit=auto', which enables the
 +JIT if it is available.  See `./configure --help' for more.
 +JIT compilation is enabled by default on x86-64, i686, ARMv7, and
 +AArch64 targets.
 +** 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
 +theory.  This facility was supported by an indirection in all "struct"
 +instances, even though only a subset of structs would need redefinition.
 +We wanted to remove this indirection, in order to speed up Guile
 +records, allow immutable Guile records to eventually be described by
 +classes, and allow for some optimizations in core GOOPS classes that
 +shouldn't be redefined anyway.
 +Thus in GOOPS now there are classes that are redefinable and classes
 +that aren't.  By default, classes created with GOOPS are not
 +redefinable.  To make a class redefinable, it should be an instance of
 +`<redefinable-class>'.  See "Redefining a Class" in the manual for more
 +* New deprecations
 +** scm_t_uint8, etc deprecated in favor of C99 stdint.h
 +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
 +** All deprecated code removed
 +All code deprecated in Guile 2.2 has been removed.  See older NEWS, and
 +check that your programs can compile without linker warnings and run
 +without runtime warnings.  See "Deprecation" in the manual.
 +In particular, the function `scm_generalized_vector_get_handle' which
 +was deprecated in 2.0.9 but remained in 2.2, has now finally been
 +removed. As a replacement, use `scm_array_get_handle' to get a handle
 +and `scm_array_handle_rank' to check the rank.
 +** Remove "self" field from vtables and "redefined" field from classes
 +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
 +The "effective version" of Guile is now 3.0, which allows parallel
 +installation with other effective versions (for example, the older Guile
 +2.2).  See "Parallel Installations" in the manual for full details.
 +Notably, the `pkg-config' file is now `guile-3.0'.
++Changes in 2.2.6 (since 2.2.5):
+ * Bug fixes
+ ** Fix regression introduced in 2.2.5 that would break HTTP servers
+ Guile 2.2.5 introduced a bug that would break the built-in HTTP server
+ provided by the (web server) module.  Specifically, HTTP servers would
+ hang while reading requests.  See <>.
+ ** 'strftime' and 'strptime' honor the current locale encoding
+ Until now these procedures would wrongfully assume that the locale
+ encoding is always UTF-8.  See <>.
+ ** Re-export 'current-load-port'
+ This procedure was erroneously removed in the 2.2 series but was still
+ documented.
+ ** Minor documentation mistakes were fixed
  Changes in 2.2.5 (since 2.2.4):
  * Notable improvements

reply via email to

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