[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 31/33: Merge from stable-2.2
[Guile-commits] 31/33: Merge from stable-2.2
Fri, 2 Aug 2019 09:38:35 -0400 (EDT)
wingo pushed a commit to branch master
in repository guile.
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
@@@ -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
+** 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 <https://bugs.gnu.org/36350>.
+ ** 'strftime' and 'strptime' honor the current locale encoding
+ Until now these procedures would wrongfully assume that the locale
+ encoding is always UTF-8. See <https://bugs.gnu.org/35920>.
+ ** Re-export 'current-load-port'
+ This procedure was erroneously removed in the 2.2 series but was still
+ ** Minor documentation mistakes were fixed
Changes in 2.2.5 (since 2.2.4):
* Notable improvements
- [Guile-commits] 20/33: Merge from stable-2.2, (continued)
- [Guile-commits] 20/33: Merge from stable-2.2, Andy Wingo, 2019/08/02
- [Guile-commits] 22/33: Merge from stable-2.2, Andy Wingo, 2019/08/02
- [Guile-commits] 17/33: Merge from stable-2.2, Andy Wingo, 2019/08/02
- [Guile-commits] 18/33: Revert scm_c_make_char rename, Andy Wingo, 2019/08/02
- [Guile-commits] 28/33: Merge from stable-2.2, Andy Wingo, 2019/08/02
- [Guile-commits] 11/33: Merge from stable-2.2, Andy Wingo, 2019/08/02
- [Guile-commits] 30/33: Merge from stable-2.2, Andy Wingo, 2019/08/02
- [Guile-commits] 21/33: Merge from stable-2.2, Andy Wingo, 2019/08/02
- [Guile-commits] 24/33: Merge from stable-2.2, Andy Wingo, 2019/08/02
- [Guile-commits] 29/33: Merge from stable-2.2, Andy Wingo, 2019/08/02
- [Guile-commits] 31/33: Merge from stable-2.2,
Andy Wingo <=
- [Guile-commits] 23/33: Merge from stable-2.2, Andy Wingo, 2019/08/02
- [Guile-commits] 26/33: Merge from stable-2.2, Andy Wingo, 2019/08/02
- [Guile-commits] 27/33: Merge from stable-2.2, Andy Wingo, 2019/08/02
- [Guile-commits] 32/33: Merge from stable-2.2, Andy Wingo, 2019/08/02
- [Guile-commits] 25/33: Merge from stable-2.2, Andy Wingo, 2019/08/02
- [Guile-commits] 33/33: Merge from stable-2.2, Andy Wingo, 2019/08/02