Re: GNU Guile 2.2.0 released
2017-03-18 21:50 GMT+01:00 Thomas Morley : > ~$ guile > guile: error while loading shared libraries: libguile-2.2.so.1: cannot > open shared object file: No such file or directory Strange. I can't reproduce it and 2.2.0.2-aa86f _is_ installed. Sorry for the noise. Cheers,, Harm
Re: GNU Guile 2.2.0 released
2017-03-18 12:20 GMT+01:00 Ludovic Courtès : > Jean Louis skribis: > >> There is mistake with the link 2.2.0: >> https://www.gnu.org/software/guile/download/(string-append%20https://ftp.gnu.org/gnu/guile/guile-%20(latest-guile-version)%20.tar.gz) > > Fixed: > > > https://git.savannah.gnu.org/cgit/guile/guile-web.git/commit/?id=f46a5d7ebbad36d005c36aaf3bba288ac2386ce1 > > Thanks! > Ludo’. > > >From the repo I've a successful make out of commit aa86fcb7d92857ddbd9c0cde40f3d730d4606d62 Author: Ludovic Courtès Date: Fri Mar 17 23:37:57 2017 +0100 web: Avoid deprecated '_IOFBF'. * module/web/client.scm (open-socket-for-uri): Use 'block instead of _IOFBF. ~/guile/meta (master)$ ./guile GNU Guile 2.2.0.2-aa86f [...] make install successful as well, i.e. no errors But trying guile in a fresh terminal returns an error: ~$ guile guile: error while loading shared libraries: libguile-2.2.so.1: cannot open shared object file: No such file or directory I'm on Ubuntu 16-bit 16.04 ~$ uname -a Linux kasten 4.4.0-66-generic #87-Ubuntu SMP Fri Mar 3 15:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux Cheers, Harm
Re: GNU Guile 2.2.0 released
Jean Louis skribis: > There is mistake with the link 2.2.0: > https://www.gnu.org/software/guile/download/(string-append%20https://ftp.gnu.org/gnu/guile/guile-%20(latest-guile-version)%20.tar.gz) Fixed: https://git.savannah.gnu.org/cgit/guile/guile-web.git/commit/?id=f46a5d7ebbad36d005c36aaf3bba288ac2386ce1 Thanks! Ludo’.
Re: GNU Guile 2.2.0 released
> On Mar 17, 2017, at 7:19 AM, Matt Wette wrote: > > FYI, 2.2.0 has already been placed into MacPorts distribution (though still > some minor hiccups wrt macport checksums.) > > root# port upgrade outdated > ... > ---> Computing dependencies for guile > ---> Fetching distfiles for guile > ---> Attempting to fetch guile-2.2.0.tar.gz from > https://distfiles.macports.org/guile > My mistake. Not updated. It was a customization that I had forgotten about. — Matt
Re: GNU Guile 2.2.0 released
Many thanks! Just did some benchmarks and it looks like there are decent performance improvements :) Regards Jan # Guile 2.0.11 make[1]: Entering directory '/home/jan/test/aiscm/bench' LD_LIBRARY_PATH=./.libs:/usr/local/lib GC_INITIAL_HEAP_SIZE=1G GC_USE_ENTIRE_HEAP=Y /usr/bin/guile bench.scm user system totalreal Guile GOOPS method dispatch0.50 0.00 0.50 ( 0.50) Guile make empty sequence 0.000160 0.00 0.000160 ( 0.000160) Guile allocate memory 0.000180 0.00 0.000180 ( 0.000180) Guile negate empty sequence0.001640 0.000120 0.001760 ( 0.001760) Guile make sequence0.000250 0.00 0.000250 ( 0.000260) Guile negate sequence 0.002370 0.000920 0.003290 ( 0.003300) C allocate memory 0.60 0.00 0.60 ( 0.60) C negate empty sequence0.30 0.00 0.30 ( 0.30) C negate sequence 0.000720 0.00 0.000720 ( 0.000720) make[1]: Leaving directory '/home/jan/test/aiscm/bench' # Guile 2.2.0 make[1]: Entering directory '/home/jan/test/aiscm/bench' LD_LIBRARY_PATH=./.libs:/usr/local/lib GC_INITIAL_HEAP_SIZE=1G GC_USE_ENTIRE_HEAP=Y /usr/local/bin/guile bench.scm user system totalreal Guile GOOPS method dispatch0.20 0.00 0.20 ( 0.20) Guile make empty sequence 0.40 0.00 0.40 ( 0.50) Guile allocate memory 0.000100 0.20 0.000120 ( 0.000110) Guile negate empty sequence0.000470 0.70 0.000540 ( 0.000550) Guile make sequence0.000110 0.10 0.000120 ( 0.000130) Guile negate sequence 0.001580 0.000910 0.002490 ( 0.002510) C allocate memory 0.30 0.00 0.30 ( 0.20) C negate empty sequence0.20 0.00 0.20 ( 0.20) C negate sequence 0.000690 0.10 0.000700 ( 0.000700) make[1]: Leaving directory '/home/jan/test/aiscm/bench'
Re: GNU Guile 2.2.0 released
FYI, 2.2.0 has already been placed into MacPorts distribution (though still some minor hiccups wrt macport checksums.) root# port upgrade outdated ... ---> Computing dependencies for guile ---> Fetching distfiles for guile ---> Attempting to fetch guile-2.2.0.tar.gz from https://distfiles.macports.org/guile
Re: GNU Guile 2.2.0 released
Hello! Andy Wingo skribis: > We are delighted to announce GNU Guile release 2.2.0, the first of a > new stable release series. > > More than 6 years in the making, Guile 2.2 includes a new optimizing > compiler and high-performance register virtual machine. Compared to > the old 2.0 series, real-world programs often show a speedup of 30% or > more with Guile 2.2. Guile 2.2 has gone way beyond what I guess most of us would have imagined 6 years ago. A big thank you for pushing Guile this far! Thumbs up to all the contributors and early adopters of 2.1 as well! Ludo’.
Re: GNU Guile 2.2.0 released
On the page: https://www.gnu.org/software/guile/download/#releases where it says: - The latest release of Guile's 2.2.x series is 2.2.0 - The latest release of Guile's legacy 2.0.x series is 2.0.14 There is mistake with the link 2.2.0: https://www.gnu.org/software/guile/download/(string-append%20https://ftp.gnu.org/gnu/guile/guile-%20(latest-guile-version)%20.tar.gz) Jean
Re: GNU Guile 2.2.0 released
Congrats! 6 years, well I never realized it. At that time I was a newbie in Scheme land... Best regards. On Thu, Mar 16, 2017 at 6:16 PM, Andy Wingo wrote: > We are delighted to announce GNU Guile release 2.2.0, the first of a > new stable release series. > > More than 6 years in the making, Guile 2.2 includes a new optimizing > compiler and high-performance register virtual machine. Compared to > the old 2.0 series, real-world programs often show a speedup of 30% or > more with Guile 2.2. > > Besides the compiler upgrade, Guile 2.2 removes limitations on user > programs by lowering memory usage, speeding up the "eval" interpreter, > providing better support for multi-core programming, and last but not > least, removing any fixed limit on recursive function calls. > > Not only does Guile 2.2 run fast, it also supports the creation of > user-space concurrency facilities that multiplex millions of > concurrent lightweight "fibers". See > https://www.gnu.org/software/guile/news/gnu-guile-220-released.html > for pointers to promising experiments. > > If you are migrating from earlier versions of Guile, be sure to read > the NEWS below for exhaustive information on user-visible changes > relative to the previous stable series. Installation instructions > follow the NEWS. As a bonus, this release includes a binary release > built with Guix that you can untar onto any x86_64 GNU/Linux system > and test out Guile for yourself; details at the end of this mail. > > * * * > > Guile is an implementation of the Scheme programming language. > > The Guile web page is located at https://gnu.org/software/guile/, and > among other things, it contains a copy of the Guile manual and pointers > to more resources. > > 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 implements many common Scheme standards, including R5RS, R6RS, and > a number of SRFIs. In addition, Guile includes its own module system, > full access to POSIX system calls, networking support, multiple threads, > dynamic linking, a foreign function call interface, and powerful string > processing. > > Guile 2.2.0 can be installed in parallel with Guile 2.0.x; see > https://www.gnu.org/software/guile/manual/html_node/Parallel-Installations.html. > > Changes in 2.2.0 (changes since the 2.0.x stable release series): > > * Notable changes > > ** Speed > > The biggest change in Guile 2.2 is a complete rewrite of its virtual > machine and compiler internals. The result is faster startup time, > better memory usage, and faster execution of user code. See the > "Performance improvements" section below for more details. > > ** Better thread-safety > > 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 > > It used to be the case that, when calling a Scheme procedure, the > procedure and arguments were always preserved against garbage > collection. This is no longer the case; Guile is free to collect the > procedure and arguments if they become unreachable, or to re-use their > slots for other local variables. Guile still offers good-quality > backtraces by determining the procedure being called from the > instruction pointer instead of from the value in slot 0 of an > application frame, and by using a live variable map that allows the > debugger to know which locals are live at all points in a frame. > > ** Off-main-thread finalization > > Following Guile 2.0.6's change to invoke finalizers via asyncs, Guile > 2.2 takes the additional step of invoking finalizers from a dedicated > finalizer thread, if threads are enabled. This avoids concurrency > issues between finalizers and application code, and also speeds up > finalization. If your application's finalizers are not robust to the > presence of threads, see "Foreign Objects" in the manual for information > on how to disable automatic finalization and instead run finalizers > manually. > > ** Better locale support in Guile scripts > > When Guile is invoked directly, either from the command line or via a > hash-bang line (e.g. "#!/usr/bin/guile"), it now installs the current > locale via a call to `(setlocale LC_ALL
GNU Guile 2.2.0 released
We are delighted to announce GNU Guile release 2.2.0, the first of a new stable release series. More than 6 years in the making, Guile 2.2 includes a new optimizing compiler and high-performance register virtual machine. Compared to the old 2.0 series, real-world programs often show a speedup of 30% or more with Guile 2.2. Besides the compiler upgrade, Guile 2.2 removes limitations on user programs by lowering memory usage, speeding up the "eval" interpreter, providing better support for multi-core programming, and last but not least, removing any fixed limit on recursive function calls. Not only does Guile 2.2 run fast, it also supports the creation of user-space concurrency facilities that multiplex millions of concurrent lightweight "fibers". See https://www.gnu.org/software/guile/news/gnu-guile-220-released.html for pointers to promising experiments. If you are migrating from earlier versions of Guile, be sure to read the NEWS below for exhaustive information on user-visible changes relative to the previous stable series. Installation instructions follow the NEWS. As a bonus, this release includes a binary release built with Guix that you can untar onto any x86_64 GNU/Linux system and test out Guile for yourself; details at the end of this mail. * * * Guile is an implementation of the Scheme programming language. The Guile web page is located at https://gnu.org/software/guile/, and among other things, it contains a copy of the Guile manual and pointers to more resources. 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 implements many common Scheme standards, including R5RS, R6RS, and a number of SRFIs. In addition, Guile includes its own module system, full access to POSIX system calls, networking support, multiple threads, dynamic linking, a foreign function call interface, and powerful string processing. Guile 2.2.0 can be installed in parallel with Guile 2.0.x; see https://www.gnu.org/software/guile/manual/html_node/Parallel-Installations.html. Changes in 2.2.0 (changes since the 2.0.x stable release series): * Notable changes ** Speed The biggest change in Guile 2.2 is a complete rewrite of its virtual machine and compiler internals. The result is faster startup time, better memory usage, and faster execution of user code. See the "Performance improvements" section below for more details. ** Better thread-safety 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 It used to be the case that, when calling a Scheme procedure, the procedure and arguments were always preserved against garbage collection. This is no longer the case; Guile is free to collect the procedure and arguments if they become unreachable, or to re-use their slots for other local variables. Guile still offers good-quality backtraces by determining the procedure being called from the instruction pointer instead of from the value in slot 0 of an application frame, and by using a live variable map that allows the debugger to know which locals are live at all points in a frame. ** Off-main-thread finalization Following Guile 2.0.6's change to invoke finalizers via asyncs, Guile 2.2 takes the additional step of invoking finalizers from a dedicated finalizer thread, if threads are enabled. This avoids concurrency issues between finalizers and application code, and also speeds up finalization. If your application's finalizers are not robust to the presence of threads, see "Foreign Objects" in the manual for information on how to disable automatic finalization and instead run finalizers manually. ** Better locale support in Guile scripts When Guile is invoked directly, either from the command line or via a 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 "Environment Variables" in the manual, for more. ** Complete Emacs-compatible Elisp implementation Thank