1# Dash NEWS -- history of user-visible changes
2
3Copyright (C) 2012-2021 Free Software Foundation, Inc.
4
5See the end of the file for license conditions.
6
7## Change log
8
9### From 2.19.0 to 2.19.1
10
11#### Fixes
12
13- Fixed a regression from `2.18` in `-is-suffix-p` which led to false
14  negatives when parts of the suffix appeared multiple times in the
15  list being searched (Bennett Rennier, #384).
16
17### From 2.18.1 to 2.19.0
18
19#### Fixes
20
21- Reverted a breaking change introduced in `2.18.0` that caused the
22  threading macro `-->` to be indented differently from `->` and `->>`
23  (#375).
24- Added and fixed Edebug specifications for many Dash macros (Philipp
25  Stephani, #380, #381).
26
27#### New features
28
29- The combinators `-on`, `-flip`, `-not`, `-andfn`, and `-orfn` now
30  return variadic functions that take any number of arguments (#308).
31- New combinator `-rotate-args` similar to `-flip`, but for arbitrary
32  arglist rotations (suggested by @vapniks, #72).
33- New function `-every` and its anaphoric macro counterpart `--every`.
34  They are like the existing `-every-p` and `--every-p`, respectively,
35  but return the last non-`nil` result instead of just `t`.
36- New macro `--partition-after-pred` which affords
37  `-partition-after-pred` better performance (Per Weijnitz, #362).
38
39### From 2.18.0 to 2.18.1
40
41- Fixed a regression from `2.17` as well as a long-standing bug in
42  `--iterate`, which evaluated its arguments one too many times.  This
43  in turn could lead to errors in `-flatten-n` when it tried
44  flattening certain structures too far (#373).
45
46### From 2.17 to 2.18
47
48This release absorbs the now obsolete `dash-functional` version
49`1.3.0` into `dash`, and brings the very old version of `dash` on GNU
50ELPA up to date.
51
52Package maintainers should replace all uses of `dash-functional`,
53which will eventually be deleted, with `dash` version `2.18.0`.  For
54more information on this, see:
55https://github.com/magnars/dash.el/wiki/Obsoletion-of-dash-functional.el
56
57- New function `-iota` for generating arithmetic sequences
58  (@holomorph, #215).
59
60- Calling `-list` with more than one argument is now deprecated.
61
62- `-lambda` now accepts an empty argument list.
63
64- New anaphoric macros `--reductions-from`, `--reductions`,
65  `--reductions-r-from`, and `--reductions-r` corresponding to the
66  analogous non-anaphoric functions.
67
68- `-doto` threading now works as with `->`.
69
70- New buffer-local minor mode `dash-fontify-mode` and globalized
71  counterpart `global-dash-fontify-mode` for fontifying special Dash
72  variables such as `it`, `it-index`, `acc`, etc.  The minor mode also
73  fontifies calls to Dash macros in older Emacs versions which did not
74  dynamically detect macro calls.
75
76  This obsoletes the user option `dash-enable-fontlock` and the
77  function `dash-enable-font-lock`, which is now an alias of
78  `global-dash-fontify-mode`.
79
80- New command `dash-register-info-lookup` for integration with `C-h S`
81  (`info-lookup-symbol`).  This command allows Dash symbols to be
82  looked up in the Dash manual just like Elisp symbols are looked up
83  in the Elisp manual.  The command can be called directly when
84  needed, or automatically from your `user-init-file`.  For example:
85
86  ```el
87  (with-eval-after-load 'info-look
88    (dash-register-info-lookup))
89  ```
90
91- Dash is now listed under the standard [Customization
92  groups](https://gnu.org/software/emacs/manual/html_node/emacs/Customization-Groups.html)
93  and [Finder
94  keywords](https://gnu.org/software/emacs/manual/html_node/emacs/Package-Keywords.html)
95  `extensions` and `lisp`.
96
97- The Dash manual is now licensed under the GNU Free Documentation
98  License version 1.3.
99
100- Various other bug fix, performance, byte-compilation, and
101  documentation improvements.
102
103### From 2.16 to 2.17
104
105- Sped up `-uniq` by using hash-tables when possible (@cireu, #305).
106- Fixed `-inits` to be non-destructive (@SwiftLawnGnome, #313).
107- Fixed indent rules for `-some->` and family (@wbolster, #321).
108- Added `-zip-lists` which always returns a list of proper lists, even for two
109  input lists (see issue #135).
110
111### From 2.15 to 2.16
112
113- Added `--doto`, anaphoric version of `-doto` (#282).
114- Aliased `-cons-pair-p` to `-cons-pair?` (#288).
115- Generalized `-rotate` for `|N|` greater than the length of the list (@leungbk,
116  #290).
117- Added a mechanism to extend destructuring with custom matchers (@yyoncho,
118  #277).
119
120### From 2.14 to 2.15
121
122This release brings new destructuring features, some new control flow
123functions and performance optimizations.
124
125- Added `-setq` with destructuring binding support similar to the `-let` family
126  (#116).
127- Added smarter key destructuring in `-let` and friends where variables are
128  auto-derived from keys (#111).
129- Allowed `-let` bindings without a source value form (#256).
130- Added `-each-r` and `-each-r-while` (@doublep, #159).
131- Added `-common-suffix` (@basil-conto, #263).
132- Improved performance of folds (`-reduce` and friends) (@basil-conto, #264).
133
134### From 2.13 to 2.14
135
136This release retired Emacs 23 support.
137
138- Added Edebug support for threading macros (@Wilfred).
139- Added `-unzip`.
140- Added support for `-first-item` and `-last-item` as [place
141  forms](https://gnu.org/software/emacs/manual/html_node/elisp/Generalized-Variables.html).
142- Added `-powerset` and `-permutations` (@holomorph).
143- Added `-as->` for threading a named variable (@zck).
144- Added `-partition-after-pred`, `-partition-before-pred`,
145  `-partition-after-item`, and `-partition-before-item` (@zck).
146- Fixed a bug in `-any-p` and friends testing for `null` on lists containing
147  `nil` (#239).
148- Fixed infinite loop bug in `-zip` and `-interleave` when called with empty
149  input.
150- Added `-second-item` through `-fifth-item` as alternatives to `nth`
151  (@Wilfred).
152- Added `-tails` and `-inits`.
153- Added `-running-sum` and `-running-product`.
154- Added the `-reductions[-r][-from]` family of functions (like `-reduce` but
155  collecting intermediate results).
156- Added `-common-prefix` (@basil-conto).
157
158### From 2.12 to 2.13
159
160- `-let` now supports `&alist` destructuring.
161- Various performance improvements.
162- `-zip` might change in a future release to always return a list of proper
163  lists.  Added `-zip-pair` for users who explicitly want the old behavior.
164- Enabled lexical binding in `dash.el` for Emacs versions 24 or newer (#130).
165- Added `-select-column` and `-select-columns`.
166- Fixed `-map-last` and `--remove-last` to be non-destructive (#158).
167- Added `-each-indexed` and `--each-indexed`.
168- Added `-take-last` and `-drop-last`.
169- Added the `-doto` macro.
170- `-cut <>` is now treated as a function, consistent with [SRFI
171  26](https://srfi.schemers.org/srfi-26/srfi-26.html) (#185).
172
173### From 2.11 to 2.12
174
175- Added GNU ELPA support (Phillip Lord).
176- Added `-some->`, `-some->>`, and `-some-->` macros (Cam Saul).
177- `-is-suffix?` is now non-destructive.
178- Faster hash table implementation for `-union`.
179- Improvements to docstrings and examples.
180
181### From 2.10 to 2.11
182
183- Lots of clean up w.r.t. byte compilation, debug macros, and tests.
184
185### From 2.9 to 2.10
186
187- Added `-let` destructuring to `-if-let` and `-when-let` (Fredrik Bergroth).
188
189### From 2.8 to 2.9
190
191- Added `-let`, `-let*`, and `-lambda` with destructuring.
192- Added `-tree-seq` and `-tree-map-nodes`.
193- Added `-non-nil`.
194- Added `-fix`.
195- Added `-fixfn` (`dash-functional` version `1.2`).
196- Added `-copy` (Wilfred Hughes).
197
198### From 2.7 to 2.8
199
200- Added `-butlast`.
201
202### From 2.6 to 2.7
203
204- `-zip` now supports more than two lists (Steve Lamb).
205- Added `-cycle`, `-pad`, `-annotate`, and `-zip-fill` (Steve Lamb).
206- Added `-table`, `-table-flat` (finite Cartesian product).
207- Added `-flatten-n`.
208- `-slice` now supports a "step" argument.
209- Added functional combinators `-iteratefn` and `-prodfn`.
210- Added `-replace`, `-splice`, and `-splice-list` which generalize `-replace-at`
211  and `-insert-at`.
212- Added `-compose`, `-iteratefn`, and `-prodfn` (`dash-functional` version
213  `1.1`).
214
215### From 2.5 to 2.6
216
217- Added `-is-prefix-p`, `-is-suffix-p`, and `-is-infix-p` (Matus Goljer).
218- Added `-iterate` and `-unfold` (Matus Goljer).
219- Added `-split-on` and `-split-when` (Matus Goljer).
220- Added `-find-last-index` (Matus Goljer).
221- Added `-list` (Johan Andersson).
222
223### From 2.4 to 2.5
224
225- Added `-same-items?` (Johan Andersson).
226- Various bugfixes.
227
228### From 2.3 to 2.4
229
230- Added `-snoc` (Matus Goljer).
231- Added `-replace-at`, `-update-at`, `-remove-at`, and `-remove-at-indices`
232  (Matus Goljer).
233
234### From 2.2 to 2.3
235
236- Added tree operations (Matus Goljer).
237- Made Font Lock optional.
238
239### From 2.1 to 2.2
240
241- Added `-compose` (Christina Whyte).
242
243### From 2.0 to 2.1
244
245- Added indexing operations (Matus Goljer).
246
247### From 1.8 to 2.0
248
249- Split out `dash-functional.el` (Matus Goljer).
250- Added `-andfn`, `-orfn`, `-not`, `-cut`, `-const`, `-flip`, and `-on` (Matus
251  Goljer).
252- Fixed `-min`, `-max`, `-min-by`, and `-max-by` (Matus Goljer).
253
254### From 1.7 to 1.8
255
256- Added `-first-item` and `-last-item` (Wilfred Hughes).
257
258### From 1.6 to 1.7
259
260- Added `-rotate` (Matus Goljer).
261
262### From 1.5 to 1.6
263
264- Added `-min`, `-max`, `-min-by`, and `-max-by` (Johan Andersson).
265
266### From 1.4 to 1.5
267
268- Added `-sum` and `-product` (Johan Andersson).
269
270### From 1.3 to 1.4
271
272- Added `-sort`.
273- Added `-reduce-r` (Matus Goljer).
274- Added `-reduce-r-from` (Matus Goljer).
275
276### From 1.2 to 1.3
277
278- Added `-partition-in-steps`.
279- Added `-partition-all-in-steps`.
280
281### From 1.1 to 1.2
282
283- Added `-last` (Matus Goljer).
284- Added `-insert-at` (Emanuel Evans).
285- Added `-when-let` and `-if-let` (Emanuel Evans).
286- Added `-when-let*` and `-if-let*` (Emanuel Evans).
287- Various bugfixes.
288
289## License
290
291This program is free software: you can redistribute it and/or modify
292it under the terms of the GNU General Public License as published by
293the Free Software Foundation, either version 3 of the License, or
294(at your option) any later version.
295
296This program is distributed in the hope that it will be useful,
297but WITHOUT ANY WARRANTY; without even the implied warranty of
298MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
299GNU General Public License for more details.
300
301You should have received a copy of the GNU General Public License
302along with this program.  If not, see <https://www.gnu.org/licenses/>.
303