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)?


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.