summaryrefslogtreecommitdiff
path: root/doc/lispref/anti.texi
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2017-09-02 12:37:51 +0300
committerEli Zaretskii <eliz@gnu.org>2017-09-02 12:37:51 +0300
commitc89f3ff3dc6c744c71808c40dc52c61979c57a4b (patch)
treef5c7a998907deee16d71816068dd1d70055f999b /doc/lispref/anti.texi
parent2b91b841b23a17884b5da63dea27604496a93b67 (diff)
downloademacs-c89f3ff3dc6c744c71808c40dc52c61979c57a4b.tar.gz
Rewrite Antinews for Emacs 26
* doc/lispref/anti.texi (Antinews): Rewrite for Emacs 26. * doc/lispref/elisp.texi (Top): Update the top-level menu's Antinews entry. * doc/emacs/anti.texi (Antinews): Rewrite for Emacs 26. * doc/emacs/emacs.texi (Top): Update the top-level menu's Antinews entry. * etc/NEWS: Rearrange some entries in a more reasonable order.
Diffstat (limited to 'doc/lispref/anti.texi')
-rw-r--r--doc/lispref/anti.texi188
1 files changed, 118 insertions, 70 deletions
diff --git a/doc/lispref/anti.texi b/doc/lispref/anti.texi
index 02d08ebc019..fc14c8cfca5 100644
--- a/doc/lispref/anti.texi
+++ b/doc/lispref/anti.texi
@@ -6,110 +6,158 @@
@c This node must have no pointers.
@node Antinews
-@appendix Emacs 24 Antinews
+@appendix Emacs 25 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 24.5. We hope you will enjoy the greater
-simplicity that results from the absence of many Emacs @value{EMACSVER}
-features.
+downgrading to Emacs version 25.2. We hope you will enjoy the greater
+simplicity that results from the absence of many @w{Emacs
+@value{EMACSVER}} features.
-@section Old Lisp Features in Emacs 24
+@section Old Lisp Features in Emacs 25
@itemize @bullet
@item
-The requirement that @code{setq} and @code{setf} must be called with
-an even number of arguments has been removed. You can now call them
-with an odd number of arguments, and Emacs will helpfully supply a
-@code{nil} for the missing one. Simplicity rules!
+The concurrency features have been removed. Even in its limited
+``mostly cooperative'' form, with only one Lisp thread running at any
+given time, it made Emacs significantly more complex for Lisp programs
+that need to work correctly in the presence of additional threads.
@item
-@kbd{M-x shell} and @kbd{M-x compile} set the @env{EMACS} environment
-variable, as they should, to indicate that the subprocess is run by
-Emacs. This is so packages that took years to learn how to work
-around that setting could continue using their code to that effect.
+Handling of file attributes has been simplified by discarding the
+accessor functions, such as @code{file-attribute-type} and
+@code{file-attribute-modification-time}. Real Lisp programmers always
+access the individual attributes by their ordinal numbers, and can
+recite those numbers in their sleep.
@item
-The @code{save-excursion} form saves and restores the mark, as
-expected. No more need for the new @code{save-mark-and-excursion},
-which has been deleted.
+The networking code is back at its pristine simplicity, as we deleted
+the use of asynchronous DNS resolution, connection, and TLS
+negotiation for TLS streams. You no longer need to consider the
+resulting complexity and interesting race conditions when you write
+Lisp programs that use network communications. As a direct
+consequence, the @code{:complete-negotiation} parameter of
+@code{gnutls-boot} has become unnecessary, and was removed---just one
+example of how removal of asynchronicity simplifies Emacs.
@item
-We have removed the @code{text-quoting-style} variable and the
-associated functionality that translates quote characters in messages
-displayed to the user and in help buffers. Emacs now shows exactly
-the same quote characters as you wrote in your code! Likewise,
-@code{substitute-command-keys} leaves the quote characters alone. As
-you move back in time, Unicode support becomes less and less
-important, so no need to display those fancy new quotes the Unicode
-Standard invented.
+We've removed the @file{puny.el} library, so Web sites with
+non-@acronym{ASCII} URLs are no longer easily accessible. But such
+sites become more and more rare as you move back in time, so having a
+specialized library for their support was deemed an unnecessary
+maintenance burden.
+
+@item
+Field numbers like @samp{%2$} in format specifiers are no longer
+available. We decided that their use makes code reading and
+comprehension much harder, and that having them is unjustified in the
+past where similar features in popular C libraries will also be gone.
+
+@item
+Since the built-in capability to display line numbers has been removed
+(@pxref{Antinews,,, emacs, The GNU Emacs Manual}), we've also deleted
+the @code{line-number-display-width} function and the support for the
+@code{display-line-numbers-disable} property, as Lisp programs that do
+their own display layout decisions no longer need to cater to this
+tricky feature.
@item
Regular expressions have been simplified by removing support for
-Unicode character properties in regexp classes. As result,
-@code{[:alpha:]} and @code{[:alnum:]} will match any character with a
-word syntax, and @code{[:graph:]} and @code{[:print:]} will match any
-multibyte character, including surrogates and unassigned codepoints.
-Once again, this is in line with diminishing importance of Unicode as
-you move back in time.
+Unicode character properties in the @code{[:blank:]} regexp class. As
+result, this class will match only spaces and tabs. Once again, this
+is in line with diminishing importance of Unicode as you move back in
+time.
+
+@item
+For similar reasons, we removed the function @code{char-from-name}.
+It should be easy enough to access the full list of Unicode characters
+returned by @code{ucs-names} instead, for as long as Unicode support
+in Emacs exists (which shouldn't be too long).
+
+@item
+Various functions that accept file names as arguments, such as
+@code{file-attributes}, @code{file-symlink-p}, and
+@code{make-symbolic-link} gained back the special support for file
+names quoted with @samp{/:}, and they now interpret @samp{~} in
+symlink targets as you'd expect: to mean your home directory. The
+confusing differences between the operation of these functions in
+interactive and non-interactive invocations has been removed.
+
+@item
+The function @file{assoc} has been simplified by removing its third
+optional argument. It now always uses @code{equal} for comparison.
+Likewise, @code{alist-get} always uses @code{assq}, and @code{map-get}
+and @code{map-put} always use @code{eql} for their comparisons.
+
+@item
+GnuTLS cryptographic functions are no longer available in Emacs. We
+have decided that the needs for such functionality are deteriorating,
+and their cumbersome interfaces make them hard to use.
+
+@item
+We have removed support for records of user-defined types, and
+@code{cl-defstruct} no longer uses records. This removes the
+potential for quite a few places where existing and past code could be
+broken by records.
+
+@item
+You can again use @code{string-as-unibyte},
+@code{string-make-multibyte}, and other similar functions, without
+being annoyed by messages about their deprecation. This is in
+preparation for removal of multibyte text from Emacs in the distance
+past.
@item
-Evaluating @samp{(/ @var{n})} will now yield @var{n}. We have
-realized that interpreting that as in Common Lisp was a bad mistake
-that needed to be corrected.
+The function @code{read-color} no longer displays color names using
+each color as the background. We have determined that this surprises
+users and produces funny inconsistent results on color-challenged
+terminals.
@item
-The @code{pcase} form was significantly simplified by removing the
-UPatterns @code{quote} and @code{app}. To further simplify this
-facility, we've removed @code{pcase-defmacro}, since we found no need
-for letting Lisp programs define new UPatterns.
+We removed the function @code{file-name-case-insensitive-p}, as
+testing for the OS symbol should be enough for the observable past to
+come, and learning to use yet another API is a burden.
@item
-We've removed the text properties @code{cursor-intangible} and
-@code{cursor-sensor-functions}, replacing them by the much simpler
-@code{intangible}, @code{point-entered}, and @code{point-left}
-properties. The latter are implemented on a much lower level, and
-therefore are better integrated with user expectations. For similar
-reasons, @code{cursor-intangible-mode} and @code{cursor-sensor-mode}
-were removed; use the hook variable @code{inhibit-point-motion-hooks}
-which is no longer obsolete.
+The function @code{read-multiple-choice} is also gone, in recognition
+of the fact that nothing makes Emacs Lisp hacker 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.
@item
-Process creation and management functions were significantly improved
-and simplified by removing @code{make-process} and the @code{pipe}
-connection type. Redirecting @code{stderr} of a subprocess should be
-done with shell facilities, not by Emacs.
+The function @code{add-variable-watcher} and the corresponding
+debugger command @code{debug-on-variable-change} have been removed.
+They make debugging more complicated, while examining the value of a
+variable at each stop point is easy enough to cover the same use
+cases. Let simplicity rule!
@item
-We decided that shutting up informative messages is bad for user
-interaction, so we've removed the @code{inhibit-message} variable
-which could be used to that effect.
+The function @code{mapcan} is gone; use @code{mapcar} instead, and
+process the resulting list as you see fit.
@item
-Support for generators and for finalizers has been removed, as we
-found no real need for these facilities.
+You can once again write a Lisp program that returns funny random
+values from @code{file-attributes} by having another process alter the
+filesystem while Emacs is accessing the file. This can give rise to
+some interesting applications in the near past.
@item
-Due to excessive complexity and the diminishing need for Unicode
-support, the functions @code{string-collate-lessp} and
-@code{string-collate-equalp} were removed. Their locale-independent
-counterparts @code{string-lessp} and @code{string-equal} are so much
-more simple and yield predictable results that we don't see any
-situation where the locale-dependent collation could be useful in
-Emacs. As result, the @file{ls-lisp.el} package sorts files in a
-locale-independent manner.
+We have removed the functions @code{file-name-quote},
+@code{file-name-unquote}, and @code{file-name-quoted-p}. Writing code
+that checks whether a file name is already quoted is easy, and doubly
+quoting a file name should not produce any problems for well-written
+Lisp code.
@item
-In preparation for removal in some past version of Emacs of the
-bidirectional editing support, we started by deleting two functions
-@code{bidi-find-overridden-directionality} and
-@code{buffer-substring-with-bidi-context}.
+Frame parameters like @code{z-group}, @code{min-width},
+@code{parent-frame}, @code{delete-before}, etc. have been removed.
+Emacs should not replace your window-manager, certainly not as
+window-managers become less and less capable.
@item
-Time conversion functions, such as @code{current-time-string}, no
-longer accept an optional @var{zone} argument. If you need to change
-the current time zone (why?), do that explicitly with
-@code{set-time-zone-rule}.
+We decided that the format of mode line and header line should be
+customizable only based on buffers; the @code{mode-line-format} and
+@code{header-line-format} window parameters have been removed.
@item
As part of the ongoing quest for simplicity, many other functions and