From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Andy Wingo Newsgroups: gmane.lisp.guile.devel,gmane.lisp.guile.sources Subject: GNU Guile 2.9.3 Released [beta] Date: Sat, 03 Aug 2019 13:21:06 +0200 Message-ID: <87h86yv6jh.fsf@pobox.com> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="182674"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux) Cc: guile-sources@gnu.org, guile-devel@gnu.org To: guile-users@gnu.org Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Sat Aug 03 13:22:27 2019 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1hts7G-000lLn-Jc for guile-devel@m.gmane.org; Sat, 03 Aug 2019 13:22:26 +0200 Original-Received: from localhost ([::1]:39382 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hts7F-0006h3-Lt for guile-devel@m.gmane.org; Sat, 03 Aug 2019 07:22:25 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:45103) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hts6L-0006fg-BA for guile-devel@gnu.org; Sat, 03 Aug 2019 07:21:31 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hts6J-0007yg-BE for guile-devel@gnu.org; Sat, 03 Aug 2019 07:21:29 -0400 Original-Received: from fanzine.igalia.com ([91.117.99.155]:52996) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hts6I-0007xX-Ok; Sat, 03 Aug 2019 07:21:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Type:MIME-Version:Message-ID:Date:Subject:Cc:To:From; bh=BbNrnQ4JnO+tB5P4MtCakD4VwNaSNQf5pcxHJmUC45Y=; b=lkJvsl8Z6KlXdCPysRcpI0QAQUdCKezEHKac26JVjDkFluCnsltbt08SJ3bdrfG+9G4/MiT5WZSN1yNc9GqUBYxpDwhg6gUnTgSZnuolsiSolywEK1TAEdwylD+Q7m1N8LSaFnuxzOAz+5HE3Zpz0Izd/iwjnLUzh0Cawzv6VBXZFLLeVch0ORCj9Y/htZmhggzf1hVa8xg50oM2ch5Jr1DmAvhLW8Gr8S/GXkELfpND+qi0UpO4lhTjfMf5M7yzSbM8OszXIp/fkxeMTkVCspqqXL8aVP50BL5CX8sxfvwaZtn8y3LFUkw8YytOPpP+pnS9h0Z6LwJfXsSEIBzphw==; Original-Received: from cha74-2-88-160-189-213.fbx.proxad.net ([88.160.189.213] helo=sparrow) by fanzine.igalia.com with esmtpsa (Cipher TLS1.0:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim) id 1hts6G-0003gn-SS; Sat, 03 Aug 2019 13:21:25 +0200 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] [fuzzy] X-Received-From: 91.117.99.155 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Original-Sender: "guile-devel" Xref: news.gmane.org gmane.lisp.guile.devel:20027 gmane.lisp.guile.sources:507 Archived-At: We are pleased to announce GNU Guile release 2.9.3. This is the third pre-release of what will eventually become the 3.0 release series. Compared to the current stable series (2.2.x), the future Guile 3.0 adds support for just-in-time native code generation, speeding up all Guile programs. See the NEWS extract at the end of the mail for full details. Compared to the previous prerelease (2.9.2), Guile 2.9.3 improves the quality of generated machine code, speeding up some programs by up to 50%. We encourage you to test this release and provide feedback to guile-devel@gnu.org, and to file bugs by sending mail to bug-guile@gnu.org. The Guile web page is located at http://gnu.org/software/guile/, and among other things, it contains a copy of the Guile manual and pointers to more resources. Guile is an implementation of the Scheme programming language, with support for many SRFIs, packaged for use in a wide variety of environments. In addition to implementing the R5RS Scheme standard, Guile includes a module system, full access to POSIX system calls, networking support, multiple threads, dynamic linking, a foreign function call interface, and powerful string processing. Guile can run interactively, as a script interpreter, and as a Scheme compiler to VM bytecode. It is also packaged as a library so that applications can easily incorporate a complete Scheme interpreter/VM. An application can use Guile as an extension language, a clean and powerful configuration language, or as multi-purpose "glue" to connect primitives provided by the application. It is easy to call Scheme code >From C code and vice versa. Applications can add new functions, data types, control structures, and even syntax to Guile, to create a domain-specific language tailored to the task at hand. Guile 2.9.3 can be installed in parallel with Guile 2.2.x; see http://www.gnu.org/software/guile/manual/html_node/Parallel-Installations.html. A more detailed NEWS summary follows these details on how to get the Guile sources. Here are the compressed sources: http://alpha.gnu.org/gnu/guile/guile-2.9.3.tar.lz (10MB) http://alpha.gnu.org/gnu/guile/guile-2.9.3.tar.xz (12MB) http://alpha.gnu.org/gnu/guile/guile-2.9.3.tar.gz (21MB) Here are the GPG detached signatures[*]: http://alpha.gnu.org/gnu/guile/guile-2.9.3.tar.lz.sig http://alpha.gnu.org/gnu/guile/guile-2.9.3.tar.xz.sig http://alpha.gnu.org/gnu/guile/guile-2.9.3.tar.gz.sig Use a mirror for higher download bandwidth: http://www.gnu.org/order/ftp.html Here are the SHA256 checksums: 24b2ebbcc06e37f6d5d56a6053676d7f3fc54886717aa5ab589383ce8739e685 guile-2.9.3.tar.lz f9cd59233bde1a6b316bfcf82a49fa25d6f7e25b7c0019272afc697f19072991 guile-2.9.3.tar.xz b549d5bc7a00247b89f40e495b0ab96947b9f7935829fb6d20573545c1156535 guile-2.9.3.tar.gz [*] Use a .sig file to verify that the corresponding file (without the .sig suffix) is intact. First, be sure to download both the .sig file and the corresponding tarball. Then, run a command like this: gpg --verify guile-2.9.3.tar.gz.sig If that command fails because you don't have the required public key, then run this command to import it: gpg --keyserver keys.gnupg.net --recv-keys 4FD4D288D445934E0A14F9A5A8803732E4436885 and rerun the 'gpg --verify' command. This release was bootstrapped with the following tools: Autoconf 2.69 Automake 1.16.1 Libtool 2.4.6 Gnulib v0.1-1157-gb03f418 Makeinfo 6.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%. Cumulative changes in the alpha 2.9.x series (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 slowdown. ** 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 `'. See "Redefining a Class" in the manual for more information. * 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'.