diff options
author | polykernel <81340136+polykernel@users.noreply.github.com> | 2023-05-25 00:37:00 -0400 |
---|---|---|
committer | polykernel <81340136+polykernel@users.noreply.github.com> | 2023-05-25 18:35:23 -0400 |
commit | a382919d7dd696c01c0d5abd04222c2821c0a49d (patch) | |
tree | 6cd7443c919cd037c54f10e559ee3cd748b619f9 /doc/manual/src/release-notes/rl-next.md | |
parent | 6e4570234d5ac63a9483fb7f7aabaa1d17561a3a (diff) |
primops: lazy evaluation of replaceStrings replacements
The primop `builtins.replaceStrings` currently always strictly evaluates the
replacement strings, however time and space are wasted for their computation
if the corresponding pattern do not occur in the input string. This commit
makes the evaluation of the replacement strings lazy by deferring their
evaluation to when the corresponding pattern are matched and memoize the result
for efficient retrieval on subsequent matches.
The testcases for replaceStrings was updated to check for lazy evaluation
of the replacements. A note was also added in the release notes to
document the behavior change.
Diffstat (limited to 'doc/manual/src/release-notes/rl-next.md')
-rw-r--r-- | doc/manual/src/release-notes/rl-next.md | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/doc/manual/src/release-notes/rl-next.md b/doc/manual/src/release-notes/rl-next.md index bc0d41bdf..f92625887 100644 --- a/doc/manual/src/release-notes/rl-next.md +++ b/doc/manual/src/release-notes/rl-next.md @@ -4,3 +4,4 @@ The number of parallel downloads (also known as substitutions) has been separated from the [`--max-jobs` setting](../command-ref/conf-file.md#conf-max-jobs). The new setting is called [`max-substitution-jobs`](../command-ref/conf-file.md#conf-max-substitution-jobs). The number of parallel downloads is now set to 16 by default (previously, the default was 1 due to the coupling to build jobs). +- The function `builtins.replaceStrings` is now lazy in the value of its second argument `to`, that is a replacee in `to` is only evaluated when its corresponding pattern in `from` is matched in the string `s`. |