mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-23 04:50:28 +02:00
* module/language/elisp/README: Document it and some further ideas written down. * module/language/elisp/compile-tree-il.scm: Implement prog1, dolist. * module/language/elisp/runtime/macro-slot.scm: prog2 and dotimes. * test-suite/tests/elisp-compiler.test: Test prog1, prog2, dotimes, dolist. |
||
---|---|---|
.. | ||
runtime | ||
compile-tree-il.scm | ||
README | ||
runtime.scm | ||
spec.scm |
Guile's Emacs Lisp compiler =========================== This is more or less a lot of work in progress. Here are some notes as well as status information. Already implemented: * progn, prog1, prog2 * if, cond, when, unless * not, and, or * referencing and setting (setq) variables * while, dotimes, dolist * let, let* * lambda expressions, function calls using list notation * some built-ins (mainly numbers/arithmetic) * defconst, defvar, defun * macros * quotation and backquotation with unquote/unquote-splicing Especially still missing: * catch/throw, unwind-protect * real elisp reader instead of Scheme's * set, makunbound, boundp functions * more general built-ins * funcall and apply functions * fset & friends, defalias functions * advice? * defsubst and inlining * need fluids for function bindings? * recursive macros * anonymous macros Other ideas and things to think about: * %nil vs. #f/'() handling in Guile, possibly get rid of setting empty rest arguments to %nil * don't ensure-fluids for variables known to be let- or argument-bound * or, perhaps, get rid of ensure-fluids over all but rather scan all code for variables and create all needed fluids beforehand