Youtoo 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. See the file COPYING in this directory, for a description of the GNU General Public License terms under which you can copy the files.
This version of the EuLisp definition and Youtoo implementation are being developed in an attempt to reconcile the differences with the ultimate aim to create a consistent definition and implementation which is as close to EuLisp-1.0 as is possible to ascertain from the remaining documents related to the standardisation process:
The youtoo system is a public domain implementation of the object-oriented dynamic programming language 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).
The youtoo compiler/interpreter compiles EuLisp 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 Perlmutter
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.
$LD_LIBRARY_PATH
(see ./makeso.Path).
…
) ;; end of module #+END_SRC
*argc*
and *argv*
are provided.
-no_recompile
.
$CLIBS
; the library path must
be given with -L<bar-path>
in the list of $CFLAGS
.
Lisp | C (C99) |
---|---|
<int> | int |
<character> | char |
<double> | double |
<string> | char* |
boolean | bool |
ptr | void* |
<int*> | int* |
<double*> | double* |
<string*> | char** |
The ptr
converter can be used to pass arbitrary C99 structures to Lisp,
so that they can be passed back to C at a later stage. The ptr converter
is also useful to pass a Lisp object unconverted to C99.
defextern
defextern
definitions can not be linked dynamically.
DEFINTERN
+
, -
and /
operate as set union, difference and
intersection on lists.
Instruction
is a 16bit integer rather than an 8bit char
so that 4
Instructions
still fit exactly in a pointer. This allows most of the
stack pointer incrementing to remain unchanged. However, a very large
number of small changes were also necessary. The C-files are compatible
between the 32bit and 64bit versions.
gcc-4.?.?
.
Makefiles
have been rationalised and simplified by using many features
in the GNU version of make
, gmake
which is now required to build
youtoo
.
Date: 2010-03-28 09:39:14 BST
HTML generated by org-mode 6.21b in emacs 23