aboutsummaryrefslogtreecommitdiff
path: root/NEWS.org
blob: 5ba233a06b21f05124202877ac7a40ece8c46e85 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
#+link:    compat-srht https://todo.sr.ht/~pkal/compat/
#+link:    compat-gh   https://github.com/emacs-compat/compat/issues/
#+options: toc:nil num:nil author:nil

* Development

- compat-28: New pcase pattern =cl-type=.
- compat-31: New macros =static-when= and =static-unless=.
- compat-31: New functions =oddp= and =evenp=.
- compat-31: New functions =minusp= and =plusp=.
- compat-31: New macros =incf= and =decf=.
- compat-31: New function =color-blend=.
- compat-31: New function =completion-table-with-metadata=.
- compat-31: New function =completion-list-candidate-at-point=.
- compat-31: New macro =with-work-buffer=.
- compat-31: New function =unbuttonize-region=.
- compat-31: New extended function =seconds-to-string=.
- compat-31: New function =hash-table-contains-p=.
- compat-31: New function =remove-display-text-property=.
- Drop support for Emacs 24.x. Emacs 25.1 is required now. In case
  Emacs 24.x support is still needed, Compat 30 can be used.

* Release of "Compat" Version 30.1.0.1

- compat-28: Fix =named-let= tail recursion.

(Release <2025-06-19 Thu>)

* Release of "Compat" Version 30.1.0.0

- compat-30: Add oklab color functions.

(Release <2025-04-02 Wed>)

* Release of "Compat" Version 30.0.2.0

- compat-30: Rename =trusted-files= to =trusted-content=.

(Release <2025-01-04 Sat>)

* Release of "Compat" Version 30.0.1.0

- compat-30: New variable =untrusted-content=.
- compat-30: New variable =trusted-files=.
- compat-30: New function =trusted-content-p=.

(Release <2024-12-15 Sun>)

* Release of "Compat" Version 30.0.0.0

- compat-28: Mark =subr-native-elisp-p= as obsolete (renamed in Emacs 30).
- compat-30: New function =char-to-name=.
- compat-30: New function =obarray-clear=.
- compat-30: New function =interpreted-function-p=.
- compat-30: New function =primitive-function-p=.
- compat-30: New function =closurep=.
- compat-30: Add extended function =sort= with keyword arguments.
- compat-30: New function =value<=.
- compat-30: Add extended =copy-tree= with support for copying records with
  non-nil optional second argument.
- compat-30: New macro =static-if=.
- compat-30: New alias =drop=.
- compat-30: New function =merge-ordered-lists=.
- compat-30: New variables =completion-lazy-hilit= and =completion-lazy-hilit-fn=
  and new function =completion-lazy-hilit=.
- compat-30: New function =require-with-check=.
- compat-30: New functions =find-buffer= and =get-truename-buffer=.
- compat-30: Add extended =completion-metadata-get= with support for
  =completion-category-overrides= and =completion-extra-properties=.

(Release <2024-07-08 Mon>)

* Release of "Compat" Version 29.1.4.5

