For me this is the most exciting part:<p><i></i> Complete Emacs-compatible Elisp implementation<p><pre><code> Thanks to the work of Robin Templeton, Guile's Elisp implementation is now fully Emacs-compatible,
implementing all of Elisp's features and quirks in the same way as the editor we know and love.
</code></pre>
This means we can finally have a proper GuileEmacs!
Also check out this personal blog post from Andy Wingo, the primary developer:<p><a href="http://wingolog.org/archives/2017/03/15/guile-2-2-omg" rel="nofollow">http://wingolog.org/archives/2017/03/15/guile-2-2-omg</a>
For those excited about the "Guile's Elisp implementation" in this release. The last major Guile release was 6 years ago, and much of this GuileEmacs work is still highly WIP and from my searching on emacs-devel seems to have stalled in 2015 for lack of volunteers.<p>Just because Guile implements Elisp the <i>language</i> doesn't mean there isn't a ton of work to be done on Emacs itself to swap out its native VM for Guile, and it seems nobody's keen on finishing up that work.
This release has been a long time coming and I'm happy that the day has finally arrived. There's a small patch of mine in this release (my first compiler hack ever) that optimizes comparison operations for floating point numbers. If anyone is interested in hacking on compilers, I highly recommend checking out Guile as one of the easier points of entry into the space. Andy Wingo, the author, even wrote up a blog post with plenty of project ideas to improve things: <a href="http://wingolog.org/archives/2016/02/04/guile-compiler-tasks" rel="nofollow">http://wingolog.org/archives/2016/02/04/guile-compiler-tasks</a>
The mailing list announcement is better both for the detailed content and not being served as difficult to read on mobile "justified" text: <a href="https://lists.gnu.org/archive/html/guile-devel/2017-03/msg00095.html" rel="nofollow">https://lists.gnu.org/archive/html/guile-devel/2017-03/msg00...</a>
To try out Guile 2.2.0 easily from any GNU/Linux distro (from the full release notes):<p><pre><code> Bonus track! This release also contains a new experiment, a binary
installation package for the x86_64 architecture.
The GNU Guix project (https://guixsd.org/) has assembled a graph of
package definitions (for example, GCC, glibc, Guile, and so on) and is
able to build that graph in an entirely deterministic way starting
from only a handful of trusted bootstrap binaries. Guix recently
added a "guix pack" facility that can export build products from a
Guix system, including all run-time dependencies.
We have used the new "guix pack" to generate an experimental binary
distribution for the Guile 2.2.0 release. If you are on an x86_64
system running GNU/Linux, begin by running the following commands:
wget https://ftp.gnu.org/gnu/guile/guile-2.2.0-pack-x86_64-linux-gnu.tar.lz
wget
https://ftp.gnu.org/gnu/guile/guile-2.2.0-pack-x86_64-linux-gnu.tar.lz.sig
gpg --verify guile-2.2.0-pack-x86_64-linux-gnu.tar.lz.sig
If verification fails, then see above for instructions on how to
import the appropriate GPG key. For reference, the pack's sha256sum
is:
c707b9cf6f97ecca3a4e3e704e62b83f95f1aec28ed1535f5d0a1d36af07a015
guile-2.2.0-pack-x86_64-linux-gnu.tar.lz
Then in your root directory -- yes! -- do:
cd /
sudo tar xvf path/to/guile-2.2.0-pack-x86_64-linux-gnu.tar.lz
This tarball will extract some paths into /gnu/store and also add a
/opt/guile-2.2.0 symlink. To run Guile, just invoke:
/opt/guile-2.2.0/bin/guile
Voilà!</code></pre>
Can anyone tell me if Guile is relevant? The list of example programs written in Guile is small. EmacsLisp and not Scheme seems to be the Gnu lisp of choice. The VM is not the fastest and not the most portable. Is there any driver behind it?
Congratulations to the Guile team for the release! They're great people, and the Lua community is happy for having shared a devroom at FOSDEM with them for two years in a row.
It seems that guile and lua have similar goals (one of the largest being to function as an extension language). Anyone have practical pros/cons between them?
Why are those brackets there in the syntax? What's the need? It looks hard to read when the programs are bigger. Is there any super advantage to it?