emacs-31 0914969e0ef: ; Update "Antinews" in ELisp manual

Eli Zaretskii <[email protected]>
Newsgroups gmane.emacs.diffs
Message-ID <[email protected]>
branch: emacs-31
commit 0914969e0ef3557eb9b9ef8c058a9db5a7a69254
Author: Eli Zaretskii <[email protected]>
Commit: Eli Zaretskii <[email protected]>

    ; Update "Antinews" in ELisp manual
    
    * doc/lispref/elisp.texi (Top):
    * doc/lispref/anti.texi (Antinews): Update for Emacs 31.
---
 doc/lispref/anti.texi  | 158 +++++++++++++++++++++++++++----------------------
 doc/lispref/elisp.texi |   2 +-
 2 files changed, 88 insertions(+), 72 deletions(-)

diff --git a/doc/lispref/anti.texi b/doc/lispref/anti.texi
index 861fa02c16b..b2588411836 100644
--- a/doc/lispref/anti.texi
+++ b/doc/lispref/anti.texi
@@ -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
+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
-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.
+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
-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.
+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
-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.
+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
-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.
+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 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!
+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
-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.
+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
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index b7809ff66da..62a6b97db4e 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -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.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.