|
|
Subscribe / Log in / New account

GNU Guile 2.0.0 released

From:  ludo-AT-gnu.org (Ludovic =?iso-8859-1?Q?Court=E8s?=)
To:  guile-devel-AT-gnu.org
Subject:  GNU Guile 2.0.0 released
Date:  Wed, 16 Feb 2011 11:29:33 +0100
Message-ID:  <87sjvoclwy.fsf@gnu.org>
Cc:  guile-user-AT-gnu.org, guile-sources-AT-gnu.org
Archive‑link:  Article

We are pleased to announce GNU Guile release 2.0.0, the first of a new
stable series and the result of almost 3 years of work.  It provides
many new noteworthy features, most notably the addition of a compiler
and virtual machine.

The Guile web page is located at http://gnu.org/software/guile/, and
among other things, it contains a link to the Guile FAQ and pointers to
the mailing lists.

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 and
a large subset of R6RS, 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 suitable for stand-alone applications.  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.


Here are the compressed sources:
  ftp://ftp.gnu.org/gnu/guile/guile-2.0.0.tar.gz   (5.4MB)

Here are the GPG detached signatures[*]:
  ftp://ftp.gnu.org/gnu/guile/guile-2.0.0.tar.gz.sig

To reduce load on the main server, use a mirror listed at:
  http://www.gnu.org/order/ftp.html

Here are the MD5 and SHA1 checksums:

4f91ca29077aca32e1e28f70220dfd9b  guile-2.0.0.tar.gz
e266b79b17a04a98c438e9d5dabb5210fb368d77  guile-2.0.0.tar.gz

[*] You can use either of the above signature files 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.0.0.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 5E674E63

and rerun the `gpg --verify' command.

This release was bootstrapped with the following tools:
  Autoconf 2.68
  Automake 1.11.1
  Libtool 2.4
  Gnulib v0.0-4889-ge375fe3


The detailed list of changes compared to the 1.8.x series is available
in the `NEWS' file with links to the relevant parts of the manual.
Since it is very long, here is a very condensed form.

  Highlights of changes in 2.0.0 (since the 1.8.x release series):

  * New compiler infrastructure and VM

  Guile 2.0 compiles Scheme code to bytecode, which is then interpreted
  by the VM.  This gives a noticeable performance improvement compared
  to earlier Guile series.

  By default source code is compiled automatically as it is encountered,
  without any manual intervention.  The "guile-tools compile" command
  provides a command-line interface, and there are also Scheme
  procedures to drive the compiler.

  Besides Scheme, the compiler comes with front-ends for the ECMAScript
  and Emacs Lisp languages.

  * New REPL, new debugger

  A read-eval-print-loop (REPL) is available.  Compared to the REPL in
  earlier releases, it supports "meta-commands" that provide convenient
  access to interactive programming features.  For instance, the
  ",compile" meta-command compiles the given expression, ",profile"
  shows an execution profile of the given expression, etc.

  Any error or uncaught exception leads to a "recursive REPL", which is
  a REPL augmented with debugging capabilities: it has meta-commands to
  display a backtrace, inspect the variables on a stack frame, etc.  The
  recursive REPL can be quit to return to the original one.

  * Support for hygienic macros

  The `syntax-rules' and `syntax-case' hygienic macro systems are
  supported natively by Guile, without importing `(ice-9 syncase)', and
  work across module boundaries.  They are a better replacement for
  `defmacro'.

  * Unicode support

  Scheme strings can hold any Unicode character, and ports can read and
  write Unicode text in various encodings.

  * Partial R6RS compatibility

  The `library' and `import' forms of R6RS are supported, and all the
  R6RS libraries defined in the standard are available.  See "R6RS
  Incompatibilities" in the manual, for details about remaining
  incompatibilities.

  * New dynamic foreign function interface

  The `(system foreign)' module provides a new dynamic foreign function
  interface (FFI).  It allows bindings to C libraries to be written
  without a single line of C code.

  * Switch to the Boehm-Demers-Weiser garbage collector

  Guile now uses the Boehm-Demers-Weiser conservative garbage collector
  (aka. libgc).  It makes interaction with C code easier making, for
  instance, the use of mark and free SMOB procedures optional in many
  cases.  It also improves performance.

  * New modules

  ** `(srfi srfi-18)', more sophisticated multithreading support
  ** `(srfi srfi-27)', sources of random bits
  ** `(srfi srfi-38)', External Representation for Data With Shared Structure
  ** `(srfi srfi-42)', eager comprehensions
  ** `(srfi srfi-45)', primitives for expressing iterative lazy algorithms
  ** `(srfi srfi-67)', compare procedures
  ** `(ice-9 i18n)', internationalization support
  ** `(ice-9 futures)', fine-grain parallelism
  ** `(rnrs bytevectors)', the R6RS bytevector API
  ** `(rnrs io ports)', a subset of the R6RS I/O port API
  ** `(system xref)', a cross-referencing facility (FIXME undocumented)
  ** `(ice-9 vlist)', lists with constant-time random access; hash lists
  ** `(system foreign)', foreign function interface
  ** `(sxml ...)', tools for XML processing
  ** `(texinfo ...)', parsing and production of Texinfo documents
  ** `(sxml match)', a pattern matcher for SXML
  ** `(srfi srfi-9 gnu)', extensions to the SRFI-9 record library
  ** `(system vm coverage)', a line-by-line code coverage library
  ** `(web ...)', modules for URI and HTTP handling
  ** `(ice-9 poll)', a poll wrapper
  ** `(system base lalr)', the `lalr-scm' LALR(1) parser generator
  ** `(statprof)', statistical profiler

  * New dependencies

  ** libgc 7.x, http://www.hpl.hp.com/personal/Hans_Boehm/gc/
  ** GNU libunistring, http://www.gnu.org/software/libunistring/
  ** libffi, http://sourceware.org/libffi/

You can follow Guile development in the Git repository and on the Guile
mailing lists.  Guile builds from the `master' branch of Git have
version number 2.1.x.

