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 operating system theory) may venture very far from the kernel. The ability of easily expressing different personalities encourages experimentation and innovation.
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 bootstrapping 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 on Savannah. I 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 <email@example.com> mailing list. I can easily make more lists if needed, but I want to keep administration to a minimum for the time being.