publication . Other literature type . Conference object . Preprint . 2020

Bringing GNU Emacs to Native Code

Corallo, Andrea; Nassi, Luca; Manca, Nicola;
Open Access English
  • Published: 27 Apr 2020
  • Publisher: Zenodo
Abstract
Emacs Lisp (Elisp) is the Lisp dialect used by the Emacs text editor family. GNU Emacs can currently execute Elisp code either interpreted or byte-interpreted after it has been compiled to byte-code. In this work we discuss the implementation of an optimizing compiler approach for Elisp targeting native code. The native compiler employs the byte-compiler's internal representation as input and exploits libgccjit to achieve code generation using the GNU Compiler Collection (GCC) infrastructure. Generated executables are stored as binary files and can be loaded and unloaded dynamically. Most of the functionality of the compiler is written in Elisp itself, including...
Subjects
ACM Computing Classification System: Software_PROGRAMMINGLANGUAGESHardware_CONTROLSTRUCTURESANDMICROPROGRAMMING
free text keywords: GNU Emacs, Elisp, GCC, libgccjit, Computer Science - Programming Languages, D.3.4
Download fromView all 4 versions
Zenodo
Other literature type . 2020
Provider: Datacite
Zenodo
Other literature type . 2020
Provider: Datacite
ZENODO
Conference object . 2020
Provider: ZENODO
31 references, page 1 of 3

[1] American National Standards Institute and Computer and Business Equipment Manufacturers Association. Draft proposed American National Standard programming language Common LISP: X3.226-199x: Draft 12.24, X3J13/92-102. pub-CBEMA, pub-CBEMA:adr, July 1992. July 1, 1992.

[2] Giuseppe Attardi. The embeddable common lisp. Pap. 4th Int. Conf. LISP Users Vendors, LUV 1994, 8(1):30-41, 1995. doi: 10.1145/224139.1379849. [OpenAIRE]

[3] Rocky Bernstein. GNU Emacs Lisp Bytecode Reference Manual, 2018. URL https: //rocky.github.io/elisp-bytecode.pdf.

[4] Keith Cooper, Timothy Harvey, and Ken Kennedy. A simple, fast dominance algorithm. Rice University, CS Technical Report 06-33870, 01 2006.

[5] Andrea Corallo and Luca Nassi. Elisp benchmarks collection. URL https://elpa. gnu.org/packages/elisp-benchmarks.html.

[6] Emacs Developer Community. Gnu emacs lisp package archive. URL https: //elpa.gnu.org/.

[7] National Institute for Research in Digital Science and Technology, editors. Static Single Assignment Book. 2018. URL http://ssabook.gforge.inria.fr/latest/book.pdf.

[8] GCC Developer Community. GIMPLE - GNU GCC Internals. URL https://gcc. gnu.org/onlinedocs/gccint/GIMPLE.html.

[9] GNU Common LISP Developer Community. GNU Common LISP. URL https: //www.gnu.org/software/gcl.

[10] Jafer, Aubrey and Lord, Tom and Bader, Miles and GNU Project. Gnu ubiquitous intelligent language for extensions (gnu guile). URL https://www.gnu.org/ software/guile/.

[11] Chris Lattner and LLVM Foundation. LLVM. URL https://llvm.org.

[12] Robert A. MacLachlan. The Python compiler for CMU Common Lisp. In Proc. 1992 ACM Conf. LISP Funct. Program. - LFP '92, pages 235-246, New York, New York, USA, 1992. ACM Press. ISBN 0897914813. doi: 10.1145/141471.141558. URL http://portal.acm.org/citation.cfm?doid=141471.141558.

[13] David Malcolm and GCC Developer Community. LibJIT, . URL https://www.gnu. org/software/libjit/.

[14] David Malcolm and GCC Developer Community. LibgccJIT, . URL https://gcc. gnu.org/onlinedocs/jit.

[15] Stefan Monnier and Michael Sperber. Evolution of emacs lisp. 2018. URL https://www.iro.umontreal.ca/~monnier/hopl-4-emacs-lisp.pdf.

