a new question and Re: [Ecls-list] How to call a function in a new core

Juan Jose Garcia Ripoll lisp at arrakis.es
Thu Jan 12 03:34:03 UTC 2006


On Wed, 2006-01-11 at 23:06 +0100, Peter Van Eynde wrote:
> On Wednesday 11 January 2006 19:22, Juan Jose Garcia Ripoll wrote:
> > Unfortunately :epilogue-code must be C code. This is because
> > C:BUILD-PROGRAM does not actually compile any lisp code, it simply joins
> > modules together with some C stub. I have just finished a patch that
> > removes this limitation. I will test it tomorrow and maybe submit it to
> > CVS.
> 
> That would be very cool.

Done. The argument to :EPILOGUE-CODE is now either a string containing
C/C++ code, or a list with a single lisp form.

This form is _INTERPRETED_ at run time and executed in the "CL-USER"
package. It should be safe to produce errors because the form is
evaluated within cl_safe_eval(). However, I have not checked this
extensively.

Note that unless you explicitely invoke SI:TOP-LEVEL, the core will exit
after executing your lisp form. Hence, the default value is
'(SI:TOP-LEVEL).

In the case of lisp forms, ECL always adds a call to cl_shutdown() after
your :EPILOGUE-CODE, for safety. And the return value is 0 unless the
form produced some error.

> I have another question: this is not what I expected as result (current CVS 
> checkput):
> 
> > (compile-file-pathname #P"/var/cache/common-lisp-controller/root/ecl/asdf/asdf.lisp"  :type :fas)

There's a typo: it is (COMPILE-FILE-PATHNAME ... :TYPE :FASL)
I have included :FAS as an alias, so that your example now
works.

> (compile-file-pathname
#P"/var/cache/common-lisp-controller/root/ecl/asdf/asdf.lisp" :type :fas)
;;; Loading #P"/home/jlr/lib/ecl/cmp.fas"
;;; Loading #P"/home/jlr/lib/ecl/sysfun.lsp"
#P"/var/cache/common-lisp-controller/root/ecl/asdf/asdf.fas"

Juanjo





More information about the ecl-devel mailing list