- Minor optimization of ~plist-get~ and ~plist-put~.
- Minor compatibility adjustments for the Emacs 30 development version.
- A minimal version of =compat.el= will be part of Emacs 30. Emacs :core packages
  can directly ~(require 'compat)~ without the ~NOERROR~ flag. Furthermore Compat
  will not be installed unnecessarily. If a package depending on Emacs 25.1 and
  Compat 29.1 is installed on Emacs 30.1, Compat 29.1 will not be installed from
  ELPA, since Emacs 30.1 already provides the required functionality.

(Release <2024-03-16 Sat>)

* Release of "Compat" Version 29.1.4.4

- Fix ~Package-Requires~ header in compat.el
- Fix ~Maintainer~ header in compat.el

(Release <2023-11-13 Mon>)

* Release of "Compat" Version 29.1.4.3

- compat-29: Add function =char-uppercase-p=.
- compat-29: Add function =window-configuration-equal-p=.

(Release <2023-11-04 Sat>)

* Release of "Compat" Version 29.1.4.2

- compat-28: Improve =make-separator-line= visuals on graphic displays.
- compat-28: Add =native-comp-available-p=, which always returns nil.
- compat-29: Add variable =lisp-directory=.

(Release <2023-07-30 Sun>)

* Release of "Compat" Version 29.1.4.1

- compat-29: Add ~directory-abbrev-apply~.
- compat-29: Add ~directory-abbrev-make-regexp~.

(Release <2023-03-26 Sun>)

* Release of "Compat" Version 29.1.4.0

- compat-27: Drop obsolete ~compat-call dired-get-marked-files~.
- compat-28: Add support for ~defcustom~ type ~natnum~.
- compat-29: Add ~with-restriction~ and ~without-restriction~.
- compat-29: Add ~cl-constantly~.
- compat-29: Drop ~with-narrowing~ which was renamed to ~with-restriction~.
- compat-28: Add support for ~defcustom~ type ~key~.

(Release <2023-03-05 Sun>)

* Release of "Compat" Version 29.1.3.4

- Ensure that ~seq~ is required properly both at compile time and runtime, such
  that compilation of downstream packages works even if Compat itself is not
  compiled. Magit uses a complex continuous integration system, where Magit is
  compiled and tested, while the Compat dependency is not compiled.
- compat-28: Add ~process-lines-handling-status~ and ~process-lines-ignore-status~.

(Release <2023-02-11 Sat>)

* Release of "Compat" Version 29.1.3.3

- compat-27: Add ~with-suppressed-warnings~.
- compat-29: Add ~cl-with-gensyms~ and ~cl-once-only~.
- compat-29: Load ~seq~, which is preloaded on Emacs 29.

(Release <2023-02-08 Wed>)

* Release of "Compat" Version 29.1.3.2

- compat-26: Add ~make-temp-file~ with optional argument TEXT.
- compat-27: Mark ~compat-call dired-get-marked-files~ as obsolete. See the
  section limitations in the Compat manual.
- compat-29: Add ~funcall-with-delayed-message~ and ~with-delayed-message~.
- compat-29: Add ~ert-with-temp-file~ and ~ert-with-temp-directory~.
- compat-29: Add ~set-transient-map~ with optional arguments MESSAGE and TIMEOUT.

(Release <2023-02-01 Wed>)

* Release of "Compat" Version 29.1.3.1

- Fix regression, which prevented loading Compat in interpreted mode. We ensure
  that Compat works interpreted and byte compiled by running the entire test
  suite twice in the CI. See https://github.com/magit/magit/issues/4858 for the
  corresponding Magit issue.
- compat-27: Add ~file-name-unquote~.
- compat-28: Add ~mark-thing-at-mouse~.
- compat-29: Replace ~string-lines~ with version from Emacs 29, support optional
  KEEP-NEWLINES argument.

(Release <2023-01-25 Wed>)

* Release of "Compat" Version 29.1.3.0

- compat-25: Add ~hash-table-empty-p~.
- compat-25: Add ~macroexp-parse-body~ and ~macroexp-quote~.
- compat-25: Add ~region-noncontiguous-p~.
- compat-25: Add ~save-mark-and-excursion~.
- compat-26: Add ~read-answer~.
- compat-26: Add ~region-bounds~.
- compat-27: Add ~date-ordinal-to-time~.
- compat-27: Add ~file-size-human-readable-iec~.
- compat-27: Add ~major-mode-suspend~ and ~major-mode-restore~.
- compat-27: Add ~make-decoded-time~.
- compat-27: Add ~minibuffer-history-value~.
- compat-27: Add ~read-char-from-minibuffer~.
- compat-27: Add ~ring-resize~.
- compat-28: Add ~color-dark-p~.
- compat-28: Add ~directory-files-and-attributes~ with COUNT argument.
- compat-28: Add ~text-quoting-style~.
- compat-28: Add ~with-window-non-dedicated~.
- compat-29: Add ~buffer-local-set-state~ and ~buffer-local-restore-state~.
- compat-29: Add ~compiled-function-p~.
- compat-29: Add ~count-sentences~.
- compat-29: Add ~delete-line~.
- compat-29: Add ~get-scratch-buffer-create~.
- compat-29: Add ~list-of-strings-p~.
- compat-29: Add ~plist-get~ generalized variable.
- compat-29: Add ~plistp~.
- compat-29: Add ~read-multiple-choice~ with LONG-FORM argument.
- compat-29: Add ~readablep~.
- compat-29: Add ~substitute-quotes~.
- compat-29: Add ~use-region-beginning~, ~use-region-end~ and ~use-region-noncontiguous-p~.
- compat-29: Add ~with-narrowing~.

(Release <2023-01-22 Sun>)

* Release of "Compat" Version 29.1.2.0

- All compatibility functions are covered by tests!
- Add links from compatibility definitions to tests.
- BREAKING: Drop JSON parsing support (libjansson API, unused downstream).
- BREAKING: Drop ~null-device~ (unused downstream).
- BREAKING: Drop ~unlock-buffer~ (unused downstream).
- compat-26: Add ~buffer-hash~.
- compat-27: Add ~fixnump~ and ~bignump~.
- compat-27: Add ~with-minibuffer-selected-window~.
- compat-27: Add generalized variables for ~decoded-time-*~.
- compat-28: Add ~macroexp-warn-and-return~.
- compat-28: Add ~subr-native-elisp-p~.
- compat-28: Add ~bounds-of-thing-at-mouse~.
- compat-29: Add ~with-buffer-unmodified-if-unchanged~.
- compat-29: Fix and test ~define-key~ with REMOVE argument.

(Release <2023-01-16 Mon>)

* Release of "Compat" Version 29.1.1.1

- Add tests, 167 out of 203 definitions tested (82%).
- compat-25: Improve algorithmic complexity of ~sort~.
- compat-28: Add ~make-separator-line~.
- compat-29: Minor fixes to ~keymap-*~ functions.
- compat-29: Add ~with-memoization~.
- compat-29: Add ~buttonize~ and ~buttonize-region~.

(Release <2023-01-14 Sat>)

* Release of "Compat" Version 29.1.1.0

- The macros in ~compat-macs.el~ have been rewritten and simplified. The
  refactoring allows to further refine the criteria under which compatibility
  aliases, functions, macros and variables are installed.
- Remove deprecated, prefixed compatibility functions.
- Remove deprecated features ~compat-help~, ~compat-font-lock~ and ~compat-24~.
- Compat uses runtime checks (~boundp~, ~fboundp~) to ensure that existing
  definitions are never overridden, when Compat is loaded on a newer Emacs than
  it was compiled on.
- Compat compiles without byte compilation warnings on all supported Emacs
  versions. Warnings are treated as errors in the test suite.
- Compat takes great care to remove unneeded definitions at compile time. On
  recent Emacs 29 the byte compiled files are empty and not loaded, such that
  Compat does not any cost to the Emacs process.
- compat-26: Fix and test ~image-property~ setter.
- compat-26: Fix and test ~read-multiple-choice~.
- compat-28: Fix and test ~with-existing-directory~.
- compat-28: Drop obsolete function ~make-directory-autoloads~.
- compat-29: Drop broken functions ~string-pixel-width~ and
  ~buffer-text-pixel-size~. These functions had poor performance which lead to a
  downstream issue in the doom-modeline package. If a more efficient solution is
  possible, the function will be added back. See [[compat-gh:8]] for the bug report.
- compat-29: Drop broken function ~string-limit~.
- compat-29: Drop broken macro ~with-buffer-unmodified-if-unchanged~, which relied
  on ~buffer-hash~ which does not exist on all supported Emacs versions.
- compat-29: Add ~pos-bol~ and ~pos-eol~.

(Release <2023-01-07 Sat>)

* 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 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 26. In Emacs 25 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>)

