Changes between Initial Version and Version 1 of Ticket #6781

08/22/09 00:03:40 (10 years ago)


  • Ticket #6781 – Description

    initial v1  
    88The collector will not scan the data sectors. If you embed ECL in another program, or link libraries with ECL, you will have to notify ECL which variables point to lisp objects.
    10 So, cython wrapper objects that keep track of an object under ECL memory management will have to do something, but the manual doesn't say what.
     10SOLUTION: Boehm does look on the stack for pointers, so the only objects in danger are on the heap, outside of Boehm's control. The easiest solution is to place pointers somewhere in a list or a vector inside lisp's control (in some global variable).
    12 2. Maxima currently gets built as a stand-alone executable. Somewhere in the build process, there must exist a lisp-environment that has Maxima built but not running. In order to communicate with maxima as a library (via ECL's API), one would have to get such an image. It does look like Maxima just store its state in LISP's global state, so just calling maxima routines from LISP should work.
     122. Maxima currently gets built as a stand-alone executable. We need Maxima loaded, but not running.
     14SOLUTION: It is possible to extract the right kind of image.
     15 a) remove the last line from  init-cl.lisp, since this starts
     16    maxima's read-eval-print loop
     17 b) start ecl and run:
     18    (require 'asdf)
     19    (load "maxima-build.lisp")
     20    (asdf:make-build :maxima :type :fasl)
     21 c) this produces a file "maxima.fasb" that can be loaded into ecl
     22    after (require 'asdf)
     243. ecl installs a signal and error handler that wreaks havoc with
     25the sage environment. It should be possible to turn the error handler / debugger off via common lisp. The signal handler needs to be handled separately
     274. after ecl has run in sage, exit triggers a segfault.