EuLisp is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.
EuLisp is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with EuLisp in the file COPYING. If not, see http://www.gnu.org/licenses/.
This version of the EuLisp definition and Youtoo, EuXLisp and Eu2C implementations are being developed in an attempt to reconcile the differences with the ultimate aim to create a consistent definition and implementations which are as close to EuLisp-1.0 as is possible to ascertain from the remaining documents related to the standardisation process.
The starting point for this effort has been the publicly available packs of sources and documents relating to the development of the EuLisp definition and implementations:
The version of the EuLisp definition supplied is this release of Youtoo started life as EuLisp-0.99 from the pack released by Julian Padget: 931202.tar.gz updated following proposals and discussions also released by Julian Padget:
- Online definition
- nov93.gz
- dec93.gz
- adv-genarith.ps.gz
- eulisp-ffi.ps.gz
- eulisp-proposals.ps.gz
- genarith.ps.gz
- map.ps.gz
- stream.ps.gz
EuXLisp started life as Euscheme based on xscheme written by David Michael Betz and released under the 3-clause BSD licence, see http://henry.github.com/EuLisp/EuXLisp/ORIGINAL_LICENCE. However with the inclusion of the GNU getopt and readline libraries this software inherits the GPL with which the 3-clause BSD licence is compatible and all further developments will be made under the terms of the GPL version 2, see COPYING.
This release of Youtoo started life as Youtoo-0.93 developed by Andreas Kind, Julian Padget and others. More details are available from the original README file and the youtoo home page. The b2h and i2doc tools needed to bootstrap youtoo were reverse engineered and provided by T. Kurt Bond.
Eu2C was originally developed at Fraunhofer ISST in the joint research project APPLY funded by the German Ministry of Research and Technology under the project code ITW9102D5. The final release in July 1994 is publicly available from eu2c.tgz however the terms of use are not specified. This release of Eu2C is derived from the eu2c-94-07-EUPL version kindly prepared and provided by E. Ulrich Kriegel and released by Fraunhofer ISST under the EUPL version 1.1 (see http://henry.github.com/EuLisp/Eu2C/README.orig). However, due to the inclusion of EuLisp code from Youtoo, which is released under the GPL version 2, this version of Eu2C inherits the GPL version 2 (see above) as specifically permitted under the compatibility terms of the EUPL version 1.1. Future versions of the EUPL may include a compatibility clause for GPL version 3 at which point it will be possible to re-release Eu2C, Youtoo and EuXLisp under the GPL version 3.
EuLisp is a single-valued dialect of Lisp with an integrated object system, a defined meta-object protocol, modules and a simple light-weight process mechanism (threads).
is provided in both HTML and PDF formats:
are in the folowing proposal document and discussed in the minutes of the meeting on 19/11/93 and in the preceding and subsequent Email correspondence. The following reports are discussed in the above:
EuXLisp is a simple EuLisp Level-0 interpreter. EuLisp Level-0 is a small and compact Lisp, but nevertheless has many interesting features, such as modules, an object system, and multithreading. EuLisp Level-1 has extra features, the most notable being a full metaobject system which is implemented in Youtoo not in EuXLisp.
The Youtoo compiler/interpreter compiles EuLisp Level-1 into C-embedded virtual machine code which can be statically or dynamically linked with the virtual machine, the conservative garbage collector, the EuLisp language library and arbitrary other Lisp and foreign code (C, C++ and Fortran). Resulting stand-alone executables are portable, interoperable and efficient (see The Lisp Performance Page). The language implementation is extended towards a Virtual Multicomputer Architecture. Object serialization and inter-process communication (Sockets, MPI, Harvest Object Cache) support the migration of arbitray data and code.
The system reuses ideas from the Oaklisp system written by Barak Pearlmutter
and Kevin Lang. The meta-object protocol (Telos
) was originally
implemented in Common Lisp by Russell Bradford. By default, a garbage
collector written by Hans Boehm and Alan Demers is used.
See also Youtoo README
Eu2C is a EuLisp Level-0 to C compiler originally developed at Fraunhofer ISST in the joint research project APPLY funded by the German Ministry of Research and Technology under the project code ITW9102D5.
See also Eu2C README
All three EuLisp implementations require a C-compiler, in particular gcc
on most platforms. It is likely that a suitable gcc
is already
installed, if not install the development package which includes it.
EuXLisp and Eu2C include their own garbage collectors bu Youtoo uses the Boehm-Demers garbage collector which must be installed before compilation:
- On SuSE:
sudo zypper install gc-devel
. - On Ubuntu:
sudo apt-get install libgc-dev
. - On RedHat…: install the appropriate package.
- From sources: download
http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.2alpha4.tar.gz
and unpack, configure, make and install in
/usr/local
.
Eu2C bootstraps from Common Lisp and currently requires a recent version of CMUCL which may be obtained from http://www.cons.org/cmucl/download.html. SBCL support is expected in the future.
Pull the latest version from the GitHub repository:
git clone git://github.com/Henry/EuLisp.git
cd
into theEuLisp
directory- Configure for the default architecture
./configure
- Check the settings and edit the configure file to reflect your system if necessary and re-run
./configure
.
- To configure for a specified architecture,
./configure <arch>
- e.g. to configure for a 32bit build on a
x86_64
64bit machine: ./configure i686
- Build EuXLisp, Youtoo and Eu2C for the default architecture
make
- Build EuXLisp, Youtoo and Eu2C for a specified architecture
make ARCH=<arch>
- e.g. to build 32bit on a
x86_64
64bit machine: make ARCH=i686
- Alternatively you can build
euxlisp
,youtoo
oreu2c
by specifying the target and optionally the target architecture e.g.:make euxlisp
make youtoo
make eu2c
- For more details and more options for building Youtoo see README.
- For more details and more options for building Eu2C see README.
- Run the
euxlisp
executableBin.$ARCH/euxlisp
- Run the
youtoo
executableBin.$ARCH/youtoo
- Run the
eu2c
compiler scriptEu2C/Bin/eu2c