31 references, page 1 of 3
Abstract
Emacs Lisp (Elisp) is the Lisp dialect used by the Emacs text editor family. GNU Emacs can currently execute Elisp code either interpreted or byte-interpreted after it has been compiled to byte-code. In this work we discuss the implementation of an optimizing compiler approach for Elisp targeting native code. The native compiler employs the byte-compiler's internal representation as input and exploits libgccjit to achieve code generation using the GNU Compiler Collection (GCC) infrastructure. Generated executables are stored as binary files and can be loaded and unloaded dynamically. Most of the functionality of the compiler is written in Elisp itself, including...
Subjects
ACM Computing Classification System: Software_PROGRAMMINGLANGUAGESHardware_CONTROLSTRUCTURESANDMICROPROGRAMMING
free text keywords: GNU Emacs, Elisp, GCC, libgccjit, Computer Science - Programming Languages, D.3.4
Download fromView all 4 versions
Zenodo
Other literature type . 2020
Provider: Datacite
Zenodo
Other literature type . 2020
Provider: Datacite
ZENODO
Conference object . 2020
Provider: ZENODO
31 references, page 1 of 3

[1] American National Standards Institute and Computer and Business Equipment Manufacturers Association. Draft proposed American National Standard programming language Common LISP: X3.226-199x: Draft 12.24, X3J13/92-102. pub-CBEMA, pub-CBEMA:adr, July 1992. July 1, 1992.

[2] Giuseppe Attardi. The embeddable common lisp. Pap. 4th Int. Conf. LISP Users Vendors, LUV 1994, 8(1):30-41, 1995. doi: 10.1145/224139.1379849. [OpenAIRE]

[3] Rocky Bernstein. GNU Emacs Lisp Bytecode Reference Manual, 2018. URL https: //rocky.github.io/elisp-bytecode.pdf.

[4] Keith Cooper, Timothy Harvey, and Ken Kennedy. A simple, fast dominance algorithm. Rice University, CS Technical Report 06-33870, 01 2006.

[5] Andrea Corallo and Luca Nassi. Elisp benchmarks collection. URL https://elpa. gnu.org/packages/elisp-benchmarks.html.

[6] Emacs Developer Community. Gnu emacs lisp package archive. URL https: //elpa.gnu.org/.

[7] National Institute for Research in Digital Science and Technology, editors. Static Single Assignment Book. 2018. URL http://ssabook.gforge.inria.fr/latest/book.pdf.

[8] GCC Developer Community. GIMPLE - GNU GCC Internals. URL https://gcc. gnu.org/onlinedocs/gccint/GIMPLE.html.

[9] GNU Common LISP Developer Community. GNU Common LISP. URL https: //www.gnu.org/software/gcl.

[10] Jafer, Aubrey and Lord, Tom and Bader, Miles and GNU Project. Gnu ubiquitous intelligent language for extensions (gnu guile). URL https://www.gnu.org/ software/guile/.

[11] Chris Lattner and LLVM Foundation. LLVM. URL https://llvm.org.

[12] Robert A. MacLachlan. The Python compiler for CMU Common Lisp. In Proc. 1992 ACM Conf. LISP Funct. Program. - LFP '92, pages 235-246, New York, New York, USA, 1992. ACM Press. ISBN 0897914813. doi: 10.1145/141471.141558. URL http://portal.acm.org/citation.cfm?doid=141471.141558.

[13] David Malcolm and GCC Developer Community. LibJIT, . URL https://www.gnu. org/software/libjit/.

[14] David Malcolm and GCC Developer Community. LibgccJIT, . URL https://gcc. gnu.org/onlinedocs/jit.

[15] Stefan Monnier and Michael Sperber. Evolution of emacs lisp. 2018. URL https://www.iro.umontreal.ca/~monnier/hopl-4-emacs-lisp.pdf.

31 references, page 1 of 3
Any information missing or wrong?Report an Issue