efl/legacy/embryo
Carsten Haitzler 97a9424b94 asparagus time for some of the core efl bits...
SVN revision: 13846
2005-03-22 10:54:17 +00:00
..
debian Big debian packaging update. 2004-08-08 10:56:44 +00:00
doc Sun Jan 23 22:30:28 2005 Michael Jennings (mej) 2005-01-24 02:26:35 +00:00
examples atoi booboo - accepts 1, not 2 params! :) 2005-01-08 08:57:00 +00:00
include getfarg 2004-12-09 02:46:32 +00:00
m4 m4 junk 2004-06-24 05:59:57 +00:00
src fixed switch statements with only one case statement 2005-02-26 14:46:07 +00:00
.cvsignore Sun Jan 23 22:30:28 2005 Michael Jennings (mej) 2005-01-24 02:26:35 +00:00
AUTHORS and E cvs did givbe birth to an Embryo! :) 2004-03-24 09:48:28 +00:00
COPYING and E cvs did givbe birth to an Embryo! :) 2004-03-24 09:48:28 +00:00
COPYING-PLAIN and E cvs did givbe birth to an Embryo! :) 2004-03-24 09:48:28 +00:00
ChangeLog and E cvs did givbe birth to an Embryo! :) 2004-03-24 09:48:28 +00:00
Doxyfile Embryo documentation. About 90% done. Still some extra explanatory stuff to do, and some bugs to iron out, but all the functions in the API now at least have something written about them. 2004-09-25 14:37:39 +00:00
INSTALL and E cvs did givbe birth to an Embryo! :) 2004-03-24 09:48:28 +00:00
Makefile.am disable lots of compiler options - embryo handles a subset of small 2004-03-24 10:25:05 +00:00
NEWS and E cvs did givbe birth to an Embryo! :) 2004-03-24 09:48:28 +00:00
README Embryo documentation. About 90% done. Still some extra explanatory stuff to do, and some bugs to iron out, but all the functions in the API now at least have something written about them. 2004-09-25 14:37:39 +00:00
autogen.sh glibtoolize 2004-09-13 05:38:15 +00:00
configure.in asparagus time for some of the core efl bits... 2005-03-22 10:54:17 +00:00
embryo-config.in and E cvs did givbe birth to an Embryo! :) 2004-03-24 09:48:28 +00:00
embryo-native.oe openembedded build files... this makes life so easy to build efl for 2004-11-09 09:36:36 +00:00
embryo.bb Added the change for BitBake the Standardized Openembedded Build System 2004-12-17 01:19:02 +00:00
embryo.c.in Embryo documentation. About 90% done. Still some extra explanatory stuff to do, and some bugs to iron out, but all the functions in the API now at least have something written about them. 2004-09-25 14:37:39 +00:00
embryo.oe openembedded build files... this makes life so easy to build efl for 2004-11-09 09:36:36 +00:00
embryo.pc.in and E cvs did givbe birth to an Embryo! :) 2004-03-24 09:48:28 +00:00
embryo.spec Wed Jan 5 00:03:30 2005 Michael Jennings (mej) 2005-01-05 05:05:30 +00:00
embryoXnative.bb Python is too incompetent to parse hyphens 2004-12-18 22:06:27 +00:00
gendoc Embryo documentation. About 90% done. Still some extra explanatory stuff to do, and some bugs to iron out, but all the functions in the API now at least have something written about them. 2004-09-25 14:37:39 +00:00
make_cross_compile_arm.sh and E cvs did givbe birth to an Embryo! :) 2004-03-24 09:48:28 +00:00

README

Embryo 0.0.1

WARNING: gcc compatibility!!!
There seems to be some bug (or disagreement) between embryo and gcc 3.2.x
where IEEE floating point format encoding does not "agree" with embryo's own
hand-made tests. embryo_cc may not work if you compile using gcc 3.2.x. gcc
3.3.x is known to work fine. we are not 100% sure whose fault this is yet, so
we won't be jumping up and down, but be warned - gcc 3.2.x does not agree
with embryo.

To view the API docs, run ./gendoc and view doc/html/index.html.

OK a lot of people ask this. What is Embryo?

Embryo is primarily a shared library that gives you an API to load and control
interpreted programs compiled into an abstract machine bytecode that it
understands.  This abstract (or virtual) machine is similar to a real machine
with a CPU, but it is emulated in software.  The architecture is simple and is
the same as the abstract machine (AMX) in the
<a href=http://www.compuphase.com/small.htm>SMALL</a> language as it is based
on exactly the same code. Embryo has modified the code for the AMX extensively
and has made it smaller and more portable.  It is VERY small.  The total size
of the virtual machine code AND header files is less than 2500 lines of code.
It includes the floating point library support by default as well.  This makes
it one of the smallest interpreters around, and thus makes is very
efficient to use in code.

Embryo also uses the SMALL compiler from the same code base. This code has
barely been touched and so suffers from lots of portability issues. It has
been partially fixed and now works on both big and little endian but the code
still need to be gone over and really cleaned up . It does work, but it's only
just working.  It has been called embryo_cc and compiled a subset of SMALL
binary outputs.  It does not support packed strings, variable alignment, or
debugging output.  It does not support many features of the full SMALL
compiler because the Embryo AMX does not support these either. You will find
the Embryo codebase to work much better on Linux (and BSD and MacOS X) and
other UNIX operating systems as it has been developed and tested on them. IT
is known to work on:
  gcc Linux   (x86-32)
  gcc Linux   (PPC)
  gcc MacOS X (PPC)

And will likely work on more combinations. IT currently has problems on 64bit
SPARC CPUs. Other 64bit systems are untested. It is the aim to fix the code
so it works on all commonly used architectures (32, 64bit, big and little
endian, alignment forgiving/unforgiving).  So far 64bit support is the major
issue.

For more documentation please see the Language guide here:

<a href=http://www.compuphase.com/smalldoc.pdf>Small Language Booklet</a>
  
This documents the SMALL language and is 100% relevant for Embryo and the
syntax of files it can compile (.sma files).

Any help is appreciated in helping clean and port this code, so feel free to
send patches to the Enlightenment development lists.

The main aim of Embryo is to provide an easy to use library for running
compiled SMALL programs and giving them access to the calling program and
any API it exports to the SMALL script.  SMALL programs/scripts are completely
sand-boxed. They cannot access any system or function calls other than the
ones provided by the calling application to the Embryo API. This means a
SMALL script cannot open or write to, delete or load files. It is fairly
harmless and this also keeps Embryo small.

This is a work in progress, so please be patient if things don't work for you
- and patches and help in fixing it is very much appreciated.