@article{rmsemacs, author = {Stallman, Richard M.}, title = {{EMACS the Extensible, Customizable Self-Documenting Display Editor}}, year = {1981}, issue_date = {June 1981}, publisher = {Association for Computing Machinery}, address = {New York, NY, USA}, volume = {16}, number = {6}, issn = {0362-1340}, url = {https://doi.org/10.1145/872730.806466}, doi = {10.1145/872730.806466}, abstract = {EMACS is a display editor which is implemented in an interpreted high level language. This allows users to extend the editor by replacing parts of it, to experiment with alternative command languages, and to share extensions which are generally useful. The ease of extension has contributed to the growth of a large set of useful features. This paper describes the organization of the EMACS system, emphasizing the way in which extensibility is achieved and used.This report describes work done at the Artificial Intelligence Laboratory of the Massachusetts Institute of Technology. Support for the laboratory's research is provided in part by the Advanced Research Projects Agency of the Department of Defense under Office of Naval Research contract N00014-80-C-0505.}, journal = {SIGPLAN Not.}, month = apr, pages = {147–156}, numpages = {10} } @inproceedings{nativecomp, author = {Corallo, Andrea and Nassi, Luca and Manca, Nicola}, year = {2020}, month = {04}, pages = {}, title = {{Bringing GNU Emacs to Native Code}}, doi = {10.5281/zenodo.3736363} } @article{evolutionelisp, author = {Monnier, Stefan and Sperber, Michael}, title = {{Evolution of Emacs Lisp}}, year = {2020}, issue_date = {June 2020}, publisher = {Association for Computing Machinery}, address = {New York, NY, USA}, volume = {4}, number = {HOPL}, url = {https://doi.org/10.1145/3386324}, doi = {10.1145/3386324}, abstract = {While Emacs proponents largely agree that it is the world’s greatest text editor, it is almost as much a Lisp machine disguised as an editor. Indeed, one of its chief appeals is that it is programmable via its own programming language. Emacs Lisp is a Lisp in the classic tradition. In this article, we present the history of this language over its more than 30 years of evolution. Its core has remained remarkably stable since its inception in 1985, in large part to preserve compatibility with the many third-party packages providing a multitude of extensions. Still, Emacs Lisp has evolved and continues to do so. Important aspects of Emacs Lisp have been shaped by concrete requirements of the editor it supports as well as implementation constraints. These requirements led to the choice of a Lisp dialect as Emacs’s language in the first place, specifically its simplicity and dynamic nature: Loading additional Emacs packages or changing the ones in place occurs frequently, and having to restart the editor in order to re-compile or re-link the code would be unacceptable. Fulfilling this requirement in a more static language would have been difficult at best. One of Lisp’s chief characteristics is its malleability through its uniform syntax and the use of macros. This has allowed the language to evolve much more rapidly and substantively than the evolution of its core would suggest, by letting Emacs packages provide new surface syntax alongside new functions. In particular, Emacs Lisp can be customized to look much like Common Lisp, and additional packages provide multiple-dispatch object systems, legible regular expressions, programmable pattern-matching constructs, generalized variables, and more. Still, the core has also evolved, albeit slowly. Most notably, it acquired support for lexical scoping. The timeline of Emacs Lisp development is closely tied to the projects and people who have shaped it over the years: We document Emacs Lisp history through its predecessors, Mocklisp and MacLisp, its early development up to the “Emacs schism” and the fork of Lucid Emacs, the development of XEmacs, and the subsequent rennaissance of Emacs development.}, journal = {Proc. ACM Program. Lang.}, month = jun, articleno = {74}, numpages = {55}, keywords = {History of programming languages, Lisp, Emacs Lisp} }