diff options
| author | Basil L. Contovounesios <basil@contovou.net> | 2026-02-20 19:15:06 +0100 |
|---|---|---|
| committer | Basil L. Contovounesios <basil@contovou.net> | 2026-02-21 14:46:21 +0100 |
| commit | d3a84021dbe48dba63b52ef7665651e0cf02e915 (patch) | |
| tree | 6faa36cca3fb3bf45984ec65d2cf8a4593b1e613 | |
| parent | 330cc0ddcc11749dcfdff52047a7bb99d5271ecf (diff) | |
No longer mark -cycle as pureexternals/dash
See https://bugs.gnu.org/80456. This is similar but not identical
to #405 and https://bugs.gnu.org/64127 in that it involves a
problematic compile-time constant produced from a pure function:
(--map (-take 5 it) (-split-at 5 (-cycle '(1 2 3))))
=>
dev/examples.el: Error: List contains a loop: (3 1 2 3 1 . #2)
* dash.el (-cycle): No longer mark as pure.
* NEWS.md: Announce change.
| -rw-r--r-- | NEWS.md | 9 | ||||
| -rw-r--r-- | dash.el | 2 |
2 files changed, 9 insertions, 2 deletions
@@ -6,6 +6,13 @@ See the end of the file for license conditions. ## Change log +### From 2.20.0 to ?.?.? + +#### Fixes + +- The `-cycle` function is no longer marked as `pure`, as it returns a + copy of its argument (#405). + ### From 2.19.1 to 2.20.0 #### Deprecations @@ -42,7 +49,7 @@ See the end of the file for license conditions. immutable constant, and thus unsafe to modify destructively. The functions in question are: `-clone`, `-cons*`, `-drop-last`, `-interleave`, `-interpose`, `-iota`, `-non-nil`, `-repeat`, - `-slice`, `-snoc`, `-split-at`, `-take`, `-take-last`. + `-slice`, `-snoc`, `-split-at`, `-take`, `-take-last` (#405). #### New features @@ -1893,7 +1893,7 @@ LISTS, it is generally recommended to use `-unzip-lists' instead." "Return an infinite circular copy of LIST. The returned list cycles through the elements of LIST and repeats from the beginning." - (declare (pure t) (side-effect-free t)) + (declare (side-effect-free t)) ;; Also works with sequences that aren't lists. (let ((newlist (append list ()))) (nconc newlist newlist))) |
