@c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. @c Copyright (C) 1999, 2002--2024 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @c This node must have no pointers. @node Antinews @appendix Emacs 29 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 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. @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. @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. @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? @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. @item The @code{minibuffer-regexp-mode} was removed. Regular expressions are just strings, so no fancy mode should be needed for editing them. @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. @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. @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. @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. @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. @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. @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. @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. @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! @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. @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. @end itemize