diff options
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"]] + + | 
