Andy Piper wrote:
My biggest concern with this is that for me the slowness of XEmacs
is
manifest in the *loading* not the *execution*.
The loading may be slow, but there is room for the execution speed of
elisp to be dramatically improved. How much can be done without
lexical scope is a different matter, though.
One thing I wondered about (and this may be fantasy on my part) was
to
combine dynamic linking with compiled lisp (aka the new unexec?) so that
lisp packages could be optionally compiled to C and stored as a set of
dll/so's. Then loading packages would be extremely swift since they would
simply by linked into a running XEmacs. I guess this might require some
rearchitecting of the internal lisp engine.
I have doubts whether such a scheme would be practical, due to the
fact that the state of a Lisp engine is basically just one big
directed graph.
Either you would need to relocate all of the pointers (and Lisp code
is primarily pointers) when you load the library, or every object
which is referenced from the library would have to have a specific
address, which was known when the Lisp was compiled.
The latter option would basically involve dumping all of the Lisp code
into one massive binary, and then splitting the resulting binary data
into package-sized chunks.
Also, without lexical scope it's debatable as to how much effect
compilation would actually have.
--
Glynn Clements <glynn(a)sensei.co.uk>