comparison lispref/compile.texi @ 90105:7e3f621f1dd4

Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-15 Merge from emacs--cvs-trunk--0 Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-95 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-96 Move Gnus images into etc/images * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-97 - miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-105 Update from CVS * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-14 Merge from emacs--cvs-trunk--0 * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-15 Update from CVS: lisp/imap.el (imap-log): Doc fix. * miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-16 Merge from emacs--cvs-trunk--0
author Miles Bader <miles@gnu.org>
date Fri, 18 Feb 2005 00:41:50 +0000
parents 4c90ffeb71c5 fafa7c0e2b82
children b7da78284d4c
comparison
equal deleted inserted replaced
90104:a01e7a9f1659 90105:7e3f621f1dd4
25 unless the file specifies otherwise. This is so that compilation gives 25 unless the file specifies otherwise. This is so that compilation gives
26 results compatible with running the same file without compilation. 26 results compatible with running the same file without compilation.
27 @xref{Loading Non-ASCII}. 27 @xref{Loading Non-ASCII}.
28 28
29 In general, any version of Emacs can run byte-compiled code produced 29 In general, any version of Emacs can run byte-compiled code produced
30 by recent earlier versions of Emacs, but the reverse is not true. A 30 by recent earlier versions of Emacs, but the reverse is not true.
31 major incompatible change was introduced in Emacs version 19.29, and
32 files compiled with versions since that one will definitely not run
33 in earlier versions unless you specify a special option.
34 @iftex
35 @xref{Docs and Compilation}.
36 @end iftex
37 In addition, the modifier bits in keyboard characters were renumbered in
38 Emacs 19.29; as a result, files compiled in versions before 19.29 will
39 not work in subsequent versions if they contain character constants with
40 modifier bits.
41 31
42 @vindex no-byte-compile 32 @vindex no-byte-compile
43 If you do not want a Lisp file to be compiled, ever, put a file-local 33 If you do not want a Lisp file to be compiled, ever, put a file-local
44 variable binding for @code{no-byte-compile} into it, like this: 34 variable binding for @code{no-byte-compile} into it, like this:
45 35
120 byte-compile. Macro calls are expanded when they are compiled, so the 110 byte-compile. Macro calls are expanded when they are compiled, so the
121 macros must already be defined for proper compilation. For more 111 macros must already be defined for proper compilation. For more
122 details, see @ref{Compiling Macros}. If a program does not work the 112 details, see @ref{Compiling Macros}. If a program does not work the
123 same way when compiled as it does when interpreted, erroneous macro 113 same way when compiled as it does when interpreted, erroneous macro
124 definitions are one likely cause (@pxref{Problems with Macros}). 114 definitions are one likely cause (@pxref{Problems with Macros}).
115 Inline (@code{defsubst}) functions are less troublesome; if you
116 compile a call to such a function before its definition is known, the
117 call will still work right, it will just run slower.
125 118
126 Normally, compiling a file does not evaluate the file's contents or 119 Normally, compiling a file does not evaluate the file's contents or
127 load the file. But it does execute any @code{require} calls at top 120 load the file. But it does execute any @code{require} calls at top
128 level in the file. One way to ensure that necessary macro definitions 121 level in the file. One way to ensure that necessary macro definitions
129 are available during compilation is to require the file that defines 122 are available during compilation is to require the file that defines
311 However, if you have built Emacs yourself and use it from the 304 However, if you have built Emacs yourself and use it from the
312 directory where you built it, you will experience this problem 305 directory where you built it, you will experience this problem
313 occasionally if you edit and recompile Lisp files. When it happens, you 306 occasionally if you edit and recompile Lisp files. When it happens, you
314 can cure the problem by reloading the file after recompiling it. 307 can cure the problem by reloading the file after recompiling it.
315 308
316 Byte-compiled files made with recent versions of Emacs (since 19.29) 309 You can turn off this feature at compile time by setting
317 will not load into older versions because the older versions don't 310 @code{byte-compile-dynamic-docstrings} to @code{nil}; this is useful
318 support this feature. You can turn off this feature at compile time by 311 mainly if you expect to change the file, and you want Emacs processes
319 setting @code{byte-compile-dynamic-docstrings} to @code{nil}; then you 312 that have already loaded it to keep working when the file changes.
320 can compile files that will load into older Emacs versions. You can do 313 You can do this globally, or for one source file by specifying a
321 this globally, or for one source file by specifying a file-local binding 314 file-local binding for the variable. One way to do that is by adding
322 for the variable. One way to do that is by adding this string to the 315 this string to the file's first line:
323 file's first line:
324 316
325 @example 317 @example
326 -*-byte-compile-dynamic-docstrings: nil;-*- 318 -*-byte-compile-dynamic-docstrings: nil;-*-
327 @end example 319 @end example
328 320