Guile versions with an odd middle number, e.g., 2.1.*, are unstable
development versions.  Even middle numbers indicate stable versions.
This has been the case since the 1.3.* series.

Please report bugs to `bug-guile@gnu.org'.  We also welcome reports of
successful builds, which can be sent to the same email address.


Ludovic Courtès, on behalf of the Guile team.



to post comments

GNU Guile 2.0.0 released

Posted Feb 16, 2011 22:48 UTC (Wed) by atai (subscriber, #10977) [Link] (2 responses)

Will be interesting to see how the Javascript performance goes using the Guile VM. Can an JIT be added to this to make it comparable performance wise with V8, and other Javascript engines, someday, on both x86 and ARM...

GNU Guile 2.0.0 released

Posted Feb 17, 2011 2:42 UTC (Thu) by elanthis (guest, #6227) [Link] (1 responses)

You need an awful lot more than a JIT to get comparable performance to V8 and the other modern JS engines.

GNU Guile 2.0.0 released

Posted Feb 17, 2011 10:59 UTC (Thu) by nix (subscriber, #2304) [Link]

Even if you do that, V8 is still a lot slower than LuaJIT ;}

newLISP

Posted Feb 17, 2011 22:25 UTC (Thu) by roskegg (subscriber, #105) [Link] (2 responses)

It is nice to see Guile still progressing. If only they had been this far along five years ago. For now, newLISP fits all my needs. It is like all the best bits of original LISP, Common Lisp, and Scheme, combined with bits from Rexx, Algol, SAIL, Perl, Python, and other languages, all packaged in a way that is intuitive to the Unix C programmer. I can't imagine LISP being any sweeter and Unixy than newLISP. And everything Guile does, newLISP does. And its garbage collection is faster, better, and consistent. Consistent enough for repeatable timing runs.

newLISP

Posted Feb 17, 2011 23:28 UTC (Thu) by mhw (guest, #13931) [Link] (1 responses)

And everything Guile does, newLISP does.

I will try to be polite, but this is an extremely ignorant statement. Guile has many features which newLISP lacks. To give just a few examples: modern hygienic macros, first-class continuations, composable continuations, an extensible compiler system allowing new languages to be added easily, a far more powerful object-oriented programming system with multi-method dispatch based on a real meta-object protocol, a full numeric tower including arbitrary-precision integers and exact rationals, proper support for tail calls without using stack space. And that's just what I could discover in about 5 minutes of research.

Now, I have nothing against newLISP. I'm sure it's well-suited to many tasks, but please don't make ignorant claims that it does everything that Guile does.

newLISP

Posted Apr 18, 2012 19:37 UTC (Wed) by roskegg (subscriber, #105) [Link]

I said "does", not "has". True, newLISP, by design, lacks many of Guile's language features. But when it comes to buckling down and getting stuff done, newLISP does indeed "do" anything that Guile can do. Often much more simply.

Compilers? Who needs them. We have a linker that can create a "binary" blob that you can drop in place and run. Close enough.

Multi method dispatch? Our OO system (FOOP) does what we need it to. OO is an often over-used and overrated paradigm.

Hygeinic macros? They just tie you down. Yuck. First class and composable continuations? If you need them, you can implement them in a few lines of newLISP. Most people don't.

Full numeric tower? We use the Gnu GMP library when we need big numbers. Otherwise, we keep it close to the machine, just like C. floats and ints and chars. Saves cpu cycles, and let's me enjoy all the bit-banging fun I had back in my Assembly programming days.

Tail calls would be nice, but I really haven't missed them. The iteration primitives are well done, and tail calls can always be implemented with iteration, if speed turns out to be an issue.

GNU Guile 2.0.0 released

Posted Feb 19, 2011 19:32 UTC (Sat) by ncm (guest, #165) [Link] (1 responses)

Congratulations to all Guile participants. Better late than never! Guile is clearly superior, in its underlying design, to all other scripting/extension languages in use.

I commend the vision of the original Guile developer, Tom Lord, in recognizing Lisp's true nature as an excellent scripting-language design. Perhaps all Guile needs now is pool-based garbage collection, so it can ignore memory malloc'd by the C and C++ libraries it calls. (Or is that what Boehm-Demers-Weiser does?)

The Wikipedia page, http://en.wikipedia.org/wiki/GNU_Guile, deserves an update.

GNU Guile 2.0.0 released

Posted Feb 19, 2011 23:09 UTC (Sat) by nix (subscriber, #2304) [Link]

Guile is clearly superior, in its underlying design, to all other scripting/extension languages in use.
That is very much a subject for (religious!) debate. It's good, certainly.


Copyright © 2011, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds