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