oj_deno_napi 0.2.1

Fork of deno_napi 0.190.0 maintained for oj, carrying oj's finalizer-registry performance patch (Vec -> BTreeMap). Use upstream deno_napi unless you need this patch.
docs.rs failed to build oj_deno_napi-0.2.1
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.

oj_deno_napi

Fork of deno_napi 0.190.0 (source: denoland/deno, ext/napi), maintained for oj and carrying oj's performance patch:

  • RefTracker::pending (the napi finalizer registry) is keyed by finalizer id in a BTreeMap instead of being a Vec, so deregistering a reference from a GC weak callback is O(log n) instead of a linear scan + shift. With a large addon working set the Vec form is quadratic across a GC cycle under heavy napi ref counts.

Everything else is verbatim upstream deno_napi 0.190.0, plus a drain-order unit test for the patched registry. Upstream's MIT license and copyright are kept unchanged (see LICENSE.md).

Unless you specifically need this patch, depend on upstream deno_napi instead.

Consumers rename it back via the dependency key, so use deno_napi::... paths keep working unchanged (the crate is versioned with the oj workspace; the upstream base stays deno_napi 0.190.0):

deno_napi = { package = "oj_deno_napi", version = "0.2.0" }