From 6a6d5adf356993031ab2e79012e436dd2567a2f9 Mon Sep 17 00:00:00 2001 From: Richard Viney Date: Fri, 21 Jun 2024 17:01:37 +1200 Subject: Base64 encoding optimisations. Fix encoding of large bit arrays on JS. This native JS implementation is 13-14x faster in simple benchmarks. --- src/gleam_stdlib.erl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/gleam_stdlib.erl') 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} -- cgit v1.2.3