From: Eli Zaretskii Date: Sat, 9 Oct 2021 11:32:28 +0000 (+0300) Subject: Rewrite Antinews for Emacs 28 X-Git-Tag: emacs-28.0.90~348 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=20eb3644ba;p=emacs.git 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. --- diff --git a/doc/emacs/anti.texi b/doc/emacs/anti.texi index 49da473fa51..354f20e757e 100644 --- a/doc/emacs/anti.texi +++ b/doc/emacs/anti.texi @@ -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. +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 diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi index 2fafb43e9fb..83847fb8f12 100644 --- a/doc/emacs/emacs.texi +++ b/doc/emacs/emacs.texi @@ -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! diff --git a/doc/lispref/anti.texi b/doc/lispref/anti.texi index ced8082f6a4..118df05c791 100644 --- a/doc/lispref/anti.texi +++ b/doc/lispref/anti.texi @@ -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. +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 diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi index e9e306fa0de..da3a3a84e9b 100644 --- a/doc/lispref/elisp.texi +++ b/doc/lispref/elisp.texi @@ -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.