diff options
author | Sacha Chua <sacha@sachachua.com> | 2025-09-26 20:46:41 -0400 |
---|---|---|
committer | Sacha Chua <sacha@sachachua.com> | 2025-09-26 20:46:41 -0400 |
commit | 808fff3b8e0a391b826b333c4771ad0aee058b5c (patch) | |
tree | 5c0fd3ebd751c16fbeaaddda2df35bda0b772ebf /2025/talks/schemacs.md | |
parent | 582777434d8b5562fee9ae5f0f047e0d30b8c847 (diff) | |
download | emacsconf-wiki-808fff3b8e0a391b826b333c4771ad0aee058b5c.tar.xz emacsconf-wiki-808fff3b8e0a391b826b333c4771ad0aee058b5c.zip |
added: blee-lcnt, bookclup-tapas, calc, modern, private-ai, schemacs, weights, zettelkasten
Diffstat (limited to '2025/talks/schemacs.md')
-rw-r--r-- | 2025/talks/schemacs.md | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/2025/talks/schemacs.md b/2025/talks/schemacs.md new file mode 100644 index 00000000..62ca5321 --- /dev/null +++ b/2025/talks/schemacs.md @@ -0,0 +1,90 @@ +[[!meta title="One year progress update Schemacs (formerly Gypsum)"]] +[[!meta copyright="Copyright © 2025 Ramin Honary"]] +[[!inline pages="internal(2025/info/schemacs-nav)" raw="yes"]] + +<!-- Initially generated with emacsconf-publish-talk-page and then left alone for manual editing --> +<!-- You can manually edit this file to update the abstract, add links, etc. ---> + + +# One year progress update Schemacs (formerly Gypsum) +Ramin Honary (he/him) - Pronunciation: "Rah-mean" (hard-H) "Ho-na-ree", Mastodon (preferred): ; blog: <https://tilde.town/~ramin_hal9001>; Codeberg: <https://codeberg.org/ramin_hal9001/schemacs> - SourceHut: <https://sr.ht/~ramin_hal9001> + + + +[[!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"]] + + |