diff options
-rw-r--r-- | CHANGELOG.md | 2 | ||||
-rw-r--r-- | src/gleam_stdlib.mjs | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 84a76b0..03c850f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ - The `bit_array` module gains the `compare` function. - The `float` modeule gains the `to_precision` function. - The `try_fold` function in the `iterator` module is now tail recursive. +- The performance of many functions in the `string` module on the JavaScript + target has been improved. ## v0.40.0 - 2024-08-19 diff --git a/src/gleam_stdlib.mjs b/src/gleam_stdlib.mjs index 50ebb46..1c0754f 100644 --- a/src/gleam_stdlib.mjs +++ b/src/gleam_stdlib.mjs @@ -156,9 +156,12 @@ export function graphemes(string) { } } +let segmenter = undefined; + function graphemes_iterator(string) { if (globalThis.Intl && Intl.Segmenter) { - return new Intl.Segmenter().segment(string)[Symbol.iterator](); + segmenter ??= new Intl.Segmenter(); + return segmenter.segment(string)[Symbol.iterator](); } } |