There have been quite a few attempts to re-implement (part of) Emacs'
functionalities in languages other than C, like JEmacs, remacs, and lem. And we
are seeing new efforts in EmacsConf 2024: rune 1, gypsum 2,
and the revived Guilemacs 3. (Strictly speaking, Guilemacs is more
a fork than a total rewrite, but anyway.)
However, a complete rewrite of (GNU) Emacs has always seemed like an
insurmountable task, not just because writing editors is hard. This article
aims to look into some of these difficulties and the Emacs designs (that of
course have been exposed in some Emacs Lisp API) that lead to them.