From 808fff3b8e0a391b826b333c4771ad0aee058b5c Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Fri, 26 Sep 2025 20:46:41 -0400 Subject: added: blee-lcnt, bookclup-tapas, calc, modern, private-ai, schemacs, weights, zettelkasten --- 2025/talks/schemacs.md | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 2025/talks/schemacs.md (limited to '2025/talks/schemacs.md') 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"]] + + + + + +# 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"]] + + -- cgit v1.2.3