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 308e3ab1db Disallow string data resizing (bug#79784)
Only allow string mutation that is certain not to require string data to
be resized and reallocated: writing bytes into a unibyte string, and
changing ASCII to ASCII in a multibyte string.

This ensures that mutation will never transform a unibyte string to
multibyte, that the size of a string in bytes never changes, and that
the byte offsets of characters remain the same.  Most importantly, it
removes a long-standing obstacle to reform of string representation and
allow for future performance improvements.

* src/data.c (Faset): Disallow resizing string mutation.
* src/fns.c (clear_string_char_byte_cache):
* src/alloc.c (resize_string_data):  Remove.
* test/src/data-tests.el (data-aset-string): New test.
* test/lisp/subr-tests.el (subr--subst-char-in-string):
Skip error cases.
* test/src/alloc-tests.el (aset-nbytes-change):
Remove test that is no longer relevant.
* doc/lispref/strings.texi (Modifying Strings):
* doc/lispref/sequences.texi (Array Functions):
* doc/lispref/text.texi (Substitution):  Update manual.
* etc/NEWS: Announce.
2025-08-24 10:28:27 +02:00
..
abbrevs.texi Update copyright year to 2025 2025-01-02 18:39:42 +01:00
anti.texi Update copyright year to 2025 2025-01-02 18:39:42 +01:00
back.texi Update copyright year to 2025 2025-01-02 18:39:42 +01:00
backups.texi Rename variables *-in-progress-p to *-in-progress 2025-08-09 14:21:23 +02:00
book-spine.texi
buffers.texi Move documentation of this-command buffer display condition entry 2025-05-02 12:49:35 +08:00
ChangeLog.1 ; Delete troff markers from ChangeLog files 2025-02-20 02:46:43 +01:00
commands.texi Merge from origin/emacs-30 2025-03-24 10:41:45 +08:00
compile.texi ; Grammar fixes for "native-compiled" 2025-02-28 20:20:55 +01:00
control.texi * doc/lispref/control.texi (cond* Macro): Update bind* entry 2025-08-23 16:03:46 +03:00
customize.texi ; Fix cross-references in Texinfo manuals 2025-01-19 08:23:23 +02:00
debugging.texi Update copyright year to 2025 2025-01-02 18:39:42 +01:00
display.texi Update documentation and NEWS with SVG changes (bug#77841) 2025-07-10 17:54:33 +01:00
doclicense.texi
edebug.texi Merge from origin/emacs-30 2025-08-23 10:30:47 -04:00
elisp.texi ; Fix documentation of last change (bug#78844) 2025-07-12 10:11:09 +03:00
elisp_type_hierarchy.jpg Run admin/syncdoc-type-hierarchy.el 2024-04-23 15:39:28 +02:00
elisp_type_hierarchy.txt Run admin/syncdoc-type-hierarchy.el 2024-04-23 15:39:28 +02:00
errors.texi Update copyright year to 2025 2025-01-02 18:39:42 +01:00
eval.texi Update copyright year to 2025 2025-01-02 18:39:42 +01:00
files.texi Merge from origin/emacs-30 2025-08-02 11:13:41 -04:00
frames.texi Add frame parameter which allows border transparency 2025-07-26 18:02:18 +03:00
functions.texi Implement new autoload macro expansion declare form 2025-08-10 18:14:23 -04:00
gpl.texi
hash.texi New function 'hash-table-contains-p' 2025-03-29 14:59:36 +01:00
help.texi Lisp Reference Manual: Index standard symbol properties. 2025-01-12 20:16:00 -08:00
hooks.texi Update copyright year to 2025 2025-01-02 18:39:42 +01:00
index.texi
internals.texi Merge from origin/emacs-30 2025-08-02 11:13:41 -04:00
intro.texi Update copyright year to 2025 2025-01-02 18:39:42 +01:00
keymaps.texi Merge from savannah/emacs-30 2025-03-16 20:14:48 +08:00
lay-flat.texi Update copyright year to 2025 2025-01-02 18:39:42 +01:00
lists.texi Avoid double spaces around abbrevations in Texinfo 2025-01-24 23:10:23 +01:00
loading.texi Implement new autoload macro expansion declare form 2025-08-10 18:14:23 -04:00
macros.texi Update copyright year to 2025 2025-01-02 18:39:42 +01:00
Makefile.in Update copyright year to 2025 2025-01-02 18:39:42 +01:00
maps.texi Update copyright year to 2025 2025-01-02 18:39:42 +01:00
markers.texi Update copyright year to 2025 2025-01-02 18:39:42 +01:00
minibuf.texi ; Fix last change. 2025-06-08 21:58:18 +02:00
modes.texi Correctly document the format of tabulated-list-groups 2025-08-21 19:44:48 +03:00
nonascii.texi Fix the values and documentation of 'printable-chars' table 2025-02-28 16:22:30 +02:00
numbers.texi Merge from origin/emacs-30 2025-03-01 09:59:08 -05:00
objects.texi ; Improve type specifier documentation 2025-03-25 23:44:01 +01:00
os.texi Load site-start.el before early-init.el 2025-06-24 17:33:39 +01:00
package.texi ; Fix documentation of last change (bug#78844) 2025-07-12 10:11:09 +03:00
parsing.texi ; * doc/lispref/parsing.texi (Using Parser): Fix wording. 2025-07-09 15:43:00 +03:00
peg.texi peg.texi: Fix bug#76555 even a bit more 2025-03-27 08:59:33 -04:00
positions.texi Update copyright year to 2025 2025-01-02 18:39:42 +01:00
processes.texi Add function exec-suffixes 2025-07-22 17:47:38 +02:00
README Update copyright year to 2025 2025-01-02 18:39:42 +01:00
records.texi Update copyright year to 2025 2025-01-02 18:39:42 +01:00
searching.texi Merge from origin/emacs-30 2025-05-31 08:29:51 -04:00
sequences.texi Disallow string data resizing (bug#79784) 2025-08-24 10:28:27 +02:00
spellfile Make 'purecopy' an obsolete function alias for 'identity' 2024-12-12 22:48:21 +01:00
streams.texi Improve Vprint_variable_mapping 2025-08-09 15:34:51 +03:00
strings.texi Disallow string data resizing (bug#79784) 2025-08-24 10:28:27 +02:00
symbols.texi Merge from origin/emacs-30 2025-02-01 07:40:19 -05:00
syntax.texi Avoid double spaces around abbrevations in Texinfo 2025-01-24 23:10:23 +01:00
text.texi Disallow string data resizing (bug#79784) 2025-08-24 10:28:27 +02:00
threads.texi Allow thread's buffer to be killed, by default 2025-08-09 22:40:07 +03:00
tips.texi Merge from origin/emacs-30 2025-05-10 07:40:30 -04:00
two-volume-cross-refs.txt Update copyright year to 2025 2025-01-02 18:39:42 +01:00
two-volume.make Update copyright year to 2025 2025-01-02 18:39:42 +01:00
variables.texi Merge from origin/emacs-30 2025-05-17 06:52:01 -04:00
windows.texi Merge from origin/emacs-30 2025-07-26 06:58:12 -04: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-2025 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/>.