Introduction to GNU epsilon
This is a web page about GNU epsilon, a new extensible programming language.
Programming languages should be designed to be growable by users,
built upon a very small kernel language and a set of syntactic abstraction
features aiming at rewriting complex programs into a combination of
simple forms which are easy to analyse, reason upon and implement,
according to a user-supplied specification directing syntax, control,
static analysis and optimization.
The kernel language alone is too minimal to be directly useful as an high-level tool,
but extended languages can be built on top of it; such
"personalities" (the name hints at
an analogous concept in
theory) may venture very far from the kernel. The ability of easily
expressing different personalities encourages experimentation and
The epsilon distribution will contain both the basic infrastructure for building
personalities from an "ε₀" kernel, and one powerful predefined
personality, particularly suitable for symbolic computation.
The implementation will consist of an interpreter, a virtual machine, bytecode
and native compilers, and a runtime system including a parallel garbage collector
targeted at multicore machines.
The current implementation is my fifth rewrite from scratch; I'm
from Guile, plus some
automatically-translated code originally written in ML.
The code I have right now is heavily experimental and not suitable for public
use yet; I now think it makes little sense to start a community effort before
a reasonably complete implementation exists. Since I'm the only developer and I
absolutely want to get the basic ideas right I'm currently following a
cathedral development model; this will change in the future.
Most of the code is already available in the bzr repository
also have some more modules ready but not yet in the repository,
notably the parallel garbage collector; they will be added soon.
epsilon is released under the
GNU GPL version 3 or later.
We can discuss about epsilon's development on the
mailing list. I can easily make more lists if needed, but I want to
keep administration to a minimum for the time being.
GNU epsilon is written and maintained by