Fork of maxima for make it more embeddable.



There are a number of issues that you don't mention. Perhaps you have
taken care of them?

1. Security. Anyone running Maxima on your server can run arbitrary lisp 
programs
with access to whatever resources the server has.  For example, writing 
or deleting files,
or allocation huge amounts of memory.

2. Depending on how SBCL handles multiple users and global variables, 
they may
interfere with each other.

The most appealing solution to these problems is to run some kind of 
virtual machine.
RJF

On 12/21/2011 10:38 PM, Michael Filonenko wrote:
> Hello;
>
> I try to do web interface for maxima. Web interface must be multiuser.
> First time I used maxima process per user. But sbcl runtime make big
> overhead.
> Second time my web application (hunchentoot&restas stack) load maxima
> using mk:defsystem and make maxima repl thread per user. Every time I
> update sbcl, I need to recompile maxima manually. Also, I daemonize my
> application and I need to control binary-output paths. This are the reasons
> I chose asdf. Also asdf is supported by quicklisp - the most powerful common
> lisp package manager.
> I forked maxima and refactor it to make more embeddable into another
> common lisp application.
>
> Here it is git repo:
> https://github.com/filonenko-mikhail/maxima
>
> Changes
>
>    remove all mk:defsystem
>    remove archive/
>    create full asdf package (main package, share fortran packages)
>    refactor file system
>    refactor set-pathnames function
>    add fortran libraries on-fly compiling (thanks to f2cl/packages/*asd)
>    move quadpack from slatec to standalone package
>
> USING
>
>    git clone git://github.com/filonenko-mikhail/maxima.git
>    cd maxima
>    (pushnew "/path/to/maxima/" asdf:*central-registry*)
>    (ql:quickload :maxima)
>    (cl-user::run)
>      run_testsuite();
>
> You can use this version with restmax web repl for maxima:
> https://github.com/filonenko-mikhail/restmax
>
> Sometimes you can see web repl here: http://asvil.dyndns.info
>