@c See file emacs.texi for copying conditions.
@node Antinews
-@appendix Emacs 26 Antinews
+@appendix Emacs 27 Antinews
@c Update the emacs.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 26.3. We hope you will enjoy the
+about downgrading to Emacs version 27.2. We hope you will enjoy the
greater simplicity that results from the absence of many @w{Emacs
@value{EMACSVER}} features.
@itemize @bullet
@item
-Emacs no longer uses @acronym{GMP}, the GNU Multiple Precision
-library, and doesn't support Lisp integers greater than
-@code{most-positive-fixnum} or smaller than
-@code{most-negative-fixnum}. We now have only one kind of a Lisp
-integer. This simplifies many Lisp programs that use integers, and
-makes integer calculations always fast. If you want larger values,
-use Lisp floats, as Emacs has done since day one.
+Emacs can no longer be built with support of native compilation of
+Lisp programs. This means Emacs builds much faster, and the problems
+that came with native compilation: the need to have GCC and Binutils
+installed, the complications of managing your @file{eln-cache}
+directories---all of that is now future history. The simplicity and
+elegance of the Emacs byte-compiled code is now restored in all of its
+pristine beauty.
@item
-Emacs no longer supports HarfBuzz as the engine for shaping complex
-text. As you move back in time, we will gradually shed off all traces
-of support for complex text shaping, and this is one step in that
-direction.
+Emacs no longer builds by default with Cairo, even if it's present.
+The warnings about not using HarfBuzz are also gone, in preparation
+for complete removal of HarfBuzz support in previous Emacs versions.
+Fancy text shaping and display is becoming less important as you move
+back in time. The @code{ftx} font backend is again part of Emacs, for
+the same reasons.
@item
-We have removed support for building with the Jansson library, and
-consequently the native support for JSON parsing is gone. The
-importance of JSON decreases as we go back in time, so for now using
-the Lisp code for handling it should be good enough; in one of the
-past Emacs versions, we intend to remove even that, as useless bloat.
-
-The library for supporting JSONRPC applications was removed for the
-same reason.
+As Motif becomes more and more important with moving farther into the
+past, we've reinstated the code which supports Motif in Emacs.
@item
-The ``portable dumper'' feature is gone. We are once again using the
-field-proven ``unexec'' way of dumping Emacs. With that, the hope for
-being able to re-dump your customized Emacs session is also gone: why
-would anyone want to record their random customization experiments on
-disk, and restore them the next time they start Emacs? And true
-Emacsers don't restart their Emacs sessions anyway.
+Emacs once again supports versions 5.3 and older OpenBSD system, which
+will be needed as you move back in time.
@item
-We dropped the support for @acronym{XDG}-style configuration
-directories and the @env{XDG_CONFIG_HOME} environment variable.
-There's once again only one place where Emacs looks for its init
-files: the @file{~/.emacs.d} directory, with the @file{~/.emacs} file
-as fallback. We think this will go a long way towards preventing
-confusion among users who for some reason have @env{XDG_CONFIG_HOME}
-set, thus risking to have their init files randomly spread between two
-places. In one of the past Emacs versions, we intend to further
-simplify this, removing the @file{~/.emacs.d} place and leaving only
-@file{~/.emacs}; stay tuned.
-
-For similar reasons, we've removed the ``early init'' file. You can
-now again use all the tricks you want to initialize variables like
-@code{package-user-dir} and @code{package-load-list} just in time for
-the packages to load.
+We've dropped support for Secure Computing filter on GNU/Linux. The
+past world is much more secure than the present, so the complexities
+related with this stuff, which can only be explained by severe
+paranoia, are no longer justified.
-@command{emacsclient} no longer supports @acronym{XDG}-style directory
-trees, either.
+@item
+Emacs reverted back to supporting Unicode 13.x, since the following
+versions of the standards are not yet published where you are going.
+The @samp{emoji} script and the support for displaying Emoji sequences
+were removed for the same reasons: no one will produce them in the
+past.
@item
-TLS connections are back to their lenient security settings. We
-decided that too tight security settings are an annoyance for users,
-and make little sense considering the world-wide tendency to have
-fewer and fewer network security problems as we move back in time
-(those issues will be completely gone when networks disappear in some
-distant past).
+Mode-specific commands and the @kbd{M-S-x} command that invokes them
+were removed. As you move back in time, the command set in Emacs
+becomes smaller, so any such filtering of applicable commands just
+gets in the way.
@item
-The @code{server-after-make-frame-hook} hook was deleted, in
-preparation for removing the entire daemon business in some past Emacs
-version. You will be glad to learn that setting up the GUI
-customizations of your sessions is now once again as easy as it ever
-was, with just the @code{after-make-frame-functions} to use.
+We have removed the system for displaying documentation of groups of
+related functions, the @kbd{shortdoc-display-group} command to go with
+it, and the corresponding ``See also'' button in the @file{*Help*}
+buffer. That should make searching for certain functions simpler:
+just use the venerable @samp{apropos} commands.
@item
-The @code{flex} completion style was removed. We feel that it
-unnecessarily complicates the Emacs user experience, and therefore
-will continue to remove other tricky completion styles, until in some
-past Emacs version we get to a single original style Emacs pioneered
-decades ago. Long live simplicity; down with complications!
+The @code{context-menu-mode} was removed, and with it the context
+menus popped by pressing the right mouse button. This is one small
+step towards freeing Emacs (and eventually, the whole world of
+computing) from the tyranny of the GUI pointing devices in general,
+and moving back to the simplicity of text-mode user interfaces.
+Down with mice and other rodents!
@item
-The optional display of the fill-column indicator is no longer
-supported. With the display sizes becoming smaller and smaller as you
-move back in time, we feel that the display itself will always show
-you where to fill or wrap your text, and do this much more easily and
-reliably than any such display indicator.
+The commands @kbd{C-x 4 4} and @kbd{C-x 5 5} for displaying the
+results in a new window/frame re gone. We are quite certain that
+creating a new window/frame before running a command is much simpler,
+and doesn't require a complication of a new prefix.
@item
-We removed the features that made visiting large files easier. Thus,
-Emacs will no longer suggest visiting a large file literally, nor
-offer the @code{so-long} mode to deal with overly-long lines. We
-decided that this simplification is worthwhile, given that the general
-tendency of having very large files is becoming a rarity as we move
-back in time.
+The behavior of active minibuffers when switching frames is now the
+perfect mess it should be: sometimes the minibuffer moves to the new
+selected frame, sometimes it doesn't, and sometimes you get an error.
+This makes Emacs usage much more fun, as you get to guess the result,
+instead of having it boringly consistent.
@item
-We have removed the feature that displayed echo-area messages without
-hiding content of the active minibuffer. This should prevent user
-confusion from having two unrelated pieces of text staring at them,
-with no clear separation between them. Users with good memories (and
-Emacs users are all expected to be of that kind) will have no trouble
-keeping the minibuffer text in their minds, and typing the responses
-without actually seeing the prompts.
+Compact mode-line display mode has been removed. The items displayed
+on the mode line are now always in the same place, and if there's not
+enough space for them, they are not displayed at all, instead of being
+confusingly displayed in a different position. You no longer need to
+think twice where to find a particular mode-line element on display.
@item
-Horizontal scrolling using the mouse or touchpad has been removed. In
-the past, wide monitors will become less popular, so horizontal
-scrolling will no longer be needed. Removal of the mouse support for
-horizontal scrolling is the first step towards its complete removal in
-prior Emacs versions.
+Many commands and options related to tab bars were removed, including
+(but not limited to) frame-specific appearance of tab bars, the
+@code{tab-bar-format} option, the @kbd{C-x t n}, @kbd{C-x t N},
+@kbd{C-x t M}, and @kbd{C-x t G} commands, and many mouse gestures on
+the tab bar. We are going to delete the tab bar support from Emacs in
+one of the past versions, and this is a step in that direction.
@item
-The @code{main-thread} variable and @code{list-threads} were removed,
-and @code{thread-join} no longer returns the result of the finished
-thread. We intend to remove the support for Lisp threads in some past
-Emacs version, so we continue removing the associated complexities and
-features as we go back in time.
+The ``transient'' input methods have been removed; use @kbd{C-\} to
+turn input methods on and off instead. This is in preparation for
+complete removal of input methods from Emacs in version 19, and
+consistent with the fact that the number of input methods we support
+becomes smaller as you move back in time.
@item
-Tab bar and window tab-lines were removed. This should make the Emacs
-display simpler and less cluttered, and help those users who disable
-menu bar and tool bar in their GUI sessions. The fashion to provide
-tabs in every GUI application out there is gaining less and less
-popularity as we move back in time, and will completely disappear at
-some past point; removing the tabs from Emacs is the step in that
-direction.
+We disabled @code{show-paren-mode} by default, since we think the
+venerable @code{blink-matching-paren} feature is more than enough, and
+better fits the simplicity of past Emacs versions. It will definitely
+be better when colors are removed from Emacs in the distant past.
+
+For the same reason, sub-groups in interactive regexp searches are no
+longer highlighted in distinct colors.
@item
-Displaying line numbers for a buffer is only possibly using add-on
-features, such as @code{linum-mode}, which can only display the
-numbers in the display margins. Line-number display using these
-features is also slow, as we firmly believe such a feature is
-un-Emacsy and should not have been included in Emacs to begin with.
-Consequently, @code{display-line-numbers-mode} was removed.
+On our permanent quest for simplifying Emacs, we've removed the Ispell
+command @code{ispell-comment-or-string-at-point}; the old-time friend
+@code{ispell-comments-and-strings} should suffice.
@item
-On our permanent quest for simplifying Emacs, we've removed the
-support for changing the font size by turning the mouse wheel.
+Many Gnus commands and options were deemed to unnecessarily complicate
+the use of Gnus (which is too complex to begin with), and thus were
+removed. This includes @code{gnus-topic-display-predicate},
+@code{gnus-process-mark-toggle}, @code{gnus-registry-register-all},
+@code{gnus-paging-select-next}, and many others. The @code{nnselect}
+backend was deleted for the same reason.
@item
-Several commands, deemed to be unnecessary complications, have been
-removed. Examples include @code{make-empty-file},
-@code{font-lock-refontify}, @code{xref-find-definitions-at-mouse},
-@code{make-frame-on-monitor}, and @code{diff-buffers}.
+The @file{project.el} package have been redesigned to remove many
+unnecessary features, so that just the bare essentials remain. We
+plan on removing this package from Emacs in a previous version, but
+decided to begin with removing some extra features first.
@item
To keep up with decreasing computer memory capacity and disk space, many
-other functions and files have been eliminated in Emacs 26.3.
+other functions and files have been eliminated in Emacs 27.2.
@end itemize
@c This node must have no pointers.
@node Antinews
-@appendix Emacs 26 Antinews
+@appendix Emacs 27 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 26.3. We hope you will enjoy the greater
+downgrading to Emacs version 27.2. We hope you will enjoy the greater
simplicity that results from the absence of many @w{Emacs
@value{EMACSVER}} features.
@itemize @bullet
@item
-Lisp objects are again implemented on the C level as integer types,
-not as pointers. This might be a small step for Emacs Lisp users, but
-it's a giant leap for the Emacs developers who work on the C level,
-since it is now again easy to print Lisp object in the debugger in the
-decimal format, which is so much easier for debugging. It also makes
-calling Emacs functions from the debugger easier, and allows us to
-freely mix integers and Lisp objects in the C code.
+The annoying @code{lexical-binding} local variable now heeds the
+value of @code{enable-local-variables}: if it's @code{nil}, the
+@code{lexical-binding} cookie is ignored. We are working hard on
+removing the lexical-binding support in some past Emacs version, and
+this small step advances us back to that change.
@item
-The test suite was removed from the distribution tarball. We believe
-that tests need seldom if ever be run, certainly not by the end
-users. Removing the tests from the tarball makes it much smaller,
-which is important since disk space becomes more and more at premium
-as you move back in time.
+The @code{load-dangerous-libraries} variable is not obsolete, as it
+must be used to allow loading Lisp compiled by XEmacs, which will
+become more and more important as you move back in time.
@item
-Dynamic module support is disabled by default. This both makes Emacs
-smaller (a worthy goal by itself), and removes the complications and
-additional complexity related with installing module support files and
-letting random shared objects an opportunity to be loaded into Emacs
-and mess with it.
+The optional @var{modes} argument of @code{interactive} is not
+supported, and every command is deemed applicable to any major mode.
+We believe this makes the life of Lisp programmers much simpler, as
+there's now no need to tag commands with the modes where they make
+sense.
@item
-You now must activate any installed packages only after loading your
-init files. That requires an explicit call to
-@code{package-initialize} in your init file, which is a Good Thing, as
-it makes you think seriously where and indeed whether you'd like your
-packages to become available to your sessions. Simplicity should
-tramp convenience!
+Shorthands for Lisp symbols have been removed, which makes loading
+Lisp files and handling Lisp symbols much simpler and more efficient.
+This is important for decent performance on slower CPUs as you move
+back in time.
@item
To reduce the amount of code in Emacs related to unimportant features,
-we've removed native rotation and resizing of images. You will have
-to build Emacs with ImageMagick if you want to resize or rotate images
-inside Emacs. We don't expect anyone to miss that.
+we've removed the variables @code{global-minor-modes} and
+@code{local-minor-modes}. If your Lisp program needs to determine
+whether some minor mode is in effect, it will have to test explicitly
+for every mode. We don't expect anyone to miss those fancy variables.
@item
-We've re-enabled color fonts usage by the XFT font back-end. We
-consider the availability of these fonts more important than a random
-crash here and there, especially since the use of these fonts for
-displaying Emoji will become less and less important as we travel back
-in time, and will completely disappear in some past Emacs version.
+The default preference for servicing sub-processes that produce output
+at a high rate, and the associated variable
+@code{process-prioritize-lower-fds}, have been removed. Moving back
+in time means fewer and fewer programs can produce such high-rate
+output, so this features becomes just useless crud.
@item
-The function @code{network-interface-list} can now return only IPv4
-addresses. We consider the complexity introduced by IPv6 to be too
-much to be justified, and on the other hand its removal is the step in
-the right direction, given that IPv6 is expected to be completely
-removed as we move back in time.
+The encodings that are variants of EBCDIC were removed. This includes
+@code{ibm256}, @code{ibm273}, and others---variants of the EBCDIC
+encoding tailored for some Japanese and European locales. You won't
+need those where you are going.
@item
-The limit on repetitions in regular expressions was reduced to
-@ifnottex
-2**15 @minus{} 1.
-@end ifnottex
-@tex
-@math{2^{15}-1}.
-@end tex
-We envision that regular expressions will become more and more simple
-as we move towards the distant past.
+The ``Bindat type expression'' description language has been removed,
+as the existing data layout specifications are perfectly suited for
+this job.
@item
To simplify code and reduce complexity, we removed the capability of
-searching programs on remote hosts in @code{executable-find}. If you
-really need this feature (why would you?), you can always write your
-own shell script and run it on the remote.
+specifying the success handler in @code{condition-case} via the
+@code{:success} keyword. If you really need this feature (why would
+you?), you can always write some simple Lisp that has the same effect.
@item
-The @code{:extend} face attribute is no longer available; all faces
-have their background color extended by default past end of line.
-This should significantly simplify face management and remove
-unnecessary code bloat, as well as make faces significantly simpler to
-understand and use.
+Emacs modules can no longer provide interactive functions, or install
+finalizers, nor open channels to existing pipe sub-processes. All
+this is extra ballast, especially since we plan on removing modules in
+some past Emacs version. The @code{make_unibyte_string} module API
+was removed for the same reason.
@item
-The predicates @code{display-blink-cursor-p} and
-@code{display-symbol-keys-p} were deleted. They are rarely if ever
-needed, and can easily be substituted by appropriate calls to old and
-proven APIs like @code{display-graphic-p}. As an additional bonus,
-writing Lisp programs that depend on this functionality will make sure
-the programmer understands better what exactly is the required
-features of the display terminal.
+To keep Emacs clean and elegant, we've removed the
+@code{print-integers-as-characters} option. Recognizing characters by
+their decimal codes is a basic requirement for Emacs Lisp programmers,
+and with the expected decrease in use of Unicode characters, this will
+be soon limited to ASCII only: surely something you all can master!
@item
-Relative directories in the value of the @env{HOME} environment
-variable are once again interpreted relative to the
-@code{default-directory} of the current buffer. This is much simpler,
-and also allows @env{HOME} to resolve to a different place in
-different buffers, which allows some interesting applications.
+The optional @var{count} argument of the @code{directory-files}
+function has been removed. Extracting the first @var{n} members from
+the full list is trivial, so this is a significant simplification for
+an insignificant cost.
-For the same reasons, @code{file-name-absolute-p} now again considers
-@file{~foo} an absolute file name, even if there's no known user
-@samp{foo}. This means a Lisp program which uses such file names will
-always work the same on any system, regardless of its known users.
+@item
+Functions that create sub-processes and network connections no longer
+accept the @code{:coding} argument; use
+@code{set-process-coding-system} or bind
+@code{coding-system-for-read/write} instead: again, a significant
+reduction in Emacs complexity for little or no cost.
+
+@item
+We deleted from the macros @code{define-derived-mode} and
+@code{define-minor-mode} the code which allowed using the
+@code{:interactive} argument. The possibility of marking a mode
+non-interactive makes very little sense,
+
+@item
+The possibility of having links to man pages in doc strings has been
+removed. Use plain text instead, if you need such references.
+
+@item
+Temporary buffers are no longer exempt from running any buffer-related
+hooks. Programs that don't want such hooks in some buffer can always
+disable it locally, whereas making that simpler complicates Emacs for
+no good reason.
@item
-File-related primitives like @code{file-attributes},
-@code{file-modes}, @code{file-newer-than-file-p}, and some others once
-again return @code{nil} when the underlying low-level APIs fail,
-instead of signaling an error. We decided that functions which signal
-errors require more complex code from Lisp programs which use them,
-and found this complexity unjustified when returning @code{nil} will
-do.
+Several features that complicated the byte compiler have been removed:
+@itemize @minus
@item
-Similarly, old-style backquotes no longer signal errors; they generate
-warnings instead. You can remove error handling from programs that
-use backquotes.
+The checks for missing declarations of dynamic variables. This will
+continue making less and less sense as we move away of lexical-binding
+support.
@item
-Formatting floating-point numbers has been sped up by letting the
-underlying implementation produce unpredictable values, instead of
-signaling errors when the number is too large to format correctly. We
-believe the Emacs Lisp programmers should always know what they are
-doing when they deal with floating-point values.
+The ability of compiling symlinked @file{*.el} files, which is really
+gross: copy the files instead.
@item
-The function @code{read-char-from-minibuffer} was deleted. We decided
-that @code{read-char} should be enough for any Lisp program that needs
-to ask the user for a single-character input, in recognition of the
-fact that nothing makes Emacs Lisp hackers rejoice more than the need
-to sit down and write yet another interactive question-and-answer
-function, and make it optimal for each specific case. Consequently,
-no history is provided for such responses (why would someone want
-history of single-key strokes, anyway?).
+The warnings about too-wide doc strings---that is just a nuisance, as
+the programmers should be trusted to know what they are doing.
+@end itemize
+
+
+@item
+We deleted several features of the @code{pcase} macro, in accordance
+with our general plane to remove @code{pcase} from Emacs:
+@itemize @minus
@item
-The function @code{ngettext} was deleted. Non-English languages will
-become less and less widespread, let alone useful, as you move back in
-time, so we took this small step in that direction, and simplified
-Emacs as a nice bonus.
+The @code{cl-type} pattern.
@item
-Focus-change notifications on text-mode frames are no longer
-recognized or supported. You can now safely disregard the possibility
-of receiving such notifications on TTY frames. This is one small step
-on the long road of removing all non-character input events Emacs
-supports on TTY frames.
+the @code{pcase-setq} macro.
+
+@item
+The @code{pcase-compile-patterns} function.
+@end itemize
@item
-Face specifications in @code{face-remapping-alist} now have to be
-buffer-specific, without any differences between windows showing the
-same buffers. This allowed us to remove a lot of unneeded code bloat
-from Emacs, and make the face handling much simpler.
+Some of the keywords used in Edebug specification lists were deemed to
+be of little use, and were therefore removed: @code{&interpose},
+@code{&error}, and @code{&name}. The long-term plane is for Emacs to
+drop Edebug entirely, leaving only the trusted Lisp debugger, and we
+continue working according to that plan.
@item
-The @samp{%o} and @samp{%x} formats now always produce unsigned
-values, as you'd expect. This allows you to reveal the underlying
-machine representation, which is different on each architecture,
-something we consider a valuable feature.
+The function @code{object-intervals} was dropped, as a Lisp program
+can easily collect the intervals of a buffer or a string by iterating
+through them one by one.
@item
-We no longer highlight in @code{font-lock-warning-face} symbols with
-confusable quote characters, such as U+2018. Detecting them
-needed non-trivial amount of code, and we firmly believe that Lisp
-programmers always know what they are doing, and don't need to be
-annoyed with typefaces that stand out and distract.
+We decided that the @code{require-theme} function is an unnecessary
+complication, so we deleted it. Lisp programs can easily search along
+@code{custom-theme-load-path} instead.
@item
-The function @code{file-system-info} was dropped on Posix platforms,
-since you can always invoke @command{df} instead and parse its
-output.
+The convenience functions @code{length<}, @code{length>}, and
+@code{length=} were removed, as using @code{length} followed by a
+comparison should be good enough for everyone, especially considering
+that the typical length of a list keeps going down as you move back
+through time.
@item
-The functions that implement the @samp{base64url} encoding were
-removed, as they can always be emulated by suitable tweaking of the
-normal base-64 encoding. No need to bloat Emacs and force Lisp
-programmers learn more interfaces on this account.
+The variable @code{current-minibuffer-command} is no longer available,
+as we found little justification for keeping it.
@item
As part of the ongoing quest for simplicity, many other functions and
-variables have been eliminated.
+variables have been eliminated. Other functions and variables, that
+were declared obsolete since Emacs 23, have been added back, in
+preparation for releasing Emacs 23 in some distant past.
@end itemize