Version 29.1.0.1 of package Compat has just been released in GNU ELPA. You can now find it in M-x list-packages RET.
Compat describes itself as: ================================ Emacs Lisp Compatibility Library ================================ More at https://elpa.gnu.org/packages/compat.html ## Summary: To allow for the usage of Emacs functions and macros that are defined in newer versions of Emacs, compat.el provides definitions that are installed ONLY if necessary. If Compat is installed on a recent version of Emacs, all of the definitions are disabled at compile time, such that no negative performance impact is incurred. These reimplementations of functions and macros are at least subsets of the actual implementations. Be sure to read the documentation string to make sure. ## Recent NEWS: ━━━━━━━━━━━━━━━━━━━━━━━ COMPAT.EL - CHANGELOG ━━━━━━━━━━━━━━━━━━━━━━━ 1 Release of "Compat" Version 29.1.0.1 ══════════════════════════════════════ • Add multiple new tests for existing APIs. • Fix bugs in compatibility functions: `setq-local', `proper-list-p, prop-match-p', `file-name-concat', `replace-regexp-in-region', `replace-string-in-region'. • Add new Emacs 29 APIs. Some of them are still untested and may change. If you intend to use an Emacs 29 API please be careful and if possible contribute test cases. All untested functions are marked as `<UNTESTED>' in the Compat code. Over time tests for all functions will be added gradually. • Add the macros `compat-call' and `compat-function' to call compatibility functions. Since Compat avoids overwriting already existing functions, we must define separate compatibility function definitions for functions which changed their calling convention or behavior. These compatibility definitions can be looked up using `compat-function' and called with `compat-call'. For example `assoc' can be called with a `TESTFN' since Emacs 29. In Emacs 28 and older the calling convention was `(assoc KEY ALIST)'. In order to use the new calling convention you can use `(compat-call assoc KEY ALIST TESTFN)'. • Deprecate all `compat-*' prefixed functions. Instead use the aforementioned `compat-call' or `compat-function' macros. • Deprecate `compat-help.el' and `compat-font-lock.el.' • Development moved to GitHub. • BREAKING: Drop broken function `func-arity'. Using `func-arity' is generally discouraged and the function is hard to implement properly due to all the various function types. There it is unlikely that the function will get reintroduced in Compat. • BREAKING: Drop broken function `directory-files-recursively'. In case you need this function, a patch including tests is welcome. • BREAKING: Drop support for Emacs 24.3. Emacs 24.4 is required now. In case you still need Emacs 24.3 support, you can rely on Compat 28.1.2.2. (Release <2023-01-05 Thu>) 2 Release of "Compat" Version 28.1.2.2 ══════════════════════════════════════ This is a minor release that hopes to address . (Release <2022-08-25 Thu>) 3 Release of "Compat" Version 28.1.2.1 ══════════════════════════════════════ This is a minor release adding the following changes: • Add `derived-mode-p' defined in Emacs 27 • Add `provided-mode-derived-p' defined in Emacs 27 • Add `read-multiple-choice' defined in Emacs 26 • Add `file-name-absolute-p' defined in Emacs 28 The only other notable change is that the manual has been rewritten to include much more documentation that had been the case previously. (Release <2022-08-24 Wed>) 4 Release of "Compat" Version 28.1.2.0 ══════════════════════════════════════ The main change of this release has been the major simplification of Compat's initialisation system, improving the situation around issues people had been reporting (, once again) with unconventional or unpopular packaging systems. In addition to this, the following functional changes have been made: • Fix `format-prompt' of an empty string as "default" argument • Add `decoded-time-period' defined in Emacs 28 • Add `subr-primitive-p' defined in Emacs 28 Minor improvements to manual are also part of this release. (Release <2022-07-18 Mon>) 5 Release of "Compat" Version 28.1.1.3 ══════════════════════════════════════ This release just contains a hot-fix for an issue introduced in the last version, where compat.el raises an error during byte compilation. See . (Release <2022-06-19 Sun>) 6 Release of "Compat" Version 28.1.1.2 ══════════════════════════════════════ Two main changes have necessitated a new patch release: 1. Fix issues related to the loading of compat when uncompiled. See [this thread] for more details on the problem. 2. Fix issues related to the loading of compat on old pre-releases (think of 28.0.50). See [this thread] for more details on the problem. (Released <2022-06-22 Wed>) [this thread] <https://lists.sr.ht/~pkal/compat-devel/%3C20220530191000.2183047-1-jonas%40bernoul.li%3E> [this thread] <https://lists.sr.ht/~pkal/compat-devel/%3Cf8635d7d-e233-448f-b325-9e850363241c%40www.fastmail.com%3E> 7 Release of "Compat" Version 28.1.1.1 ══════════════════════════════════════ … …