
Hello, sorry to reply so late, the clc bug had me in its grip On Tuesday 30 August 2005 09:26, René van Bevern wrote:
More generally, shouldn't the CL-Debian project start thinking about deployment of applications? It seems completely oriented to libraries right now.
This is where implementations put some restrictions. Deploying Common Lisp applications is generally difficult.
I've put some numbers to the different options (for clisp and for cedilla that is) (time is the best of 3 itterations after one warm-up) - Using clc-require with a script (like it is done now) $ time /usr/bin/cedilla Cedilla: Wrong number of arguments -- try "cedilla -?" for help. real 0m1.530s user 0m1.296s sys 0m0.160s - Concatenated all the fasls (in the right order) into one: $ time clisp -ansi -q -q -x '(load "c.fas")' -x '(cedilla:cedilla-main)' T Cedilla: Wrong number of arguments -- try "cedilla -?" for help. real 0m1.255s user 0m1.004s sys 0m0.048s - Dumping an image after loading the fasls: $ time clisp -ansi -q -q -M c.mem Cedilla: Wrong number of arguments -- try "cedilla -?" for help. real 0m0.137s user 0m0.056s sys 0m0.028s So the only real improvement over clc-require is to dump a memory image.
b) One could use the cl-libraries as build-depends, compile the application and dump an image to be loaded when the application is run. This is very fast, but if one of the cl-libraries has a real bug and it is fixed, the delivered application needs to be rebuilt to carry its new version in the dumped image. mcvs uses this approach and even delivers a whole clisp in its package. Applications delivered this way get huge in size, let alone the fact that you can not always load a dumped image that depends on foreign shared library code.
We could enhance clc to generate dependency information when building an application and when installing libraries remove all stuff depending on them. But the problem of foreign libraries remain, and in general the creation of a dumped image is difficult at best. I propose that for the moment Common Lisp applications dump manually: they will have a 'natural' implementation anyway so writing non-portable code is no problem. I will try to enhance clc to export a function writing the dependency information and nuking the cache directory when installing a library that depends on it. If we detect patterns of usage after a while we could code that up. With the dumping of images cedilla would be competitive with the startup time of other utilities: $ time groff /dev/null real 0m0.161s user 0m0.084s sys 0m0.016s Comments? Groetjes, Peter -- signature -at- pvaneynd.mailworks.org http://www.livejournal.com/users/pvaneynd/ "God, root, what is difference?" Pitr | "God is more forgiving." Dave Aronson|