/EuLisp

Resurrection of the EuLisp definition and the Youtoo, EuXLisp and Eu2C implementations

Primary LanguageCGNU General Public License v2.0GPL-2.0

EuLisp

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/.

Aim

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.

Original Sources

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:

EuLisp definition

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

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.

Youtoo

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

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.

General Description

EuLisp

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).

Current Definition

is provided in both HTML and PDF formats:

EuLisp-1.0 Proposals

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

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.

Youtoo

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

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

Installation of EuXLisp, Youtoo and Eu2C

Prerequisites

C Compiler

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.

Garbage Collector

EuXLisp and Eu2C include their own garbage collectors bu Youtoo uses the Boehm-Demers garbage collector which must be installed before compilation:

Common Lisp Compiler

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.

Download

Pull the latest version from the GitHub repository:

  • git clone git://github.com/Henry/EuLisp.git

Configuration

  • cd into the EuLisp 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

  • 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 or eu2c 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

  • Run the euxlisp executable
    • Bin.$ARCH/euxlisp
  • Run the youtoo executable
    • Bin.$ARCH/youtoo
  • Run the eu2c compiler script
    • Eu2C/Bin/eu2c

Getting Started