Skip to main content


Progress on my clone of the Emacs Lisp interpreter


This took me three months (a month longer than I had hoped), but I finally have merged it into the main branch!

This patch rewrites the Emacs Lisp lexer and parser in Scheme using Scheme code that is 100% compliant with the #R7RS standard, so it should now work across all compliant Scheme implementations. Previously the old parser relied on #Guile -specific regular expressions.

This patch also implements a new feature where a stack trace is printed when an error occurs. This of course makes debugging much, much easier. Previously the old parser did not keep track of where code evaluation was happening, it simply produced lists without source location information. The new parser constructs an abstract syntax tree (AST) and source locations are attached to the branches of the tree which can be used in error reporting and stack traces.

Next I will make whatever minor tweaks might be necessary to get my Emacs Lisp interpreter run on other Scheme implementations, in particular MIT Scheme, Gambit, Stklos, and Gauche. I would also like to try to get it running on Chicken and Chez, although these are going to be a bit more tricky.

Then I will continue with the task of implementing a new declarative GUI library.

#tech #software #FOSS #FunctionalProgramming #Lisp #Scheme #SchemeLang #EmacsLisp #Emacs #Schemacs #GuileScheme

reshared this

in reply to Ramin Honary

This is TOTALLY BANANAS. What an accomplishment. I congratulate you and I thank you.

Astonishing at #EmacsConf in December to see such (apparently) sudden progress on this front, and from multiple independent efforts!

Who knows where it will all go, but man, it sure would be cool to look back in ten years and see that it all snowballed into something that injects truly long-term sustainability into #Emacs.

This website uses cookies. If you continue browsing this website, you agree to the usage of cookies.