diff options
author | Nugine <nugine@foxmail.com> | 2023-01-18 22:35:24 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-18 20:05:24 +0530 |
commit | 9686a0041911f5a6724c5933de57214bd940baac (patch) | |
tree | 754aecb78e157719215423920c00b4985a5c0ff1 /ext/web | |
parent | f1b275ed6bd6dd1fc1eda8efa3816998ac0a5471 (diff) |
chore: upgrade base64-simd to 0.8.0 (#17463)
This PR upgrades the `base64-simd` dependency of `deno_web`.
base64-simd v0.8 supports `forgiving_decode` in ["copy"
mode](https://docs.rs/base64-simd/0.8.0/base64_simd/fn.forgiving_decode.html),
["inplace"
mode](https://docs.rs/base64-simd/0.8.0/base64_simd/fn.forgiving_decode_inplace.html)
or ["alloc"
mode](https://docs.rs/base64-simd/0.8.0/base64_simd/fn.forgiving_decode_to_vec.html).
When #17159 resolves, they can be used to reduce unnecessary allocations
and copies.
base64-simd v0.8 also supports AArch64 SIMD out of box.
Diffstat (limited to 'ext/web')
-rw-r--r-- | ext/web/Cargo.toml | 2 | ||||
-rw-r--r-- | ext/web/lib.rs | 15 |
2 files changed, 9 insertions, 8 deletions
diff --git a/ext/web/Cargo.toml b/ext/web/Cargo.toml index b91013a84..07d3026b5 100644 --- a/ext/web/Cargo.toml +++ b/ext/web/Cargo.toml @@ -15,7 +15,7 @@ path = "lib.rs" [dependencies] async-trait.workspace = true -base64-simd = "0.7" +base64-simd = "0.8" deno_core.workspace = true encoding_rs.workspace = true flate2.workspace = true diff --git a/ext/web/lib.rs b/ext/web/lib.rs index de8984232..92cfcceeb 100644 --- a/ext/web/lib.rs +++ b/ext/web/lib.rs @@ -130,25 +130,27 @@ pub fn init<P: TimersPermission + 'static>( #[op] fn op_base64_decode(input: String) -> Result<ZeroCopyBuf, AnyError> { let mut s = input.into_bytes(); - let decoded_len = forgiving_base64_decode(&mut s)?; + let decoded_len = forgiving_base64_decode_inplace(&mut s)?; s.truncate(decoded_len); Ok(s.into()) } #[op] fn op_base64_atob(mut s: ByteString) -> Result<ByteString, AnyError> { - let decoded_len = forgiving_base64_decode(&mut s)?; + let decoded_len = forgiving_base64_decode_inplace(&mut s)?; s.truncate(decoded_len); Ok(s) } /// See <https://infra.spec.whatwg.org/#forgiving-base64> #[inline] -fn forgiving_base64_decode(input: &mut [u8]) -> Result<usize, AnyError> { +fn forgiving_base64_decode_inplace( + input: &mut [u8], +) -> Result<usize, AnyError> { let error: _ = || DomExceptionInvalidCharacterError::new("Failed to decode base64"); - let decoded = base64_simd::Base64::forgiving_decode_inplace(input) - .map_err(|_| error())?; + let decoded = + base64_simd::forgiving_decode_inplace(input).map_err(|_| error())?; Ok(decoded.len()) } @@ -165,8 +167,7 @@ fn op_base64_btoa(s: ByteString) -> String { /// See <https://infra.spec.whatwg.org/#forgiving-base64> #[inline] fn forgiving_base64_encode(s: &[u8]) -> String { - const BASE64_STANDARD: base64_simd::Base64 = base64_simd::Base64::STANDARD; - BASE64_STANDARD.encode_to_boxed_str(s).into_string() + base64_simd::STANDARD.encode_to_string(s) } #[op] |