Réimplémentations Elisp

12

Emacs implémente un interpréteur pour elisp en C qui sert d' implémentation de référence de facto . Existe-t-il d'autres implémentations d'elisp dans d'autres langues (en particulier Javascript)? Quel est un ensemble minimal de primitives nécessaires pour réimplémenter pleinement elisp? Quelles sont les difficultés essentielles pour ce faire (par exemple, cadrage dynamique)?

Paul Miller
la source
Un bon point de départ serait: en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours Bien que le schéma et elisp aient leurs différences, je pense que ce qui précède est un bon début pour comprendre les éléments fondamentaux nécessaires.
Renan Ranelli

Réponses:

5

Guile Emacs est une implémentation Emacs où l'interpréteur Emacs Lisp original a été remplacé récemment par libguile. Il y a encore des problèmes d'interopérabilité (Guile et Emacs ont des idées différentes sur les chaînes par exemple), mais le code Emacs Lisp existant peut déjà être utilisé (bien qu'avec des régressions de performances plutôt intimidantes).

Alternativement, il y a l' Ejit de nicferrier . Son fichier README décrit les difficultés impliquées, telles que certaines choses ne faisant que du contexte dans Emacs et comment un ensemble minimal de primitives est choisi avant de compiler Emacs Lisp en Javascript. Ce n'est donc pas vraiment une réimplémentation, mais pourrait aider à répondre à vos dernières questions.

wasamasa
la source
Juste une note: Ejit compile en JS, il n'est pas écrit en JS.
Malabarba
Oui, ce paragraphe était destiné à répondre à la question de savoir quel est l'ensemble minimal de primitives, car l'intention est de les reconnaître et de les simplifier autant que possible avant de les compiler en JS. Certaines des difficultés (comme les tampons et leurs propriétés ayant moins de sens) sont également décrites.
wasamasa
2
Je pense que vous voulez pointer du doigt Guile lui-même. Le projet Guile Emacs, tout en étant un cas d'utilisation significatif, est plus une note secondaire ici.
phils