[[!meta title="One year progress update Schemacs (formerly Gypsum)"]] [[!meta copyright="Copyright © 2025 Ramin Honary"]] [[!inline pages="internal(2025/info/schemacs-nav)" raw="yes"]] # One year progress update Schemacs (formerly Gypsum) Ramin Honary (he/him) - Pronunciation: "Rah-mean" (hard-H) "Ho-na-ree", Mastodon (preferred): ; blog: ; Codeberg: - SourceHut: [[!inline pages="internal(2025/info/schemacs-before)" raw="yes"]] During EmacsConf 2024 last year I presented my work on a clone of GNU Emacs written in Scheme which also clones the Emacs Lisp programming language. In this talk, I will briefly present an overview of the project similar to the talk I gave last year, and then discuss the progress that I have made on this project in the past year. To quote the description from the presentation I gave last year: > Unlike other editors which only clone the Emacs > keybindings (Edwin, Jed, jEdit, Jove, Lem, MG, Yi, > Zile), I hope my Emacs clone will also fully clone the > Emacs Lisp programming language well enough that many of > the packages in ELPA, Non-GNU ELPA, and perhaps even > MELPA, can be used in [Schemacs, formerly "Gypsum"] > without any modification. I would also like to talk a > little bit about how I am implementing it (the software > architecture), and invite others to contribute. > > I think my project is of interest to many Emacs users > because, firstly, I have personally spoken with a > relatively large number of people who have expressed > interest in making Emacs programmable in Scheme. > Secondly, there is a good amount of prior art for Scheme > implementations of Emacs. There are even builds of Emacs > that link to Guile which provides a "scheme-eval" > built-in function that translates between Elisp data > types and Scheme data types. The Guile compiler itself > ships with an Emacs Lisp compiler as well, although it > does not provide enough of Emacs's built-in functions to > be of much use. The progress I have made so far: - Ported all Guile-specific parts of the Emacs Lisp interpreter to fully standards-compliant R7RS Scheme code. The interpreter now runs on a few different Scheme implementations, not just Guile. The GUI remains Guile-only for now. - Implemented a new R7RS-compliant lexer and parser which constructs an Abstract Syntax Tree (AST) data structure, making it easier to find the source of errors and produce informative back traces. - Implemented enough of the Emacs Lisp interpreter to be able to load the "subr.el" source file, this defines what you might call the "core" of the Emacs Lisp language, including macros such as "defun" and "lambda." My primary goal continues to be to make it as easy as possible for other people to contribute to this project. Pretty soon it should be possible to run the Emacs Regression Test suite (ERT) in the cloned Emacs Lisp interpreter. Once this is done, we can run the same test code used during the building and testing GNU Emacs to test Schemacs. Hopefilly then, anyone will be able to select a failing test, write code to make the test pass, and submit a patch. About the speaker: I am Ramin Honary, I am have been professional software engineer for 17 years and I have always had a passion for functional programming languages, especially Haskell and the Lisp family of languages. [[!inline pages="internal(2025/info/schemacs-after)" raw="yes"]] [[!inline pages="internal(2025/info/schemacs-nav)" raw="yes"]]