diff options
Diffstat (limited to 'lang/elisp/STATUS')
-rw-r--r-- | lang/elisp/STATUS | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/lang/elisp/STATUS b/lang/elisp/STATUS new file mode 100644 index 000000000..066e86f24 --- /dev/null +++ b/lang/elisp/STATUS @@ -0,0 +1,35 @@ + -*-text-*- + +I've now finished my currently planned work on the Emacs Lisp +translator in guile-core CVS. + +It works well enough for experimentation and playing around with -- +see the README file for details of what it _can_ do -- but has two +serious restrictions: + +- Most Emacs Lisp primitives are not yet implemented. In particular, + there are no buffer-related primitives. + +- Performance compares badly with Emacs. Using a handful of + completely unscientific tests, I found that Guile was between 2 and + 20 times slower than Emacs. (See the comment in + lang/elisp/example.el for details of tests and results.) + +Interestingly, both these restrictions point in the same direction: +the way forward is to define the primitives by compiling a +preprocessed version of the Emacs source code, not by trying to +implement them in Scheme. (Which, of course, is what Ken Raeburn's +project is already trying to do.) + +Given this conclusion, I expect that most of the translator's Scheme +code will eventually become obsolete, replaced by bits of Emacs C +code. Until then, though, it should have a role: + +- as a guide to the Guile Emacs project on how to interface to the + Elisp support in libguile (notably, usage of `@fop' and `@bind') + +- as a proof of concept and fun thing to experiment with + +- as a working translator that could help us develop our picture of + how we want to integrate translator usage in general with the rest + of Guile. |