[Ecls-list] Building ECL

Juan Jose Garcia Ripoll lisp at arrakis.es
Wed Feb 23 10:10:52 UTC 2005


Jan Rychter wrote:

>I have tried building ecls (CVS HEAD) in various configurations, mostly
>to estimate its space requirements. I encountered some problems: [...]
>  
>
Solved on CVS. Statically linked executables are produced now if you use 
--disable-shared. No other option is required.

>And another question, this one unrelated to the build process. Is there
>a way to save byte-compiled code to files and load them subsequently? I
>didn't find any mention of it in the manuals. It would be really useful
>for small embedded systems where space is limited -- I'm assuming the
>bytecode representation is significantly more compact than shared
>libraries that have gone through the C compiler. I'm willing to live
>with smaller execution speed, but space is a premium issue.
>
This is indeed a mayor concern for me. Having a printable representation 
of bytecodes would be very easy: bytecodes are made of a vector of 
uint16 (bytecodes.codes), plus a vector of lisp objects containing the 
data that is manipulated by the function (bytecodes.data) and optionally 
a lexical environment if the function was a closure (bytecodes.lex). One 
should simply

1) choose a reader macro that does not interfere with what an user 
expects from the reader. In think in clisp it is #Y
2) write a function for this reader macro.
3) extend si_write_ugly_object() for printing bytecodes with the same 
syntax.
4) optionally, add machinery in the compiler so that functions can be 
stored as bytecodes instead of as C code.

So the answer is that there is no way to serialize bytecodes yet, but it 
would be a couple of days effort for somebody familiar with ECL's 
internals... Or also a nice way to _become_ familiar with it I would be 
willing to review the patches ;-)

Finally, it is yet unclear to me whether serializing bytecodes is more 
efficient that doing a gzip on a source file. After all, since by 
default bytecodes keep debugging information, your bytecodes will be 
full with the symbols for the variables, the data of the function, etc.

Juanjo




More information about the ecl-devel mailing list