Download by Platforms & Versions

Earlier versions of E have
been tested and run on MSWindows (95, 98 FE, NT, 2K), and Linux. It should
run on other UNIX platforms as well, given an adequate version of Java
and bash (see below). It should also run without problems on MSWindows
98 SE and on ME, but as far as we are aware, no one has tried this. If
you experience any problems, or have any other informative experiences,
please let me know.

The Installing links below describe how to install, and run various
forms of the binary distribution. The Building links describe how
to build E from the source release. The Download links will download
each corresponding form of the release to your machine.

Highlights of this Version

E stl-0.8.9t is an
interim non-distributed release, but supporting a more modern version
of the E language spec. It's primary motivation is to support work on
compiling E, but it may also be preferred by those using E for non-distributed
programming.

The following is a list of the names of the major changes, but without
yet any explanations. As each change is explained in the upcoming release
notes, the item below will be linked to that explanation. Most of these
notes will be messages to the e-lang
list, so the link should also serve as the root of a discussion about
each change.

Variants and Subsets of E

A complete E system is persistent,
distributed, and capability-secure both within and between processes.
Incomplete variants of E
are tagged by which of these features are left out.

Feature

Prefix if
feature is absent

What it stands for

Persistent

tl-

Time-Local

Distributed

sl-

Space-Local

Local
capability security

otc-

Only-Trusted-Code

Distributed
capability security

daffE

Distributed Application FrameworkForsaking Encryption

A non-persistent E is called
time-local since an object only exist as long as its hosting process
does. A non-distributed E
is called space-local if an object and all references to it only
exist within its hosting process.

This release is space-time-local, meaning it is non-distributed
and non-persistent, and so is prefixed with "stl-". Being
non-distributed, this release is much less useful than the 0.8.9
release. This version is being released mainly to support work on
compiling E, since its interpreter conforms more closely to the definition
of Kernel-E. If this is not
a concern, you should probably stick with the 0.8.9 release.

Eby definition provides
distributed capability-security -- the ability for objects in mutually
suspicious processes to safely cooperate. If it looks like E
and it quacks like E, it
might be a duck; but if it doesn't provide distributed capability security,
it's not E. A system that's
otherwise equivalent to E,
but doesn't provide distributed capability security, is called daffE.
A distributed E can only
be implemented by means of strong crypto, of course, for which we are
bundling a subset of the Cryptix
library. In a space-local system, no distributed insecurity can arise,
so such a system would be an sl-E
rather than an sl-daffE. This release is non-distributed
and so is an E rather than
a daffE.

E is designed to provide
local capabillity-security -- the ability for mutually suspicious objects
hosted by the same process to safely cooperate, and the use of capability
discipline to determine which of its hosting process's authorities it
may exercise. Such objects could be executing untrusted code --
code that the hosting process (or its owner) doesn't need to fully trust.
This version of E supports
this feature, including confinement,
and so is not prefixed with "otc-".

Dependencies

Versions & Types of Java

In refering to various versions of Java, we follow Sun's terminology
and numbering. A Java Runtime, or jre, is adequate to run standard
Java binary programs (class files & resources). A Java Development
Kit, or jdk, is adequate both to build a program from sources and
to run it. A jdk is a superset of the corresponding jre, and their version
numbers are always in synch. Each successive version of the jdk/jre from
Sun effectively defines a new version of the Java & JVM standards,
except that Sun has introduced a numbering
inconsistency: The Java/JVM 2.x standard corresponds to Sun's jdk/jre
1.2.x. We ignore this inconsistency and refer to both as 1.2.x.

This version of E requires
a jre >= 1.2.x. E no longer supports Java < 1.2. To build E
from sources, a corresponding jdk is required. We recommend a JDK >=
1.3.x. In particular, we recommend against 1.2.2. (Sun's Swing implementation
in 1.2.2 does not, ahem, live up to Sun's usual quality standards.)

Build-Only Dependencies

If you are only installing E
from a binary distribution, or only rebuilding the Java portion for your
own use, you can ignore this section. However, if you wish to build an
E distribution from sources,
then you will need the equivalent of the following tools as well.

The E building process relies
on a number of UNIX tools. These are available for Windows from Cygnus
Support as the Cygwin package. If you wish to build E
on Windows, you should download
and install a version >= 1.0.

BYacc/J (Berkeley Yacc for Java)

The E source distribution contains the executable binary program byaccj.exe
for Windows, and byaccj for Linux/386/glibc. These are actually
BYacc/Java
from Bob Jamison and others.
BYacc/Java is the Berkeley Yacc program extended with a "-j"
flag and others for producing Java output. BYacc/Java is covered by the
Berkeley License. If you are on a Unix system other than glibc Linux,
you need to download your own version of byaccj and overwrite
the one in src/bin/linux-386-glibc that our Makefile is using.

Note: The website at the above link, http://www.lincom-asg.com/~rjamison/byacc/,
seems to have disappeared. If you know where it may have gone to, or know
how to contact Bob Jamison, please let me know. In the meantime, starting
with the 0.8.9t release, the sources to byaccj are bundled with the E
sources, and byaccj is made as part of making E.

Zip Files

Our build process packs up the *.zip files in the distribution
by using Info-Zip's
highy portable, and highly ported, zip program. Info-Zip's
zipping tools are open-sourced with a license that seems to resemble the
X11 license, but before redistributing it, you should read it for yourself.
The E distributions do not
bundle in these tools.

Unless stated otherwise, all text on this page which is either unattributed
or by Mark S. Miller is hereby placed in the public domain.