[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: enhancements needed, resources for achieving them



I just want to mention some work that I have been doing that might be of
relevance to this discussion.

I have an implementation of an Embeddable Common Lisp (ECL).
It compiles from Lisp to C (like AKCL, from which it is derived) using
standard C procedure conventions.
This provides a two-way foreign function interface: from Lisp to C and from
C to Lisp.
Lisp functions can be called from C, and of course also the opposite
is easy.

ECL uses a conservative GC, so that Lisp objects can be passed to C procedures
without worring of them being garbage collected.

Compiled C code is loaded dynamically with a dynamic loader.

ECL includes a native CLOS implementation and a Multiple Thread facility.

I currently have versions of ECL for Sun, SGI and DOS.
Code is available for HP and IBM-RT, but I have not tested these yet.

I think CLISP and ECL have complementary features that might be worth
integrating.

I am currenting writing documentation and restructuring the code to
improve modularity. The goal is to create a library with the run-time support
so that a Lisp kernel can be incorporated in applications.

ECL is free software available under the GNU GPL.
Interested people can ask me where to ftp the sources.

The following table compares the performance of several PD CL.
Times are in seconds on a Sun4 ECL diskless with 16MB of memory.


The following table compares the performance of several PD CL.
Times are in seconds on a Sun4 ECL diskless with 16MB of memory.

Bench	      ECL 	AKCL	CMU	CLISP
	     (0.1)     (1.615)  (16f)   (5.5)

BOYER        2.067	2.233	4.100 	22.600
BROWSE       3.750	4.167 	9.130 	15.510
CTAK         0.967	1.517 	0.500 	4.270  
DDERIV       1.717	1.200 	1.980 	5.000  
DERIV        1.200	0.817 	1.910 	3.800  
DESTRU       0.350	0.400 	0.340 	2.070  
DIV2         2.467	2.033 	1.990 	4.860  
FFT          2.317	71.333	0.410 	9.900  
FPRINT       0.167	0.150 	0.990 	0.260  
FREAD        0.133	0.167 	0.810 	0.320  
PUZZLE       1.833	1.300 	1.300 	17.990 
STAK         0.000	0.550 	0.380 	1.920  
TAK          0.200	0.067 	0.080 	0.890  
TAKL         0.267	0.283 	0.520 	4.300  
TAKR         0.233	0.100 	0.190 	2.260  
TPRINT       0.117	0.167 	1.270 	3.110  
TRAVERSE     6.783	6.717 	11.310	69.780 
TRIANG       10.067	13.133	32.210	198.220

-- Beppe