NEWS.md (10198B)
1 # Dash NEWS -- history of user-visible changes 2 3 Copyright (C) 2012-2021 Free Software Foundation, Inc. 4 5 See 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 48 This release absorbs the now obsolete `dash-functional` version 49 `1.3.0` into `dash`, and brings the very old version of `dash` on GNU 50 ELPA up to date. 51 52 Package maintainers should replace all uses of `dash-functional`, 53 which will eventually be deleted, with `dash` version `2.18.0`. For 54 more information on this, see: 55 https://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 122 This release brings new destructuring features, some new control flow 123 functions 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 136 This 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 291 This program is free software: you can redistribute it and/or modify 292 it under the terms of the GNU General Public License as published by 293 the Free Software Foundation, either version 3 of the License, or 294 (at your option) any later version. 295 296 This program is distributed in the hope that it will be useful, 297 but WITHOUT ANY WARRANTY; without even the implied warranty of 298 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 299 GNU General Public License for more details. 300 301 You should have received a copy of the GNU General Public License 302 along with this program. If not, see <https://www.gnu.org/licenses/>.