1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-06 06:20:55 -08:00
emacs/doc/lispref
Mattias Engdegård 9bcc9690a8 Eliminate lazy bytecode loading
The obsolete lazy-loaded bytecode feature, enabled by
`byte-compile-dynamic`, slows down Lisp execution even when not in use
because every call to a bytecode function has to check that function
for laziness.

This change forces up-front loading of all lazy bytecode so that we
can remove all those checks.  (Dynamically loaded doc strings are not
affected.)

There is no point in generating lazy bytecode any more so we stop
doing that; this simplifies the compiler.  `byte-compile-dynamic` now
has no effect.

This is a fully compatible change; the few remaining users of
`byte-compile-dynamic` should not notice any difference.

* src/lread.c (bytecode_from_rev_list): Force eager loading of
lazy bytecode.
* src/bytecode.c (exec_byte_code): Remove lazy bytecode checks.
* src/eval.c (fetch_and_exec_byte_code, Ffetch_bytecode): Remove.
(funcall_lambda): Call exec_byte_code directly, avoiding checks.
* lisp/subr.el (fetch-bytecode): New definition, obsolete no-op.
* lisp/emacs-lisp/disass.el (disassemble-1):
* lisp/emacs-lisp/bytecomp.el (byte-compile-unfold-bcf):
Remove calls to fetch-bytecode.
(byte-compile-dynamic): Update doc string.
(byte-compile-close-variables, byte-compile-from-buffer)
(byte-compile-insert-header, byte-compile-output-file-form)
(byte-compile--output-docform-recurse, byte-compile-output-docform)
(byte-compile-file-form-defmumble):
Remove effects of byte-compile-dynamic.
* doc/lispref/compile.texi (Dynamic Loading): Remove node now that
the entire `byte-compile-dynamic` facility has been rendered inert.
* etc/NEWS: Announce changes.
2024-01-31 17:12:25 +01:00
..
abbrevs.texi ; Add 2024 to copyright years 2024-01-02 09:47:10 +08:00
anti.texi ; Add 2024 to copyright years 2024-01-02 09:47:10 +08:00
back.texi ; Add 2024 to copyright years 2024-01-02 09:47:10 +08:00
backups.texi ; Add 2024 to copyright years 2024-01-02 09:47:10 +08:00
book-spine.texi
buffers.texi ; * doc/lispref/buffers.texi (Buffer List): Fix merge snafu. 2024-01-06 15:25:29 +02:00
ChangeLog.1 Merge from savannah/emacs-29 2024-01-02 10:28:14 +08:00
commands.texi Take stock of the wheel-up/down confusion 2024-01-24 12:57:33 -05:00
compile.texi Eliminate lazy bytecode loading 2024-01-31 17:12:25 +01:00
control.texi ; Minor copyedits of doc of 'handler-bind' 2024-01-06 12:44:26 +02:00
customize.texi ; Add 2024 to copyright years 2024-01-02 09:47:10 +08:00
debugging.texi Improve documentation of profiler commands 2024-01-24 21:34:16 +02:00
display.texi Merge from savannah/emacs-29 2024-01-02 10:28:14 +08:00
doclicense.texi Merge from Gnulib 2017-10-01 18:31:10 -07:00
edebug.texi Merge from savannah/emacs-29 2024-01-02 10:28:14 +08:00
elisp.texi Eliminate lazy bytecode loading 2024-01-31 17:12:25 +01:00
errors.texi ; Add 2024 to copyright years 2024-01-02 09:47:10 +08:00
eval.texi eval.c: Add new var lisp-eval-depth-reserve 2024-01-04 16:36:22 -05:00
files.texi Merge from savannah/emacs-29 2024-01-02 10:28:14 +08:00
frames.texi Merge from savannah/emacs-29 2024-01-02 10:28:14 +08:00
functions.texi Merge from origin/emacs-29 2024-01-13 05:36:16 -05:00
gpl.texi Merge from Gnulib 2017-10-01 18:31:10 -07:00
hash.texi Clarify permitted mutation in maphash documentation 2024-01-21 11:21:51 +01:00
help.texi Merge from savannah/emacs-29 2024-01-02 10:28:14 +08:00
hooks.texi ; Add 2024 to copyright years 2024-01-02 09:47:10 +08:00
index.texi
internals.texi Merge from origin/emacs-29 2024-01-13 05:36:16 -05:00
intro.texi ; Add 2024 to copyright years 2024-01-02 09:47:10 +08:00
keymaps.texi Merge from savannah/emacs-29 2024-01-02 10:28:14 +08:00
lay-flat.texi ; Add 2024 to copyright years 2024-01-02 09:47:10 +08:00
lists.texi Merge from savannah/emacs-29 2024-01-02 10:28:14 +08:00
loading.texi Merge from savannah/emacs-29 2024-01-02 10:28:14 +08:00
macros.texi ; Add 2024 to copyright years 2024-01-02 09:47:10 +08:00
Makefile.in ; Add 2024 to copyright years 2024-01-02 09:47:10 +08:00
maps.texi ; Add 2024 to copyright years 2024-01-02 09:47:10 +08:00
markers.texi ; Add 2024 to copyright years 2024-01-02 09:47:10 +08:00
minibuf.texi Support :category in completion-extra-properties (bug#68214) 2024-01-10 09:34:47 +02:00
modes.texi Improve documentation of derived modes and their parents 2024-01-05 09:38:58 +02:00
nonascii.texi Merge from savannah/emacs-29 2024-01-02 10:28:14 +08:00
numbers.texi Merge from savannah/emacs-29 2024-01-02 10:28:14 +08:00
objects.texi Merge from origin/emacs-29 2024-01-27 08:14:31 -05:00
os.texi Merge from origin/emacs-29 2024-01-27 08:14:31 -05:00
package.texi ; Fix last change in package.texi 2024-01-28 07:43:25 +02:00
parsing.texi Merge from savannah/emacs-29 2024-01-02 10:28:14 +08:00
positions.texi Merge from savannah/emacs-29 2024-01-02 10:28:14 +08:00
processes.texi Merge from savannah/emacs-29 2024-01-02 10:28:14 +08:00
README ; Add 2024 to copyright years 2024-01-02 09:47:10 +08:00
records.texi Merge from savannah/emacs-29 2024-01-02 10:28:14 +08:00
searching.texi Merge from savannah/emacs-29 2024-01-02 10:28:14 +08:00
sequences.texi ; Add 2024 to copyright years 2024-01-02 09:47:10 +08:00
spellfile Rewrites of Elisp manual including tab-bar and tab-line changes 2021-10-18 09:58:48 +02:00
streams.texi Merge from origin/emacs-29 2024-01-27 08:14:31 -05:00
strings.texi Fix typo in lispref "Creating Strings" section 2024-01-13 18:08:49 +01:00
symbols.texi Merge from origin/emacs-29 2024-01-13 05:36:16 -05:00
syntax.texi ; Add 2024 to copyright years 2024-01-02 09:47:10 +08:00
text.texi Merge from savannah/emacs-29 2024-01-02 10:28:14 +08:00
threads.texi ; Add 2024 to copyright years 2024-01-02 09:47:10 +08:00
tips.texi Merge from savannah/emacs-29 2024-01-02 10:28:14 +08:00
two-volume-cross-refs.txt ; Add 2024 to copyright years 2024-01-02 09:47:10 +08:00
two-volume.make ; Add 2024 to copyright years 2024-01-02 09:47:10 +08:00
variables.texi Improve handler-bind doc 2024-01-04 16:39:48 -05:00
windows.texi New display action alist entry 'post-command-select-window' (bug#67993) 2024-01-16 18:54:04 +02:00

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Copyright (C) 2001-2024 Free Software Foundation, Inc.  -*- outline -*-
See the end of the file for license conditions.


README for the Emacs Lisp Reference Manual.

* This directory contains the texinfo source files for the Emacs Lisp
Reference Manual.

* Report bugs in the Lisp Manual (or in Emacs) using M-x report-emacs-bug.
To ask questions, use the help-gnu-emacs mailing list.

* The Emacs Lisp Reference Manual is quite large.  It totals around
1100 pages in smallbook format; the info files total around 3.0 megabytes.

* You can format this manual for Info, for printing hardcopy using TeX,
or for HTML.

* You can buy nicely printed copies from the Free Software Foundation.
Buying a manual from the Free Software Foundation helps support our GNU
development work.  See <https://shop.fsf.org/>.
(At time of writing, this manual is out of print.)

* The master file for formatting this manual for Tex is called 'elisp.texi'.
It contains @include commands to include all the chapters that make up
the manual.

* This distribution contains a Makefile that you can use with GNU Make.

** To make an Info file, you need to install Texinfo, then run 'make info'.

** Use 'make elisp.pdf' or 'make elisp.html' to create PDF or HTML versions.


This file is part of GNU Emacs.

GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.