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 --- test_plugin/src/lib.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'test_plugin/src') diff --git a/test_plugin/src/lib.rs b/test_plugin/src/lib.rs index 596620004..c4b0916a4 100644 --- a/test_plugin/src/lib.rs +++ b/test_plugin/src/lib.rs @@ -2,6 +2,7 @@ use deno_core::plugin_api::Interface; use deno_core::plugin_api::Op; +use deno_core::plugin_api::OpResponse; use deno_core::plugin_api::ZeroCopyBuf; use futures::future::FutureExt; @@ -25,7 +26,7 @@ fn op_test_sync( } let result = b"test"; let result_box: Box<[u8]> = Box::new(*result); - Op::Sync(result_box) + Op::Sync(OpResponse::Buffer(result_box)) } fn op_test_async( @@ -49,7 +50,7 @@ fn op_test_async( assert!(rx.await.is_ok()); let result = b"test"; let result_box: Box<[u8]> = Box::new(*result); - result_box + OpResponse::Buffer(result_box) }; Op::Async(fut.boxed()) -- cgit v1.2.3