[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [epsilon-devel] Heads-up: news about GNU epsilon

From: Luca Saiu
Subject: Re: [epsilon-devel] Heads-up: news about GNU epsilon
Date: Wed, 20 Jul 2016 16:02:48 +0200
User-agent: Gnus (Gnus v5.13), GNU Emacs, x86_64-unknown-linux-gnu

Hello Amirouche.  Nice to hear from you again.

On 2016-07-17 at 17:32, Amirouche Boubekki wrote:

> This project is exciting. I am wondering whether GNU Guile can benefit from
> GNU epsilon development.

I'm not keeping up with Guile.  Guile might benefit from epsilon at some
point in the indeterminate future, if the Guile maintainers want it, and
after epsilon provides some sort of stable API.

Sometimes I toy with the idea of writing a Scheme personality over
epsilon1.  Just making it work would be "easy" but, and this is the
interesting point, I think that Scheme's multiple values would be a
fundamental obstacle for compiled code efficiency.  epsilon bundles,
which are expressly designed for efficiency, don't map into Scheme
multiple values at all in the general case: epsilon cannot have the
equivalent of Scheme's call-with-values over bundles; of course you can
simulate them with a heap-allocated data structure, but that defeats the

epsilon will have very efficient continuations (and exceptions, which
are the most painful current omission) after I implement the epsilon0
changes based on Basile's proposal allowing for stack manipulation.

> Also, there is project that appeared around Guile/Guix called Mes that aims
> to «have GuixSD boostrap from a minimal trusted binary into Scheme.

It looks like a small Lisp with a C runtime and a JIT, to be used as a
base to build a Scheme.  Yes, the idea looks similar to epsilon, at
least in my head when I think of I would do it: in their place I would
build Scheme piece by piece by self-modification.  On the other hand
their core language is much much higher-level than epsilon0.  They seem
to have have vectors, symbols, lists, closures and even quasiquoting in
the core.  All dynamically typed.  It doesn't look so easy to compile,
but best wishes to them.  At a quick look bringing MES up to full Scheme
seems much easier than the painful epsilon0-to-epsilon1 extension process.

> What do you think of Mes?
> [0] https://gitlab.com/janneke/mes

Of course the concept is as old as McCarthy's 1959 paper (so way older
than even LISP 1.5), but I have to confess I had not heard the phrase
"Maxwell Equations of Software" before.  That's a beautiful way of
saying it.  Wish I'd thought of it first.

> The strategy is to use [OriansJ's] self-hosting hex assembler to write
> a minimal LISP called MES to bootstrap a full fledged Scheme, written
> in MES.» [0]

Why they call it "trusted" is not completely clear to me.  It's not
running in kernel mode (I want to be able to do that as well, by the
way: think of colorForth) or otherwise trusted in the operating system
sense, I guess.

Anyway, this
makes me suspect I'm wrong.  The author seems to plan a rewrite of the
MES interpreter in hex to avoid relying on C, and then write a C
compiler of his own in MES (or in Scheme).

I don't know if the MES work is supposed to serve some practical
purpose, particularly with respect to Guix.  There is certainly some
subtler point I'm missing.  Something like a weak form of certified
compilation, to convince users that Guix binary packages have not been
tampered with?
Who cares.  Sounds fun, as Ludovic and others put it.  Very fun.
Bootstrapping problems are always fascinating.

What Guile does really well is interfacing with C in a simple way.  In
that respect I'm skeptical about replacing Guile with something
different.  Paradoxically, Guile works best in an environment where
Scheme is a second-class citizen and the rest of the world speaks C.
I'm moving in the opposite direction.

Thanks for your interest.  Regards,

Luca Saiu
* GNU epsilon:           http://www.gnu.org/software/epsilon
* My personal home page: http://ageinghacker.net

I support everyone's freedom of mocking any opinion or belief, no
matter how deeply held, with open disrespect and the same unrelented
enthusiasm of a toddler who has just learned the word "poo".

reply via email to

[Prev in Thread] Current Thread [Next in Thread]