Rewrite Antinews for Emacs 28

* doc/lispref/anti.texi (Antinews):
* doc/emacs/anti.texi (Antinews): Rewrite for Emacs 28.
* doc/lispref/elisp.texi (Top):
* doc/emacs/emacs.texi (Top): Update menu accordingly.
This commit is contained in:
Eli Zaretskii 2021-10-09 14:32:28 +03:00
parent 3a9b881603
commit 20eb3644ba
4 changed files with 211 additions and 236 deletions

View file

@ -4,156 +4,138 @@
@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.
@command{emacsclient} no longer supports @acronym{XDG}-style directory
trees, either.
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.
@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).
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
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.
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{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!
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 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 @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
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 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 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.
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
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.
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
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.
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
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.
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
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.
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
On our permanent quest for simplifying Emacs, we've removed the
support for changing the font size by turning the mouse wheel.
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
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}.
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
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

View file

@ -219,7 +219,7 @@ Appendices
* GNU Free Documentation License:: The license for this documentation.
* Emacs Invocation:: Hairy startup options.
* X Resources:: X resources for customizing Emacs.
* Antinews:: Information about Emacs version 26.
* Antinews:: Information about Emacs version 27.
* Mac OS / GNUstep:: Using Emacs under macOS and GNUstep.
* Microsoft Windows:: Using Emacs on Microsoft Windows and MS-DOS.
* Manifesto:: What's GNU? Gnu's Not Unix!

View file

@ -6,186 +6,179 @@
@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.
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.
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.
@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.
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
Similarly, old-style backquotes no longer signal errors; they generate
warnings instead. You can remove error handling from programs that
use backquotes.
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
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 possibility of having links to man pages in doc strings has been
removed. Use plain text instead, if you need such references.
@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?).
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
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.
Several features that complicated the byte compiler have been removed:
@itemize @minus
@item
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
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 ability of compiling symlinked @file{*.el} files, which is really
gross: copy the files instead.
@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.
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
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.
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 @code{cl-type} pattern.
@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.
the @code{pcase-setq} macro.
@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 @code{pcase-compile-patterns} function.
@end itemize
@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.
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 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 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 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 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

View file

@ -234,7 +234,7 @@ To view this manual in other formats, click
Appendices
* Antinews:: Info for users downgrading to Emacs 26.
* Antinews:: Info for users downgrading to Emacs 27.
* 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.