Re: GNU Guile 2.2.0 released

2017-03-18 Thread Thomas Morley
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 Thread Thomas Morley
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

2017-03-18 Thread 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’.




Re: GNU Guile 2.2.0 released

2017-03-17 Thread Matt Wette

> 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

2017-03-17 Thread Jan Wedekind

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

2017-03-17 Thread Matt Wette
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

2017-03-16 Thread Ludovic Courtès
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

2017-03-16 Thread Jean Louis
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

2017-03-16 Thread Nala Ginrut
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

2017-03-16 Thread Andy Wingo
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