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
This commit is contained in:
Aaron O'Mullan 2021-03-31 16:37:38 +02:00 committed by GitHub
parent 6dc3549a81
commit fec1b2a5a4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
33 changed files with 794 additions and 1811 deletions

View file

@ -11,14 +11,14 @@ declare namespace Deno {
function jsonOpSync(
opName: string,
args?: any,
...zeroCopy: Uint8Array[]
zeroCopy?: Uint8Array,
): any;
/** Send a JSON op to Rust, and asynchronously receive the result. */
function jsonOpAsync(
opName: string,
args?: any,
...zeroCopy: Uint8Array[]
zeroCopy?: Uint8Array,
): Promise<any>;
/**