aboutsummaryrefslogtreecommitdiff
path: root/compat.el
AgeCommit message (Collapse)Author
2024-07-08Version 30.0.0.030.0.0.0emacs-30Daniel Mendler
2024-03-16Merge branch 'main' into emacs-30Daniel Mendler
2024-03-16Version 29.1.4.529.1.4.5Daniel Mendler
2024-01-20Merge branch 'main' into emacs-30Daniel Mendler
2024-01-20compat--maybe-require: Rename macro to reduce churnDaniel Mendler
2024-01-12Merge branch 'main' into emacs-30Daniel Mendler
2024-01-12Update copyright yearsDaniel Mendler
2023-11-13Merge branch 'main' into emacs-30Daniel Mendler
2023-11-13Version 29.1.4.429.1.4.4Daniel Mendler
2023-11-12The maintainer field accepts only a single mail addressDaniel Mendler
2023-11-07Merge branch 'main' into emacs-30Daniel Mendler
2023-11-07fix(compat.el): Package-Requires "seq" = 2.3 -> 2.23 (#31)Sylvain Bougerel
2023-11-04Merge branch 'main' into emacs-30Daniel Mendler
2023-11-04Version 29.1.4.329.1.4.3Daniel Mendler
2023-08-17Merge branch 'master' into emacs-30Philip Kaludercic
2023-07-30Version 29.1.4.229.1.4.2Daniel Mendler
2023-07-23Relax compat-loaded-features testDaniel Mendler
2023-07-23Update Emacs version to 29.1Daniel Mendler
See emacs-29 branch commit 7d1737071fba1fd83039aac34f34f6b90c9579b8
2023-05-24Prepare support for Emacs 30Philip Kaludercic
2023-05-21Revert "Prepare support for Emacs 30"Philip Kaludercic
This reverts commit 1b5e81c350618710b3f5b62eec8d53ff363847f8.
2023-05-21Prepare support for Emacs 30Philip Kaludercic
2023-05-10More precise version checkingDaniel Mendler
Make sure that compat-29 is still loaded on outdated Emacs 29 builds.
2023-04-10Add maint keywordDaniel Mendler
2023-03-26Version 29.1.4.129.1.4.1Daniel Mendler
2023-03-05Version 29.1.4.029.1.4.0Daniel Mendler
2023-02-11Version 29.1.3.429.1.3.4Daniel Mendler
2023-02-11More robust method to require libraries conditionallyDaniel Mendler
2023-02-08Version 29.1.3.329.1.3.3Daniel Mendler
2023-02-08compat-29: Preload seqDaniel Mendler
2023-02-01Version 29.1.3.229.1.3.2Daniel Mendler
2023-01-27Improve commentaryDaniel Mendler
2023-01-25Version 29.1.3.129.1.3.1Daniel Mendler
2023-01-25Revert "Add json-parse-string, json-parse-buffer, json-serialize and ↵Daniel Mendler
json-insert" This reverts commit 7e678b3fa102a86553921d6c24056bbbe5365c7e. I am reconsidering if we can or should provide compatibility functions for features which may or may not be available at runtime, depending on compile flags or the availability of a shared object and which are not only tied to the Emacs version. The problem is that if such features are used by core packages, e.g., python.el or jsonrpc.el, then the compatibility code for this feature would have to be provided by Emacs itself, such that in case the feature is missing, the compatibility code can be loaded. There is no problem for external packages which use Compat, but it may not be a good idea to provide features as part of Compat which are only usable by external packages. Ideally the compatibility code from this reverted commit could be added to Emacs itself, such that the json APIs are always available independent of libjansson.
2023-01-25Add docstringDaniel Mendler
2023-01-24Add json-parse-string, json-parse-buffer, json-serialize and json-insertDaniel Mendler
2023-01-22Version 29.1.3.029.1.3.0Daniel Mendler
2023-01-21compat: Improve docstringsDaniel Mendler
2023-01-21Rename :explicit to :extendedDaniel Mendler
2023-01-21Improve commentaryDaniel Mendler
2023-01-18compat: Improve docstringsDaniel Mendler
2023-01-17compat-function: Whitespace fix in docstringDaniel Mendler
2023-01-16Version 29.1.2.029.1.2.0Daniel Mendler
2023-01-16Bump snapshot versionDaniel Mendler
2023-01-16Drop JSON support for now (libjansson)Daniel Mendler
I have not taken this decision lightly. There are currently no consumers of the backported JSON api, which allows us to take this measure. The problem is that backporting the libjansson API on top of json.el is non-trivial and led to numerous problems: 1. There is a significant mismatch between the libjansson API and the json.el API. 2. The libjansson API did not support RFC 8259 when it was introduced in 27 This was corrected in 28, which requires Compat to provide two compatibility versions for the json functions. 3. The `json-serialize' compatibility function was very inefficient, since it has to walk and copy the entire object tree in order to repair certain objects for the consumption by `json-encode'. This adds slowness on top of the already slow json.el implementation. 4. `json-parse-buffer' (RFC 8259) modifies the buffer in order to support toplevel object parsing and relies on undo to restore the buffer state. This will not work for read-only buffers and for buffers with disable undo and will have other undesired side effects. 5. The performance of libjansson and json.el are too different. It will be unexpected if a backported API is suddenly much slower as expected. This leads to performance bugs downstream. For now the JSON support lives in the json branch. We can reinstate it slowly and on-demand if necessary. However experience with the `string-pixel-width' function showed that we have to be careful when backports are much slower than the original function due to performance bugs.
2023-01-14Version 29.1.1.129.1.1.1Daniel Mendler
2023-01-10compat-function: Expand docstringDaniel Mendler
2023-01-07Version 29.1.1.029.1.1.0Daniel Mendler
2023-01-07compat.el: Add missing compat-declare-versionDaniel Mendler
2023-01-06Move json functions to compat.elDaniel Mendler
These functions are defined conditionally. Therefore they must not be part of the versioned files. Conditionally-defined functions are a special complicated edge case, which need more testing. Therefore the json functions are currently marked as UNTESTED.
2023-01-06compat-tests: Test that no unnecessary compat-* files are loadedDaniel Mendler