NEWS.org (14745B)
1 #+link: compat-srht https://todo.sr.ht/~pkal/compat/ 2 #+link: compat-gh https://github.com/emacs-compat/compat/issues/ 3 #+options: toc:nil num:nil author:nil 4 5 * Release of "Compat" Version 30.0.0.0 6 7 - compat-28: Mark =subr-native-elisp-p= as obsolete (renamed in Emacs 30). 8 - compat-30: New function =char-to-name=. 9 - compat-30: New function =obarray-clear=. 10 - compat-30: New function =interpreted-function-p=. 11 - compat-30: New function =primitive-function-p=. 12 - compat-30: New function =closurep=. 13 - compat-30: Add extended function =sort= with keyword arguments. 14 - compat-30: New function =value<=. 15 - compat-30: Add extended =copy-tree= with support for copying records with 16 non-nil optional second argument. 17 - compat-30: New macro =static-if=. 18 - compat-30: New alias =drop=. 19 - compat-30: New function =merge-ordered-lists=. 20 - compat-30: New variables =completion-lazy-hilit= and =completion-lazy-hilit-fn= 21 and new function =completion-lazy-hilit=. 22 - compat-30: New function =require-with-check=. 23 - compat-30: New functions =find-buffer= and =get-truename-buffer=. 24 - compat-30: Add extended =completion-metadata-get= with support for 25 =completion-category-overrides= and =completion-extra-properties=. 26 27 (Release <2024-07-08 Mon>) 28 29 * Release of "Compat" Version 29.1.4.5 30 31 - Minor optimization of ~plist-get~ and ~plist-put~. 32 - Minor compatibility adjustments for the Emacs 30 development version. 33 - A minimal version of =compat.el= will be part of Emacs 30. Emacs :core packages 34 can directly ~(require 'compat)~ without the ~NOERROR~ flag. Furthermore Compat 35 will not be installed unnecessarily. If a package depending on Emacs 25.1 and 36 Compat 29.1 is installed on Emacs 30.1, Compat 29.1 will not be installed from 37 ELPA, since Emacs 30.1 already provides the required functionality. 38 39 (Release <2024-03-16 Sat>) 40 41 * Release of "Compat" Version 29.1.4.4 42 43 - Fix ~Package-Requires~ header in compat.el 44 - Fix ~Maintainer~ header in compat.el 45 46 (Release <2023-11-13 Mon>) 47 48 * Release of "Compat" Version 29.1.4.3 49 50 - compat-29: Add function =char-uppercase-p=. 51 - compat-29: Add function =window-configuration-equal-p=. 52 53 (Release <2023-11-04 Sat>) 54 55 * Release of "Compat" Version 29.1.4.2 56 57 - compat-28: Improve =make-separator-line= visuals on graphic displays. 58 - compat-28: Add =native-comp-available-p=, which always returns nil. 59 - compat-29: Add variable =lisp-directory=. 60 61 (Release <2023-07-30 Sun>) 62 63 * Release of "Compat" Version 29.1.4.1 64 65 - compat-29: Add ~directory-abbrev-apply~. 66 - compat-29: Add ~directory-abbrev-make-regexp~. 67 68 (Release <2023-03-26 Sun>) 69 70 * Release of "Compat" Version 29.1.4.0 71 72 - compat-27: Drop obsolete ~compat-call dired-get-marked-files~. 73 - compat-28: Add support for ~defcustom~ type ~natnum~. 74 - compat-29: Add ~with-restriction~ and ~without-restriction~. 75 - compat-29: Add ~cl-constantly~. 76 - compat-29: Drop ~with-narrowing~ which was renamed to ~with-restriction~. 77 - compat-28: Add support for ~defcustom~ type ~key~. 78 79 (Release <2023-03-05 Sun>) 80 81 * Release of "Compat" Version 29.1.3.4 82 83 - Ensure that ~seq~ is required properly both at compile time and runtime, such 84 that compilation of downstream packages works even if Compat itself is not 85 compiled. Magit uses a complex continuous integration system, where Magit is 86 compiled and tested, while the Compat dependency is not compiled. 87 - compat-28: Add ~process-lines-handling-status~ and ~process-lines-ignore-status~. 88 89 (Release <2023-02-11 Sat>) 90 91 * Release of "Compat" Version 29.1.3.3 92 93 - compat-27: Add ~with-suppressed-warnings~. 94 - compat-29: Add ~cl-with-gensyms~ and ~cl-once-only~. 95 - compat-29: Load ~seq~, which is preloaded on Emacs 29. 96 97 (Release <2023-02-08 Wed>) 98 99 * Release of "Compat" Version 29.1.3.2 100 101 - compat-26: Add ~make-temp-file~ with optional argument TEXT. 102 - compat-27: Mark ~compat-call dired-get-marked-files~ as obsolete. See the 103 section limitations in the Compat manual. 104 - compat-29: Add ~funcall-with-delayed-message~ and ~with-delayed-message~. 105 - compat-29: Add ~ert-with-temp-file~ and ~ert-with-temp-directory~. 106 - compat-29: Add ~set-transient-map~ with optional arguments MESSAGE and TIMEOUT. 107 108 (Release <2023-02-01 Wed>) 109 110 * Release of "Compat" Version 29.1.3.1 111 112 - Fix regression, which prevented loading Compat in interpreted mode. We ensure 113 that Compat works interpreted and byte compiled by running the entire test 114 suite twice in the CI. See https://github.com/magit/magit/issues/4858 for the 115 corresponding Magit issue. 116 - compat-27: Add ~file-name-unquote~. 117 - compat-28: Add ~mark-thing-at-mouse~. 118 - compat-29: Replace ~string-lines~ with version from Emacs 29, support optional 119 KEEP-NEWLINES argument. 120 121 (Release <2023-01-25 Wed>) 122 123 * Release of "Compat" Version 29.1.3.0 124 125 - compat-25: Add ~hash-table-empty-p~. 126 - compat-25: Add ~macroexp-parse-body~ and ~macroexp-quote~. 127 - compat-25: Add ~region-noncontiguous-p~. 128 - compat-25: Add ~save-mark-and-excursion~. 129 - compat-26: Add ~read-answer~. 130 - compat-26: Add ~region-bounds~. 131 - compat-27: Add ~date-ordinal-to-time~. 132 - compat-27: Add ~file-size-human-readable-iec~. 133 - compat-27: Add ~major-mode-suspend~ and ~major-mode-restore~. 134 - compat-27: Add ~make-decoded-time~. 135 - compat-27: Add ~minibuffer-history-value~. 136 - compat-27: Add ~read-char-from-minibuffer~. 137 - compat-27: Add ~ring-resize~. 138 - compat-28: Add ~color-dark-p~. 139 - compat-28: Add ~directory-files-and-attributes~ with COUNT argument. 140 - compat-28: Add ~text-quoting-style~. 141 - compat-28: Add ~with-window-non-dedicated~. 142 - compat-29: Add ~buffer-local-set-state~ and ~buffer-local-restore-state~. 143 - compat-29: Add ~compiled-function-p~. 144 - compat-29: Add ~count-sentences~. 145 - compat-29: Add ~delete-line~. 146 - compat-29: Add ~get-scratch-buffer-create~. 147 - compat-29: Add ~list-of-strings-p~. 148 - compat-29: Add ~plist-get~ generalized variable. 149 - compat-29: Add ~plistp~. 150 - compat-29: Add ~read-multiple-choice~ with LONG-FORM argument. 151 - compat-29: Add ~readablep~. 152 - compat-29: Add ~substitute-quotes~. 153 - compat-29: Add ~use-region-beginning~, ~use-region-end~ and ~use-region-noncontiguous-p~. 154 - compat-29: Add ~with-narrowing~. 155 156 (Release <2023-01-22 Sun>) 157 158 * Release of "Compat" Version 29.1.2.0 159 160 - All compatibility functions are covered by tests! 161 - Add links from compatibility definitions to tests. 162 - BREAKING: Drop JSON parsing support (libjansson API, unused downstream). 163 - BREAKING: Drop ~null-device~ (unused downstream). 164 - BREAKING: Drop ~unlock-buffer~ (unused downstream). 165 - compat-26: Add ~buffer-hash~. 166 - compat-27: Add ~fixnump~ and ~bignump~. 167 - compat-27: Add ~with-minibuffer-selected-window~. 168 - compat-27: Add generalized variables for ~decoded-time-*~. 169 - compat-28: Add ~macroexp-warn-and-return~. 170 - compat-28: Add ~subr-native-elisp-p~. 171 - compat-28: Add ~bounds-of-thing-at-mouse~. 172 - compat-29: Add ~with-buffer-unmodified-if-unchanged~. 173 - compat-29: Fix and test ~define-key~ with REMOVE argument. 174 175 (Release <2023-01-16 Mon>) 176 177 * Release of "Compat" Version 29.1.1.1 178 179 - Add tests, 167 out of 203 definitions tested (82%). 180 - compat-25: Improve algorithmic complexity of ~sort~. 181 - compat-28: Add ~make-separator-line~. 182 - compat-29: Minor fixes to ~keymap-*~ functions. 183 - compat-29: Add ~with-memoization~. 184 - compat-29: Add ~buttonize~ and ~buttonize-region~. 185 186 (Release <2023-01-14 Sat>) 187 188 * Release of "Compat" Version 29.1.1.0 189 190 - The macros in ~compat-macs.el~ have been rewritten and simplified. The 191 refactoring allows to further refine the criteria under which compatibility 192 aliases, functions, macros and variables are installed. 193 - Remove deprecated, prefixed compatibility functions. 194 - Remove deprecated features ~compat-help~, ~compat-font-lock~ and ~compat-24~. 195 - Compat uses runtime checks (~boundp~, ~fboundp~) to ensure that existing 196 definitions are never overridden, when Compat is loaded on a newer Emacs than 197 it was compiled on. 198 - Compat compiles without byte compilation warnings on all supported Emacs 199 versions. Warnings are treated as errors in the test suite. 200 - Compat takes great care to remove unneeded definitions at compile time. On 201 recent Emacs 29 the byte compiled files are empty and not loaded, such that 202 Compat does not any cost to the Emacs process. 203 - compat-26: Fix and test ~image-property~ setter. 204 - compat-26: Fix and test ~read-multiple-choice~. 205 - compat-28: Fix and test ~with-existing-directory~. 206 - compat-28: Drop obsolete function ~make-directory-autoloads~. 207 - compat-29: Drop broken functions ~string-pixel-width~ and 208 ~buffer-text-pixel-size~. These functions had poor performance which lead to a 209 downstream issue in the doom-modeline package. If a more efficient solution is 210 possible, the function will be added back. See [[compat-gh:8]] for the bug report. 211 - compat-29: Drop broken function ~string-limit~. 212 - compat-29: Drop broken macro ~with-buffer-unmodified-if-unchanged~, which relied 213 on ~buffer-hash~ which does not exist on all supported Emacs versions. 214 - compat-29: Add ~pos-bol~ and ~pos-eol~. 215 216 (Release <2023-01-07 Sat>) 217 218 * Release of "Compat" Version 29.1.0.1 219 220 - Add multiple new tests for existing APIs. 221 - Fix bugs in compatibility functions: ~setq-local~, ~proper-list-p, prop-match-p~, 222 ~file-name-concat~, ~replace-regexp-in-region~, ~replace-string-in-region~. 223 - Add new Emacs 29 APIs. Some of them are still untested and may change. If you 224 intend to use an Emacs 29 API please be careful and if possible contribute 225 test cases. All untested functions are marked in the Compat code. Over time 226 tests for all functions will be added gradually. 227 - Add the macros ~compat-call~ and ~compat-function~ to call compatibility 228 functions. Since Compat avoids overwriting already existing functions, we must 229 define separate compatibility function definitions for functions which changed 230 their calling convention or behavior. These compatibility definitions can be 231 looked up using ~compat-function~ and called with ~compat-call~. For example ~assoc~ 232 can be called with a ~TESTFN~ since Emacs 26. In Emacs 25 and older the calling 233 convention was ~(assoc KEY ALIST)~. In order to use the new calling convention 234 you can use ~(compat-call assoc KEY ALIST TESTFN)~. 235 - Deprecate all ~compat-*~ prefixed functions. Instead use the aforementioned 236 ~compat-call~ or ~compat-function~ macros. 237 - Deprecate ~compat-help.el~ and ~compat-font-lock.el.~ 238 - Development moved to GitHub. 239 - BREAKING: Drop broken function ~func-arity~. Using ~func-arity~ is generally 240 discouraged and the function is hard to implement properly due to all the 241 various function types. There it is unlikely that the function will get 242 reintroduced in Compat. 243 - BREAKING: Drop broken function ~directory-files-recursively~. In case you need 244 this function, a patch including tests is welcome. 245 - BREAKING: Drop support for Emacs 24.3. Emacs 24.4 is required now. In case you 246 still need Emacs 24.3 support, you can rely on Compat 28.1.2.2. 247 248 (Release <2023-01-05 Thu>) 249 250 * Release of "Compat" Version 28.1.2.2 251 252 This is a minor release that hopes to address [[compat-srht:7]]. 253 254 (Release <2022-08-25 Thu>) 255 256 * Release of "Compat" Version 28.1.2.1 257 258 This is a minor release adding the following changes: 259 260 - Add =derived-mode-p= defined in Emacs 27 261 - Add =provided-mode-derived-p= defined in Emacs 27 262 - Add =read-multiple-choice= defined in Emacs 26 263 - Add =file-name-absolute-p= defined in Emacs 28 264 265 The only other notable change is that the manual has been rewritten to 266 include much more documentation that had been the case previously. 267 268 (Release <2022-08-24 Wed>) 269 270 * Release of "Compat" Version 28.1.2.0 271 272 The main change of this release has been the major simplification of 273 Compat's initialisation system, improving the situation around issues 274 people had been reporting ([[compat-srht:4]], once again) with unconventional 275 or unpopular packaging systems. 276 277 In addition to this, the following functional changes have been made: 278 279 - Fix =format-prompt= of an empty string as "default" argument 280 - Add =decoded-time-period= defined in Emacs 28 281 - Add =subr-primitive-p= defined in Emacs 28 282 283 Minor improvements to manual are also part of this release. 284 285 (Release <2022-07-18 Mon>) 286 287 * Release of "Compat" Version 28.1.1.3 288 289 This release just contains a hot-fix for an issue introduced in the 290 last version, where compat.el raises an error during byte compilation. 291 See [[compat-srht:4]]. 292 293 (Release <2022-06-19 Sun>) 294 295 * Release of "Compat" Version 28.1.1.2 296 297 Two main changes have necessitated a new patch release: 298 299 1. Fix issues related to the loading of compat when uncompiled. See 300 [[https://lists.sr.ht/~pkal/compat-devel/%3C20220530191000.2183047-1-jonas%40bernoul.li%3E][this thread]] for more details on the problem. 301 2. Fix issues related to the loading of compat on old pre-releases 302 (think of 28.0.50). See [[https://lists.sr.ht/~pkal/compat-devel/%3Cf8635d7d-e233-448f-b325-9e850363241c%40www.fastmail.com%3E][this thread]] for more details on the 303 problem. 304 305 (Released <2022-06-22 Wed>) 306 307 * Release of "Compat" Version 28.1.1.1 308 309 This is a minor release fixing a bug in =json-serialize=, that could 310 cause unintended side-effects, not related to packages using Compat 311 directly (see [[compat-srht:2]]). 312 313 (Released <2022-05-05 Thu>) 314 315 * Release of "Compat" Version 28.1.1.0 316 317 This release mostly fixes a number of smaller bugs that were not 318 identified as of 28.1.0.0. Nevertheless these warrant a version bump, 319 as some of these changes a functional. These include: 320 321 - The addition of the =file-attribute-*= accessor functions. 322 - The addition of =file-attribute-collect=. 323 - Improvements to the Texinfo manual (via Jonas Bernoulli's recent 324 work on =ox-texinfo=). For the time being, the Texinfo file is 325 maintained in the repository itself, next to the =MANUAL= file. 326 This might change in the future. 327 - Adding a prefix to =string-trim=, =string-trim-left= and 328 =string-trim-right= (i.e. now =compat-string-trim=, 329 =compat-string-trim-left= and =compat-string-trim-right=) 330 - Improving the version inference used in the =compat-*= macros. 331 This improves the compile-time optimisation that strips away 332 functions that are known to be defined for a specific version. 333 - The addition of generalised variable (=setf=) support for 334 =compat-alist-get=. 335 - The addition of =image-property= and generalised variable support 336 for =image-property=. 337 - The addition of the function =compat-executable-find=. 338 - The addition of the function =compat-dired-get-marked-files=. 339 - The addition of the function =exec-path=. 340 - The addition of the function =make-lock-file-name=. 341 - The addition of the function =null-device=. 342 - The addition of the function =time-equal-p=. 343 - The addition of the function =date-days-in-month=. 344 - Handling out-of-directory byte compilation better. 345 - Fixing the usage and edge-cases of =and-let*=. 346 347 (Released <2022-04-22 Fri>)