Our great sponsors
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
After that you can start using the functions, macros and variables provided by Compat. See the manual or the source for a detailed listing of all the provided functionality, and the NEWS file for new additions. Some functions have been extended between Emacs versions. For example the function plist-get supports an additional optional PREDICATE argument since Emacs 29. Such extended functions are provided by Compat too, but need special treatment if you want to use them. Compat provides the compat-call and compat-function macros specially for that purpose. Please take a look at the manual for further details.
Compat is already widely rolled and may already be part of your setup, since it is used by the current Magit development version. I use Compat in all of my packages, including Vertico, Consult and Corfu. My packages usually depend on Emacs 27.1, which is not that far back. Given Compat I can keep supporting 27.1 for the foreseeable future. The reason for not supporting older Emacs versions is that these packages rely on proper behavior of the Emacs display engine. These examples show the limitations of Compat - while we can "polyfill" missing functions, we cannot fix bugs in the display engine or backport features relying on internals of the C runtime system.
Compat is already widely rolled and may already be part of your setup, since it is used by the current Magit development version. I use Compat in all of my packages, including Vertico, Consult and Corfu. My packages usually depend on Emacs 27.1, which is not that far back. Given Compat I can keep supporting 27.1 for the foreseeable future. The reason for not supporting older Emacs versions is that these packages rely on proper behavior of the Emacs display engine. These examples show the limitations of Compat - while we can "polyfill" missing functions, we cannot fix bugs in the display engine or backport features relying on internals of the C runtime system.
Compat is already widely rolled and may already be part of your setup, since it is used by the current Magit development version. I use Compat in all of my packages, including Vertico, Consult and Corfu. My packages usually depend on Emacs 27.1, which is not that far back. Given Compat I can keep supporting 27.1 for the foreseeable future. The reason for not supporting older Emacs versions is that these packages rely on proper behavior of the Emacs display engine. These examples show the limitations of Compat - while we can "polyfill" missing functions, we cannot fix bugs in the display engine or backport features relying on internals of the C runtime system.
Thank you for reading that far. If you have feedback, questions or improvement proposals, please let me know. I hope that Compat is useful for you. If you miss some important functionality, feel free to open an issue on the issue tracker. Any help in adding missing functionality is welcome. In case you are interested in upstream development, you may want to help with scanning through years of the Emacs Git log for added functionality. A laborious process, but the Emacs library diffs from package-lint are useful. Unfortunately package-lint does not yet support Compat and warns if you use compatibility functions. Also package-lint does not yet track argument number changes. Help with those package-lint issues would be greatly appreciated.