aboutsummaryrefslogtreecommitdiff
path: root/src/gleam_stdlib.erl
diff options
context:
space:
mode:
authorRichard Viney <richard.viney@gmail.com>2024-06-21 17:01:37 +1200
committerLouis Pilfold <louis@lpil.uk>2024-06-21 10:49:14 +0100
commit6a6d5adf356993031ab2e79012e436dd2567a2f9 (patch)
treea1da55c581271e0160b47e3be35211f456719099 /src/gleam_stdlib.erl
parentddd52834c46a9e8c608cbdc347a71b9ceeb361df (diff)
downloadgleam_stdlib-6a6d5adf356993031ab2e79012e436dd2567a2f9.tar.gz
gleam_stdlib-6a6d5adf356993031ab2e79012e436dd2567a2f9.zip
Base64 encoding optimisations. Fix encoding of large bit arrays on JS.
This native JS implementation is 13-14x faster in simple benchmarks.
Diffstat (limited to 'src/gleam_stdlib.erl')
-rw-r--r--src/gleam_stdlib.erl6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/gleam_stdlib.erl b/src/gleam_stdlib.erl
index b95d9f8..2596f41 100644
--- a/src/gleam_stdlib.erl
+++ b/src/gleam_stdlib.erl
@@ -8,7 +8,8 @@
bit_array_int_to_u32/1, bit_array_int_from_u32/1, decode_result/1,
bit_array_slice/3, decode_bit_array/1, compile_regex/2, regex_scan/2,
percent_encode/1, percent_decode/1, regex_check/2, regex_split/2,
- base_decode64/1, parse_query/1, bit_array_concat/1, size_of_tuple/1,
+ base_decode64/1, parse_query/1, bit_array_concat/1,
+ bit_array_base64_encode/2, size_of_tuple/1,
decode_tuple/1, decode_tuple2/1, decode_tuple3/1, decode_tuple4/1,
decode_tuple5/1, decode_tuple6/1, tuple_get/2, classify_dynamic/1, print/1,
println/1, print_error/1, println_error/1, inspect/1, float_to_string/1,
@@ -201,6 +202,9 @@ string_pop_grapheme(String) ->
bit_array_concat(BitArrays) ->
list_to_bitstring(BitArrays).
+bit_array_base64_encode(Bin, Padding) ->
+ base64:encode(Bin, #{padding => Padding}).
+
bit_array_slice(Bin, Pos, Len) ->
try {ok, binary:part(Bin, Pos, Len)}
catch error:badarg -> {error, nil}