* Release of "Compat" Version 28.1.2.2

This is a minor release that hopes to address [[compat-srht:7]].

(Release <2022-08-25 Thu>)

* 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>)

* 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 ([[compat-srht:4]], 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>)

* 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 [[compat-srht:4]].

(Release <2022-06-19 Sun>)

* 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
   [[https://lists.sr.ht/~pkal/compat-devel/%3C20220530191000.2183047-1-jonas%40bernoul.li%3E][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 [[https://lists.sr.ht/~pkal/compat-devel/%3Cf8635d7d-e233-448f-b325-9e850363241c%40www.fastmail.com%3E][this thread]] for more details on the
   problem.

(Released <2022-06-22 Wed>)

* Release of "Compat" Version 28.1.1.1

This is a minor release fixing a bug in =json-serialize=, that could
cause unintended side-effects, not related to packages using Compat
directly (see [[compat-srht:2]]).

(Released <2022-05-05 Thu>)

* Release of "Compat" Version 28.1.1.0

This release mostly fixes a number of smaller bugs that were not
identified as of 28.1.0.0.  Nevertheless these warrant a version bump,
as some of these changes a functional.  These include:

- The addition of the =file-attribute-*= accessor functions.
- The addition of =file-attribute-collect=.
- Improvements to the Texinfo manual (via Jonas Bernoulli's recent
  work on =ox-texinfo=).  For the time being, the Texinfo file is
  maintained in the repository itself, next to the =MANUAL= file.
  This might change in the future.
- Adding a prefix to =string-trim=, =string-trim-left= and
  =string-trim-right= (i.e. now =compat-string-trim=,
  =compat-string-trim-left= and =compat-string-trim-right=)
- Improving the version inference used in the =compat-*= macros.
  This improves the compile-time optimisation that strips away
  functions that are known to be defined for a specific version.
- The addition of generalised variable (=setf=) support for
  =compat-alist-get=.
- The addition of =image-property= and generalised variable support
  for =image-property=.
- The addition of the function =compat-executable-find=.
- The addition of the function =compat-dired-get-marked-files=.
- The addition of the function =exec-path=.
- The addition of the function =make-lock-file-name=.
- The addition of the function =null-device=.
- The addition of the function =time-equal-p=.
- The addition of the function =date-days-in-month=.
- Handling out-of-directory byte compilation better.
- Fixing the usage and edge-cases of =and-let*=.

(Released <2022-04-22 Fri>)