; Update "Antinews" in ELisp manual

* doc/lispref/elisp.texi (Top):
* doc/lispref/anti.texi (Antinews): Update for Emacs 31.
This commit is contained in:
Eli Zaretskii 2026-08-19 17:28:46 +03:00
parent 1988e330c1
commit 0914969e0e
2 changed files with 88 additions and 72 deletions

View file

@ -6,117 +6,133 @@
@c This node must have no pointers.
@node Antinews
@appendix Emacs 29 Antinews
@appendix Emacs 30 Antinews
@c Update the elisp.texi Antinews menu entry with the above version number.
For those users who live backwards in time, here is information about
downgrading to Emacs version 29.4. We hope you will enjoy the greater
downgrading to Emacs version 30.2. We hope you will enjoy the greater
simplicity that results from the absence of many @w{Emacs
@value{EMACSVER}} features.
@itemize @bullet
@item
Mouse wheel events once again follow the platform and window-system
conventions: sometimes they are @code{wheel-up/down} and sometimes
@code{mouse-4/5/6/7}. Lisp programs which use these should once again
be aware of the conventions in effect and behave accordingly.
Lisp strings are now mutable. You can use @code{aset} on unibyte
strings to replace single bytes by multibyte characters, and @code{aset}
on multibyte strings can replace any character by any other character,
regardless if they are ASCII or multibyte non-ASCII@. We feel those
restrictions are un-Emacsy and get in the way of doing all kinds of
exciting things with strings.
@item
The command @code{describe-function} no longer distracts you by showing
unnecessary details like the type of the function's object. Emacs
hackers always know whether a function is a primitive, a native-compiled
Lisp function, or any other kind. Stating the obvious simply wastes the
precious screen estate; as you move into the past, and the typical
dimensions of the screen become smaller, that waste is less and less
justified. So we made the waste smaller.
Buffers that are current to a non-main thread cannot be killed by other
threads. We decided to get rid of the numerous complications which were
needed to allow killing such buffers. If your program needs to kill
such buffers, you will need to use a disciplined approach of first
making some other buffer current to the thread.
@item
The support for styled underline in face attribute was dropped. The
simple underline should be enough; anything else is just code bloat and
creeping featurism. Colorful underlines on TTY frames are no longer
supported for the same reason.
We removed the early detection of faces that inherit from themselves.
As you move back in time, Emacs Lisp programmers become more and more
proficient, so disallowing such tricks feels wrong. Those who don't
know well enough what they are doing will be amply punished by having
their Lisp programs barf at display time or even wedge Emacs cold.
@item
IELM stopped recording its input history. You will no longer be annoyed
by inputs from your past sessions; each session starts with a clean
slate. What can be simpler and easier to remember?
Calling @code{debug} in batch mode now kills Emacs. We decided that
there's no sense in continuing a batch session that entered the
debugger: who and how will debug it, anyway?
For the same reason, @kbd{C-c} in batch mode now always kills Emacs, it
never quits.
@item
You can no longer disable JavaScript in xwidget Webkit sessions. Since
xwidgets are going away in one of the previous Emacs versions, we
decided to make this one step in that direction and get rid of this
complication.
The functions that access and manipulate error descriptors were deleted.
Functions like @code{error-type}, @code{error-slot-value} and others are
useless bloat, since Lisp programs can simply access the data structure
directly, as God intended!
@item
The @code{minibuffer-regexp-mode} was removed. Regular expressions are
just strings, so no fancy mode should be needed for editing them.
We removed @code{frame-initial-p}, as its job can easily be done by
testing several obscure variables and frame parameters.
@item
We removed the Compat package. Forward compatibility for ELPA packages
becomes less and less important as you move back through time, and soon
enough ELPA will disappear entirely. We decided it was prudent to start
preparing for that now.
We've added the @code{redisplay-dont-pause} variable, so we could allow
interrupting a runaway redisplay cycle in one of the past versions of
Emacs.
@item
We are back to interpreting @code{\x} without any following hex digits
as character code zero (@acronym{NUL}), as it always was in Emacs. The
savings in typing due to this alone are enough to justify this
simplification.
There's no longer a guarantee that all the digit characters will have
the @code{digit} (@code{?6}) category. We feel that such silly
consistency robs Lisp programmers of too much fun, whereby they should
discover which digits have this category by trial-and-error.
For the same reason, not all characters belonging to the @code{symbol}
script will have the @code{symbol} (@code{?5}) category.
@item
To keep Emacs clean and elegant, we've removed the ability to show
tooltips for fringe bitmaps. What important information cam be shown on
the fringes, and why would it require tooltips to explain its purpose?
We decided it isn't justified to keep this in past versions of Emacs.
Lisp programs can now easily delete that daemon frame by calling
@code{delete-frame}, as with any other frame. We decided there's no
reason to make a special case for the daemon frames, especially as some
past Emacs version will remove the daemon feature entirely.
@item
Fancy sorting-related facilities, like the @code{value<} function and
keyword arguments for @code{sort}, were deleted as too complex. The
basic @code{sort} function should all that's needed in the years to go.
Lisp files found on @code{load-path} are no longer cached. We intend to
make the @code{load-path} list shorter and shorter as we move to
previous versions of Emacs, so caching files is an unnecessary
complication and bloat of precious memory.
@item
Features related to the inheritance graph of major modes were deemed
unnecessary and thus were dropped. This includes
@code{provided-mode-derived-p}, @code{derived-mode-add-parents}, and
others. We decided that untangling the mode inheritance relationships
by hand facilitates more clear code and makes the intent evident.
The annoying warning about the missing @code{lexical-binding} cookie
when loading Lisp files was removed. This is one more step towards
eventual elimination of lexical binding from Emacs in one of the past
versions.
For the same reason, Lisp files loaded via the @option{-x} and
@option{--script} command-line options no longer use lexical binding by
default.
@item
We removed unnecessary functionality for handling touch screen events,
as touch screens gradually disappear from view as you move back in time.
There's no need to keep obsolete these new inventions in the past.
To keep Emacs clean and elegant, we deleted the @code{setopt-local}
macro. This was one more useless bloat, since it is easy to do the same
using @code{setq-local}, and avoids the annoying warnings about mismatch
between the value and expected type defined by @code{defcustom}.
@item
Various new functions and variables for moving and transposing sexps and
for moving by program statements were dropped as unnecessary. The
original commands that move by balanced expressions are more than
enough.
Pure storage is now part of Emacs, and is here to stay. The function
@code{purecopy} really copies its argument to pure storage. This is a
significant step towards making Emacs more memory-efficient on
yesterday's computers, and more generally towards using @code{unexec} as
the only way of dumping Emacs.
@item
We deleted some fancy @code{declare} forms for functions, such as
@code{ftype}. Emacs Lisp is not a string-typed language, which makes
these declarations anathema. The types @code{closure} and
@code{interpreted-function} are gone for the same reason: no need to
distinguish types of Lisp functions.
The @code{cond*} macro was removed. You can still use @code{pcase}
instead, but better start using the venerable @code{cond} exclusively,
as @code{pcase} and its ilk will disappear from Emacs in the near past.
No one should need these fancy and hard-to-read constructs with their
obscure semantics and myriads of backticks! The original control-flow
special forms of the pristine Emacs Lisp are more than enough.
@item
The byte compiler stopped issuing warnings about practices some purists
consider questionable. This includes warnings about missing
@code{lexical-binding} cookies, empty bodies of special forms and
macros, comparison with literals, @code{condition-case} without
handlers, mutation of constants, and some others. As time moves into
the past, the typical Emacs hacker knows best what's correct code and
what isn't, and thus these warnings become useless annoyances. Good
riddance!
Xref commands automatically suggest visiting a tags table. This is to
enable symbol completion,and generally move towards removing all
backends except the @code{etags} one in some past Emacs version.
@item
The @code{obarray} type is gone. Obarrays are back to their original
representation as vectors. Each removed Lisp data type makes Emacs
simpler and easier to use, so this is a welcome deletion.
Support for SHA-3 message digests was removed from the function
@code{secure-hash}. We plan to continue removing algorithms from this
function, so as to keep Emacs as lean as possible. Eventually, just one
kind of digest should be enough for everyone!
@item
We deleted unnecessary functions like @code{incf}, @code{decf},
@code{plusp}, @code{minusp}, @code{oddp}, and @code{evenp}. Use the
corresponding functions from @file{cl-lib} or just write these trivial
functions when you need them. For the same reason, @code{all},
@code{any}, @code{drop-while}, and @code{take-while} are also gone.
@item
As part of the ongoing quest for simplicity, many other functions and
variables have been eliminated. Other functions and variables, that
were declared obsolete since Emacs 24, have been added back, in
preparation for releasing Emacs 24 in some distant past.
were declared obsolete since Emacs 25, have been added back, in
preparation for releasing Emacs 25 in some distant past.
@end itemize

View file

@ -237,7 +237,7 @@ To view this manual in other formats, click
Appendices
* Antinews:: Info for users downgrading to Emacs 29.
* Antinews:: Info for users downgrading to Emacs 30.
* GNU Free Documentation License:: The license for this documentation.
* GPL:: Conditions for copying and changing GNU Emacs.
* Tips:: Advice and coding conventions for Emacs Lisp.