mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-11 22:31:12 +02:00
* module/language/elisp/README: Document the change. * module/language/elisp/compile-tree-il.scm: Add disable-void-check option. * test-suite/tests/elisp-compiler.test: Test it. |
||
---|---|---|
.. | ||
runtime | ||
bindings.scm | ||
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 * set, symbol-value, makunbound, boundp functions * fset, symbol-function, fmakunbound, fboundp * while, dotimes, dolist * catch, throw, unwind-protect * 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: * real elisp reader instead of Scheme's * more general built-ins * funcall and apply functions * advice? * defsubst and inlining * recursive macros * anonymous macros Other ideas and things to think about: * %nil vs. #f/'() handling in Guile * lexical-let and/or optional lexical binding as extensions * compiler options for all lexical binding Compiler options implemented: * #:disable-void-check ['all / '(sym1 sym2 sym3)] to disable the check for void value on access either completely or for some symbols Extensions over original elisp: * (guile-ref module symbol) construct to build a (@ module symbol) from elisp * flet and flet*