aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md2
-rw-r--r--src/gleam_stdlib.mjs5
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]();
}
}