difftreelog
perf(evaluator) faster std.base64
in: master
4 files changed
Cargo.lockdiffbeforeafterboth--- a/Cargo.lock
+++ b/Cargo.lock
@@ -108,6 +108,7 @@
name = "jrsonnet-evaluator"
version = "1.0.0"
dependencies = [
+ "base64",
"bincode",
"closure",
"indexmap",
crates/jrsonnet-evaluator/Cargo.tomldiffbeforeafterboth--- a/crates/jrsonnet-evaluator/Cargo.toml
+++ b/crates/jrsonnet-evaluator/Cargo.toml
@@ -24,6 +24,7 @@
jrsonnet-stdlib = { path = "../jrsonnet-stdlib", version = "1.0.0" }
indexmap = "1.4.0"
md5 = "0.7.0"
+base64 = "0.12.3"
serde = { version = "1.0.114", optional = true }
bincode = { version = "1.3.1", optional = true }
crates/jrsonnet-evaluator/build.rsdiffbeforeafterboth--- a/crates/jrsonnet-evaluator/build.rs
+++ b/crates/jrsonnet-evaluator/build.rs
@@ -35,7 +35,7 @@
Member::Field(FieldMember {
name: FieldName::Fixed(name),
..
- }) if **name == *"join" || **name == *"manifestJsonEx" || **name == *"escapeStringJson" || **name == *"equals"
+ }) if **name == *"join" || **name == *"manifestJsonEx" || **name == *"escapeStringJson" || **name == *"equals" || **name == *"base64"
)
})
.collect(),
crates/jrsonnet-evaluator/src/evaluate.rsdiffbeforeafterboth565 ], {565 ], {566 Ok(Val::Str(format!("{:x}", md5::compute(&str.as_bytes())).into()))566 Ok(Val::Str(format!("{:x}", md5::compute(&str.as_bytes())).into()))567 }))?,567 }))?,568 // faster569 ("std", "base64") => parse_args!(context, "std.base64", args, 1, [570 0, input: [Val::Str | Val::Arr], vec![ValType::Arr, ValType::Str];571 ], {572 Val::Str(match input {573 Val::Str(s) => {574 base64::encode(s.bytes().collect::<Vec<_>>()).into()575 },576 Val::Arr(a) => {577 base64::encode(a.iter().map(|v| {578 Ok(v.clone().try_cast_num("base64 array")? as u8)579 }).collect::<Result<Vec<_>>>()?).into()580 },581 _ => unreachable!()582 })583 }),568 // faster584 // faster569 ("std", "join") => noinline!(parse_args!(context, "std.join", args, 2, [585 ("std", "join") => noinline!(parse_args!(context, "std.join", args, 2, [570 0, sep: [Val::Str|Val::Arr], vec![ValType::Str, ValType::Arr];586 0, sep: [Val::Str|Val::Arr], vec![ValType::Str, ValType::Arr];