aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2020-01-11 13:36:07 +0200
committerEli Zaretskii2020-01-11 13:36:07 +0200
commite1262d45f90baf1bf396501c645c41914327fba2 (patch)
treeb686941c6de6e5d4eb6e256dbc4c22fd0c5a2a53
parentfd8128f0c18d536cc31578b29f3fd426bbc61630 (diff)
downloademacs-e1262d45f90baf1bf396501c645c41914327fba2.tar.gz
emacs-e1262d45f90baf1bf396501c645c41914327fba2.zip
Update Antinews in ELisp manual
* doc/lispref/anti.texi (Antinews): Rewrite for Emacs 27. * doc/lispref/elisp.texi (Top): Update the top-level menu item for Antinews.
-rw-r--r--doc/lispref/anti.texi342
-rw-r--r--doc/lispref/elisp.texi2
2 files changed, 126 insertions, 218 deletions
diff --git a/doc/lispref/anti.texi b/doc/lispref/anti.texi
index 5421d77762f..3760392f887 100644
--- a/doc/lispref/anti.texi
+++ b/doc/lispref/anti.texi
@@ -6,276 +6,184 @@
6@c This node must have no pointers. 6@c This node must have no pointers.
7 7
8@node Antinews 8@node Antinews
9@appendix Emacs 25 Antinews 9@appendix Emacs 26 Antinews
10@c Update the elisp.texi Antinews menu entry with the above version number. 10@c Update the elisp.texi Antinews menu entry with the above version number.
11 11
12For those users who live backwards in time, here is information about 12For those users who live backwards in time, here is information about
13downgrading to Emacs version 25.3. We hope you will enjoy the greater 13downgrading to Emacs version 26.3. We hope you will enjoy the greater
14simplicity that results from the absence of many @w{Emacs 14simplicity that results from the absence of many @w{Emacs
15@value{EMACSVER}} features. 15@value{EMACSVER}} features.
16 16
17@section Old Lisp Features in Emacs 25
18
19@itemize @bullet 17@itemize @bullet
20@item 18@item
21The concurrency features have been removed. Even in its limited 19Lisp objects are again implemented on the C level as integer types,
22``mostly cooperative'' form, with only one Lisp thread running at any 20not as pointers. This might be a small step for Emacs Lisp users, but
23given time, it made Emacs significantly more complex for Lisp programs 21it's a giant leap for the Emacs developers who work on the C level,
24that need to work correctly in the presence of additional threads. 22since it is now again easy to print Lisp object in the debugger in the
25 23decimal format, which is so much easier for debugging. It also makes
26@item 24calling Emacs functions from the debugger easier, and allows us to
27Handling of file attributes has been simplified by discarding the 25freely mix integers and Lisp objects in the C code.
28accessor functions, such as @code{file-attribute-type} and
29@code{file-attribute-modification-time}. Real Lisp programmers always
30access the individual attributes by their ordinal numbers, and can
31recite those numbers in their sleep.
32
33@item
34The networking code is back at its pristine simplicity, as we deleted
35the use of asynchronous DNS resolution, connection, and TLS
36negotiation for TLS streams. You no longer need to consider the
37resulting complexity and interesting race conditions when you write
38Lisp programs that use network communications. As a direct
39consequence, the @code{:complete-negotiation} parameter of
40@code{gnutls-boot} has become unnecessary, and was removed---just one
41example of how removal of asynchronicity simplifies Emacs.
42
43@item
44We've removed the @file{puny.el} library, so Web sites with
45non-@acronym{ASCII} URLs are no longer easily accessible. But such
46sites become more and more rare as you move back in time, so having a
47specialized library for their support was deemed an unnecessary
48maintenance burden.
49
50@item
51The time conversion functions @code{current-time-string},
52@code{current-time-zone}, @code{decode-time},
53@code{format-time-string}, and @code{set-time-zone-rule} no longer
54accept integer offsets as time zone rules, to make it more of a
55challenge to convert foreign timestamps. Also,
56@code{format-time-string} no longer converts @samp{%q} to the calendar
57quarter, as that is something you can easily do for yourself.
58
59@item
60Field numbers like @samp{%2$} in format specifiers are no longer
61available. We decided that their use makes code reading and
62comprehension much harder, and that having them is unjustified in the
63past where similar features in popular C libraries will also be gone.
64
65@item
66Since the built-in capability to display line numbers has been removed
67(@pxref{Antinews,,, emacs, The GNU Emacs Manual}), we've also deleted
68the @code{line-number-display-width} function and the support for the
69@code{display-line-numbers-disable} property, as Lisp programs that do
70their own display layout decisions no longer need to cater to this
71tricky feature.
72
73@item
74Regular expressions have been simplified by removing support for
75Unicode character properties in the @code{[:blank:]} regexp class. As
76result, this class will match only spaces and tabs. Once again, this
77is in line with diminishing importance of Unicode as you move back in
78time.
79
80@item
81For similar reasons, we removed the function @code{char-from-name}.
82It should be easy enough to access the full list of Unicode characters
83returned by @code{ucs-names} instead, for as long as Unicode support
84in Emacs exists (which shouldn't be too long).
85
86@item
87Various functions that accept file names as arguments, such as
88@code{file-attributes}, @code{file-symlink-p}, and
89@code{make-symbolic-link} gained back the special support for file
90names quoted with @samp{/:}, and they now interpret @samp{~} in
91symlink targets as you'd expect: to mean your home directory. The
92confusing differences between the operation of these functions in
93interactive and non-interactive invocations has been removed.
94
95@item
96Several functions that create or rename their files now treat their
97destination specially if it happens to be a directory, even when its
98name does not appear to be that of a directory. For example,
99@code{(rename-file "A" "B")} no longer renames @file{A} to @file{B} if
100@file{B} happens to be a directory. This is so that dealing with
101files becomes more of an adventure.
102 26
103@item 27@item
104The @code{format} function now returns new strings in more cases, to 28The test suite was removed from the distribution tarball. We believe
105place more stress on the Emacs memory manager and thereby test Emacs 29that tests need seldom if ever be run, certainly not by the end
106better. 30users. Removing the tests from the tarball makes it much smaller,
31which is important since disk space becomes more and more at premium
32as you move back in time.
107 33
108@item 34@item
109The function @file{assoc} has been simplified by removing its third 35Dynamic module support is disabled by default. This both makes Emacs
110optional argument. It now always uses @code{equal} for comparison. 36smaller (a worthy goal by itself), and removes the complications and
111Likewise, @code{alist-get} always uses @code{assq}, and @code{map-get} 37additional complexity related with installing module support files and
112and @code{map-put} always use @code{eql} for their comparisons. 38letting random shared objects an opportunity to be loaded into Emacs
39and mess with it.
113 40
114@item 41@item
115Numeric comparisons and the functions @code{format}, 42You now must activate any installed packages only after loading your
116@code{make-hash-table}, @code{min}, @code{max} and @code{logb} now 43init files. That requires an explicit call to
117occasionally round values internally to make their results less 44@code{package-initialize} in your init file, which is a Good Thing, as
118predictable. 45it makes you think seriously where and indeed whether you'd like your
46packages to become available to your sessions. Simplicity should
47tramp convenience!
119 48
120@item 49@item
121The functions @code{ffloor}, @code{fceiling}l, @code{ftruncate} and 50To reduce the amount of code in Emacs related to unimportant features,
122@code{fround} now accept integer arguments. Conversely, functions 51we've removed native rotation and resizing of images. You will have
123like @code{decode-char} that accept floating-point integers now accept 52to build Emacs with ImageMagick if you want to resize or rotate images
124arguments that are not integers. In both cases the results are 53inside Emacs. We don't expect anyone to miss that.
125amusingly nonsensical sometimes.
126 54
127@item 55@item
128GnuTLS cryptographic functions are no longer available in Emacs. We 56We've re-enabled color fonts usage by the XFT font back-end. We
129have decided that the needs for such functionality are deteriorating, 57consider the availability of these fonts more important than a random
130and their cumbersome interfaces make them hard to use. 58crash here and there, especially since the use of these fonts for
59displaying Emoji will become less and less important as w travel back
60in time, and will completely disappear in some past Emacs version.
131 61
132@item 62@item
133We have removed support for records of user-defined types, and 63The function @code{network-interface-list} can now return only IPv4
134@code{cl-defstruct} no longer uses records. This removes the 64addresses. We consider the complexity introduced by IPv6 to be too
135potential for quite a few places where existing and past code could be 65much to be justified, and on the other hand its removal is the step in
136broken by records. 66the right direction, given that IPv6 is expected to be completely
67removed as we move back in time.
137 68
138@item 69@item
139You can again use @code{string-as-unibyte}, 70The limit on repetitions in regular expressions was reduced to
140@code{string-make-multibyte}, and other similar functions, without 71@ifnottex
141being annoyed by messages about their deprecation. This is in 722**15 @minus{} 1.
142preparation for removal of multibyte text from Emacs in the distant 73@end ifnottex
143past. 74@tex
75@math{2^{15}-1}.
76@end tex
77We envision that regular expressions will become more and more simple
78as we move towards the distant past.
144 79
145@item 80@item
146The @code{string-version-lessp} function has been removed, to 81To simplify code and reduce complexity, we removed the capability of
147encourage programmers to use their own idiosyncratic methods to 82searching programs on remote hosts in @code{executable-find}. If you
148determine whether one version string precedes another. 83really need this feature (why would you?), you can always write your
84own shell script and run it on the remote.
149 85
150@item 86@item
151The function @code{read-color} no longer displays color names using 87The @code{:extend} face attribute is no longer available; all faces
152each color as the background. We have determined that this surprises 88have their background color extended by default past end of line.
153users and produces funny inconsistent results on color-challenged 89This should significantly simplify face management and remove
154terminals. 90unnecessary code bloat, as well as make faces significantly simpler to
91understand and use.
155 92
156@item 93@item
157Support for 24-bit color on text terminals has been dropped, since 94The predicates @code{display-blink-cursor-p} and
158it wasn't needed long ago. 95@code{display-symbol-keys-p} were deleted. They are rarely if ever
96needed, and can easily be substituted by appropriate calls to old and
97proven APIs like @code{display-graphic-p}. As an additional bonus,
98writing Lisp programs that depend on this functionality will make sure
99the programmer understands better what exactly is the required
100features of the display terminal.
159 101
160@item 102@item
161We removed the function @code{file-name-case-insensitive-p}, as 103Relative directories in the value of the @env{HOME} environment
162testing for the OS symbol should be enough for the observable past to 104variable are once again interpreted relative to the
163come, and learning to use yet another API is a burden. 105@code{default-directory} of the current buffer. This is much simpler,
106and also allows @env{HOME} to resolve to a different place in
107different buffers, which allows some interesting applications.
164 108
165@item 109For the same reasons, @code{file-name-absolute-p} now again considers
166The function @code{read-multiple-choice} is also gone, in recognition 110@file{~foo} an absolute file name, even if there's no known user
167of the fact that nothing makes Emacs Lisp hackers rejoice more than 111@samp{foo}. This means a Lisp program which uses such file names will
168the need to sit down and write yet another interactive 112always work the same on any system, regardless of its known users.
169question-and-answer function, and make it optimal for each specific
170case.
171
172@item
173The function @code{add-variable-watcher} and the corresponding
174debugger command @code{debug-on-variable-change} have been removed.
175They make debugging more complicated, while examining the value of a
176variable at each stop point is easy enough to cover the same use
177cases. Let simplicity rule!
178
179@item
180The function @code{mapcan} is gone; use @code{mapcar} instead, and
181process the resulting list as you see fit.
182
183@item
184Low-level list functions like @code{length} and @code{member} can now
185loop indefinitely when given cyclic lists, causing Emacs to freeze.
186This can help these functions run a tiny bit faster in the usual case
187where the input is not cyclic.
188
189@item
190The @code{write-region} function no longer propagates its
191@var{lockname} argument to file name handlers.
192
193@item
194You can once again write a Lisp program that returns funny random
195values from @code{file-attributes} by having another process alter the
196filesystem while Emacs is accessing the file. This can give rise to
197some interesting applications in the near past.
198
199@item
200The functions @code{file-attributes}, @code{file-symlink-p}, and
201@code{make-symbolic-link} now quietly mutate the target of a local
202symbolic link in some cases, to make it more of a challenge to deal
203with arbitrary symlinks in Emacs code.
204
205@item
206The error @code{file-missing} has been removed; operations now lump
207such errors into the @code{file-error} category instead.
208
209@item
210The function @code{delete-directory} now signals an error if operating
211recursively and some other process deletes the directory before this
212function gets to it.
213
214@item
215The @code{dutch} input method now attempts to support Turkish too,
216albeit incorrectly. Also, it converts @samp{IJ} and @samp{ij} to
217special characters instead of leaving them alone.
218
219@item
220Non-breaking hyphens and approximations to quotes are now displayed
221just with the @code{escape-glyph} face instead of having faces of
222their own. This is simpler and gives the user amusing puzzles to
223solve when viewing text containing these characters.
224 113
225@item 114@item
226The user option @code{electric-quote-context-sensitive} and the 115File-related primitives like @code{file-attributes},
227variable @code{electric-quote-inhibit-functions}, so that electric 116@code{file-modes}, @code{file-newer-than-file-p}, and some others once
228quoting is simpler and more likely to do the wrong thing. 117again return @code{nil} when the underlying low-level APIs fail,
118instead of signaling an error. We decided that functions which signal
119errors require more complex code from Lisp programs which use them,
120and found this complexity unjustified when returning @code{nil} will
121do.
229 122
230@item 123@item
231The user option @code{text-quoting-style} has been removed, and is now 124Similarly, old-style backquotes no longer signal errors; they generate
232just a variable. 125warnings instead. You can remove error handling from programs that
126use backquotes.
233 127
234@item 128@item
235We have removed the functions @code{file-name-quote}, 129Formatting floating-point numbers has been sped up by letting the
236@code{file-name-unquote}, and @code{file-name-quoted-p}. Writing code 130underlying implementation produce unpredictable values, instead of
237that checks whether a file name is already quoted is easy, and doubly 131signaling errors when the number is too large to format correctly. We
238quoting a file name should not produce any problems for well-written 132believe the Emacs Lisp programmers should always know what they are
239Lisp code. 133doing when they deal with floating-point values.
240 134
241@item 135@item
242Frame parameters like @code{z-group}, @code{min-width}, 136The function @code{read-char-from-minibuffer} was deleted. We decided
243@code{parent-frame}, @code{delete-before}, etc. have been removed. 137that @code{read-char} should be enough for any Lisp program that needs
244Emacs should not replace your window-manager, certainly not as 138to ask the user for a single-character input, in recognition of the
245window-managers become less and less capable. 139fact that nothing makes Emacs Lisp hackers rejoice more than the need
140to sit down and write yet another interactive question-and-answer
141function, and make it optimal for each specific case. Consequently,
142no history is provided for such responses (why would someone want
143history of single-key strokes, anyway?).
246 144
247@item 145@item
248We decided that the format of mode line and header line should be 146The function @code{ngettext} was deleted. Non-English languages will
249customizable only based on buffers; the @code{mode-line-format} and 147become less and less widespread, let alone useful, as you move back in
250@code{header-line-format} window parameters have been removed. 148time, so we took this small step in that direction, and simplified
149Emacs as a nice bonus.
251 150
252@item 151@item
253Emacs now normally builds a limited @command{movemail} substitute that 152Focus-change notifications on text-mode frames are no longer
254retrieves POP3 email only via insecure channels, and the 153recognized or supported. You can now safely disregard the possibility
255configure-time option @option{--with-mailutils} has been removed. 154of receiving such notifications on TTY frames. This is one small step
256This simplifies Emacs setup when security is not important. 155on the long road of removing all non-character input events Emacs
156supports on TTY frames.
257 157
258@item 158@item
259The configure-time option @option{--enable-gcc-warnings=warn-only} 159Face specifications in @code{face-remapping-alist} now have to be
260has been removed, so that build-time warnings are always fatal now. 160buffer-specific, without any differences between windows showing the
161same buffers. This allowed us to remove a lot of unneeded code bloat
162from Emacs, and make the face handling much simpler.
261 163
262@item 164@item
263The configure-time option @option{--disable-build-details} has been 165The @samp{%o} and @samp{%x} formats now always produce unsigned
264removed. This way, Emacs builds are unique and irreproducible. 166values, as you'd expect. This allows you to reveal the underlying
167machine representation, which is different on each architecture,
168something we consider a valuable feature.
265 169
266@item 170@item
267The variable @code{emacs-version} now includes the build number 171We no longer highlight in @code{font-lock-warning-face} symbols with
268instead of storing it separately in @code{emacs-build-number}. 172confusable quote characters, such as U+2018. Detecting them
173needed non-trivial amount of code, and we firmly believe that Lisp
174programmers always know what they are doing, and don't need to be
175annoyed with typefaces that stand out and distract.
269 176
270@item 177@item
271Emacs has been ported to IRIX. 178The function @code{file-system-info} was dropped on Posix platforms,
179since you can always invoke @command{df} instead and parse its
180output.
272 181
273@item 182@item
274Several options and variables have been removed to simplify Emacs and 183The functions that implement the @samp{base64url} encoding were
275potentially make it less reliable. These include the 184removed, as they can always be emulated by suitable tweaking of the
276@option{--module-assertions} option, the 185normal base-64 encoding. No need to bloat Emacs and force Lisp
277@code{attempt-stack-overflow-recovery} variable, and the 186programmers learn more interfaces on this account.
278@code{attempt-orderly-shutdown-on-fatal-signal} variable.
279 187
280@item 188@item
281As part of the ongoing quest for simplicity, many other functions and 189As part of the ongoing quest for simplicity, many other functions and
diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi
index c157079bc75..cfd96f7aa68 100644
--- a/doc/lispref/elisp.texi
+++ b/doc/lispref/elisp.texi
@@ -233,7 +233,7 @@ To view this manual in other formats, click
233 233
234Appendices 234Appendices
235 235
236* Antinews:: Info for users downgrading to Emacs 25. 236* Antinews:: Info for users downgrading to Emacs 26.
237* GNU Free Documentation License:: The license for this documentation. 237* GNU Free Documentation License:: The license for this documentation.
238* GPL:: Conditions for copying and changing GNU Emacs. 238* GPL:: Conditions for copying and changing GNU Emacs.
239* Tips:: Advice and coding conventions for Emacs Lisp. 239* Tips:: Advice and coding conventions for Emacs Lisp.