From fec1b2a5a4324a7eecdfbb2471931f3b6b0139c5 Mon Sep 17 00:00:00 2001 From: Aaron O'Mullan Date: Wed, 31 Mar 2021 16:37:38 +0200 Subject: refactor: new optimized op-layer using serde_v8 (#9843) - Improves op performance. - Handle op-metadata (errors, promise IDs) explicitly in the op-layer vs per op-encoding (aka: out-of-payload). - Remove shared queue & custom "asyncHandlers", all async values are returned in batches via js_recv_cb. - The op-layer should be thought of as simple function calls with little indirection or translation besides the conceptually straightforward serde_v8 bijections. - Preserve concepts of json/bin/min as semantic groups of their inputs/outputs instead of their op-encoding strategy, preserving these groups will also facilitate partial transitions over to v8 Fast API for the "min" and "bin" groups --- runtime/ops/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'runtime/ops/mod.rs') diff --git a/runtime/ops/mod.rs b/runtime/ops/mod.rs index 2e94d99f5..073b17c86 100644 --- a/runtime/ops/mod.rs +++ b/runtime/ops/mod.rs @@ -48,7 +48,7 @@ pub fn reg_json_async( F: Fn(Rc>, V, BufVec) -> R + 'static, V: DeserializeOwned, R: Future> + 'static, - RV: Serialize, + RV: Serialize + 'static, { rt.register_op(name, metrics_op(name, json_op_async(op_fn))); } @@ -57,7 +57,7 @@ pub fn reg_json_sync(rt: &mut JsRuntime, name: &'static str, op_fn: F) where F: Fn(&mut OpState, V, &mut [ZeroCopyBuf]) -> Result + 'static, V: DeserializeOwned, - R: Serialize, + R: Serialize + 'static, { rt.register_op(name, metrics_op(name, json_op_sync(op_fn))); } -- cgit v1.2.3