summaryrefslogtreecommitdiff
path: root/lang/elisp/STATUS
diff options
context:
space:
mode:
Diffstat (limited to 'lang/elisp/STATUS')
-rw-r--r--lang/elisp/STATUS35
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.