[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

16. Byte Compilation

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.

Compiling a Lisp file with the Emacs byte compiler always reads the file as multibyte text, even if Emacs was started with `--unibyte', unless the file specifies otherwise. This is so that compilation gives results compatible with running the same file without compilation. See section 15.3 Loading Non-ASCII Characters.

In general, any version of Emacs can run byte-compiled code produced by recent earlier versions of Emacs, but the reverse is not true. A major incompatible change was introduced in Emacs version 19.29, and files compiled with versions since that one will definitely not run in earlier versions unless you specify a special option. In addition, the modifier bits in keyboard characters were renumbered in Emacs 19.29; as a result, files compiled in versions before 19.29 will not work in subsequent versions if they contain character constants with modifier bits.

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

16.1 Performance of Byte-Compiled Code  An example of speedup from byte compilation.
16.2 The Compilation Functions  Byte compilation functions.
16.3 Documentation Strings and Compilation  Dynamic loading of documentation strings.
16.4 Dynamic Loading of Individual Functions  Dynamic loading of individual functions.
16.5 Evaluation During Compilation  Code to be evaluated when you compile.
16.6 Byte-Code Function Objects  The data type used for byte-compiled functions.
16.7 Disassembled Byte-Code  Disassembling byte-code; how to read byte-code.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated on May 2, 2002 using texi2html