emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/compat 3cb6624b61: Manual: Clarify limitations of the l


From: ELPA Syncer
Subject: [elpa] externals/compat 3cb6624b61: Manual: Clarify limitations of the library
Date: Tue, 31 Jan 2023 09:57:27 -0500 (EST)

branch: externals/compat
commit 3cb6624b61ad757ab9c0ec56140e1d78a58e8ed3
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>

    Manual: Clarify limitations of the library
---
 compat.texi | 48 +++++++++++++++++++++++++++++++++++++-----------
 1 file changed, 37 insertions(+), 11 deletions(-)

diff --git a/compat.texi b/compat.texi
index b2f4878d84..f1aa74faeb 100644
--- a/compat.texi
+++ b/compat.texi
@@ -193,7 +193,9 @@ intended audience are package developers that are 
interested in using
 newer developments, without having to break compatibility.
 
 Complete backwards compatibility cannot be provided due to the scope
-of Compat and for technical reasons.  These might include:
+of Compat and for technical reasons.  The scope is intentionally
+restricted in order to limit the size of Compat and to ensure that the
+library stays maintainable.  The limitations include:
 
 @itemize
 @item
@@ -203,6 +205,18 @@ level''.  Generally functions provided by Compat are 
non-interactive,
 such that the user interface (M-x) is unaffected by the presence of
 Compat.
 
+@item
+The function is not useful for package authors or not intended to be
+used by packages, but is only useful on the configuration level.  The
+macro @code{setopt} is such an example.
+
+@item
+The added or extended function belongs to the ``application level''
+and not the ``library level''.  Features which not preloaded often
+belong to the ``application level''.  Application examples are
+programming modes or modes like Dired, IRC and Gnus.  If these modes
+are extended with new functions, these are not ported back.
+
 @item
 An existing function or macro was extended by some new functionality.
 To support these cases, the function or macro would have to be
@@ -210,19 +224,30 @@ advised. Since this is invasive and adds significant 
overhead, even
 when the new feature is not used, Compat does not use advices.  As a
 compromise, compatibility functions and macros with a changed calling
 convention or behavior can be accessed via the @code{compat-function}
-and @code{compat-call} macros.
+and @code{compat-call} macros. An example is the function
+@code{plist-get}.
 
 @item
-New functionality was implemented in the C core, and depends on
-external libraries that cannot be reasonably duplicated in the scope
-of a compatibility library.
+Bug fixes are usually not ported back as part of Compat.  Sometimes
+library functions show wrong behavior for edge cases.  In those cases
+Compat could in principle provide a compatibility function which is
+invoked via @code{compat-call}. Such extended definitions would
+increase the maintainance burden of Compat. At the same time the
+benefits would be small given that Compat does not override existing
+definitions.
 
 @item
 New functionality depends on an entire new, non-trivial library.
-Sometimes these are provided via ELPA (xref, project, @dots{}), but
-other times it would be infeasible to duplicate an entire library
-within Compat while also providing the necessary backwards
-compatibility.
+Sometimes these are provided via ELPA (xref, project, seq, map,
+@dots{}), but other times it would be infeasible to duplicate an
+entire library within Compat while also providing the necessary
+backwards compatibility.
+
+@item
+New functionality was implemented in the C core, and depends on
+external libraries that cannot be reasonably duplicated in the scope
+of a compatibility library. For example a missing libxml cannot be
+emulated.
 
 @item
 The semantics of Elisp changed on a deep level. For example the
@@ -242,8 +267,9 @@ function provided by libjansson.
 @item
 It just was not added without a good reason.  If you happen to find
 such a function, @ref{Development, , reporting} it would be much
-appreciated. Always begin by assuming that this might be the case,
-unless proven otherwise.
+appreciated.  Note that in some special cases exceptions can be made
+and functions can still be added even if they satisfy the
+aforementioned criteria.
 @end itemize
 
 @node Support



reply via email to

[Prev in Thread] Current Thread [Next in Thread]