Go to the first, previous, next, last section, table of contents.


Byte Compilation

GNU Emacs Lisp has a compiler that translates functions written in Lisp into a special representation called byte-code that can be executed more efficiently. The compiler replaces Lisp function definitions with byte-code. When a byte-code function is called, its definition is evaluated by the byte-code interpreter.

Because the byte-compiled code is evaluated by the byte-code interpreter, instead of being executed directly by the machine's hardware (as true compiled code is), byte-code is completely transportable from machine to machine without recompilation. It is not, however, as fast as true compiled code.

In general, any version of Emacs can run byte-compiled code produced by recent earlier versions of Emacs, but the reverse is not true. In particular, if you compile a program with Emacs 19.29, the compiled code does not run in earlier versions. See section Documentation Strings and Compilation. Files compiled in versions before 19.29 may not work in 19.29 if they contain character constants with modifier bits, because the bits were renumbered in Emacs 19.29.

See section Debugging Problems in Compilation, for how to investigate errors occurring in byte compilation.


Go to the first, previous, next, last section, table of contents.