summaryrefslogtreecommitdiffstats
path: root/2025/talks/schemacs.md
blob: 62ca53215a61562517d46aaa8e4695d509552411 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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"]]