Minor wording change in the Emacs manual
[emacs.git] / doc / lispref / anti.texi
blobb6df9fe2e3969b8c60918340741c18d21b1b2cdc
1 @c -*-texinfo-*-
2 @c This is part of the GNU Emacs Lisp Reference Manual.
3 @c Copyright (C) 1999, 2002-2018 Free Software Foundation, Inc.
4 @c See the file elisp.texi for copying conditions.
6 @c This node must have no pointers.
8 @node Antinews
9 @appendix Emacs 25 Antinews
10 @c Update the elisp.texi Antinews menu entry with the above version number.
12 For those users who live backwards in time, here is information about
13 downgrading to Emacs version 25.2.  We hope you will enjoy the greater
14 simplicity that results from the absence of many @w{Emacs
15 @value{EMACSVER}} features.
17 @section Old Lisp Features in Emacs 25
19 @itemize @bullet
20 @item
21 The concurrency features have been removed.  Even in its limited
22 ``mostly cooperative'' form, with only one Lisp thread running at any
23 given time, it made Emacs significantly more complex for Lisp programs
24 that need to work correctly in the presence of additional threads.
26 @item
27 Handling of file attributes has been simplified by discarding the
28 accessor functions, such as @code{file-attribute-type} and
29 @code{file-attribute-modification-time}.  Real Lisp programmers always
30 access the individual attributes by their ordinal numbers, and can
31 recite those numbers in their sleep.
33 @item
34 The networking code is back at its pristine simplicity, as we deleted
35 the use of asynchronous DNS resolution, connection, and TLS
36 negotiation for TLS streams.  You no longer need to consider the
37 resulting complexity and interesting race conditions when you write
38 Lisp programs that use network communications.  As a direct
39 consequence, the @code{:complete-negotiation} parameter of
40 @code{gnutls-boot} has become unnecessary, and was removed---just one
41 example of how removal of asynchronicity simplifies Emacs.
43 @item
44 We've removed the @file{puny.el} library, so Web sites with
45 non-@acronym{ASCII} URLs are no longer easily accessible.  But such
46 sites become more and more rare as you move back in time, so having a
47 specialized library for their support was deemed an unnecessary
48 maintenance burden.
50 @item
51 Field numbers like @samp{%2$} in format specifiers are no longer
52 available.  We decided that their use makes code reading and
53 comprehension much harder, and that having them is unjustified in the
54 past where similar features in popular C libraries will also be gone.
56 @item
57 Since the built-in capability to display line numbers has been removed
58 (@pxref{Antinews,,, emacs, The GNU Emacs Manual}), we've also deleted
59 the @code{line-number-display-width} function and the support for the
60 @code{display-line-numbers-disable} property, as Lisp programs that do
61 their own display layout decisions no longer need to cater to this
62 tricky feature.
64 @item
65 Regular expressions have been simplified by removing support for
66 Unicode character properties in the @code{[:blank:]} regexp class.  As
67 result, this class will match only spaces and tabs.  Once again, this
68 is in line with diminishing importance of Unicode as you move back in
69 time.
71 @item
72 For similar reasons, we removed the function @code{char-from-name}.
73 It should be easy enough to access the full list of Unicode characters
74 returned by @code{ucs-names} instead, for as long as Unicode support
75 in Emacs exists (which shouldn't be too long).
77 @item
78 Various functions that accept file names as arguments, such as
79 @code{file-attributes}, @code{file-symlink-p}, and
80 @code{make-symbolic-link} gained back the special support for file
81 names quoted with @samp{/:}, and they now interpret @samp{~} in
82 symlink targets as you'd expect: to mean your home directory.  The
83 confusing differences between the operation of these functions in
84 interactive and non-interactive invocations has been removed.
86 @item
87 The function @file{assoc} has been simplified by removing its third
88 optional argument.  It now always uses @code{equal} for comparison.
89 Likewise, @code{alist-get} always uses @code{assq}, and @code{map-get}
90 and @code{map-put} always use @code{eql} for their comparisons.
92 @item
93 GnuTLS cryptographic functions are no longer available in Emacs.  We
94 have decided that the needs for such functionality are deteriorating,
95 and their cumbersome interfaces make them hard to use.
97 @item
98 We have removed support for records of user-defined types, and
99 @code{cl-defstruct} no longer uses records.  This removes the
100 potential for quite a few places where existing and past code could be
101 broken by records.
103 @item
104 You can again use @code{string-as-unibyte},
105 @code{string-make-multibyte}, and other similar functions, without
106 being annoyed by messages about their deprecation.  This is in
107 preparation for removal of multibyte text from Emacs in the distance
108 past.
110 @item
111 The function @code{read-color} no longer displays color names using
112 each color as the background.  We have determined that this surprises
113 users and produces funny inconsistent results on color-challenged
114 terminals.
116 @item
117 We removed the function @code{file-name-case-insensitive-p}, as
118 testing for the OS symbol should be enough for the observable past to
119 come, and learning to use yet another API is a burden.
121 @item
122 The function @code{read-multiple-choice} is also gone, in recognition
123 of the fact that nothing makes Emacs Lisp hacker rejoice more than the
124 need to sit down and write yet another interactive question-and-answer
125 function, and make it optimal for each specific case.
127 @item
128 The function @code{add-variable-watcher} and the corresponding
129 debugger command @code{debug-on-variable-change} have been removed.
130 They make debugging more complicated, while examining the value of a
131 variable at each stop point is easy enough to cover the same use
132 cases.  Let simplicity rule!
134 @item
135 The function @code{mapcan} is gone; use @code{mapcar} instead, and
136 process the resulting list as you see fit.
138 @item
139 You can once again write a Lisp program that returns funny random
140 values from @code{file-attributes} by having another process alter the
141 filesystem while Emacs is accessing the file.  This can give rise to
142 some interesting applications in the near past.
144 @item
145 We have removed the functions @code{file-name-quote},
146 @code{file-name-unquote}, and @code{file-name-quoted-p}.  Writing code
147 that checks whether a file name is already quoted is easy, and doubly
148 quoting a file name should not produce any problems for well-written
149 Lisp code.
151 @item
152 Frame parameters like @code{z-group}, @code{min-width},
153 @code{parent-frame}, @code{delete-before}, etc. have been removed.
154 Emacs should not replace your window-manager, certainly not as
155 window-managers become less and less capable.
157 @item
158 We decided that the format of mode line and header line should be
159 customizable only based on buffers; the @code{mode-line-format} and
160 @code{header-line-format} window parameters have been removed.
162 @item
163 As part of the ongoing quest for simplicity, many other functions and
164 variables have been eliminated.
165 @end itemize