Skip to content

Clarify Deno and Bun compatibility for Zen Engine JavaScript API #403

@instantgis

Description

@instantgis

Problem Statement

The official GoRules website claims that Zen Engine can "execute decision logic with ease across Node.js, Deno and Bun environments with blazing performance."

Observed Behavior

  • The repository (https://github.com/gorules/zen) provides a native Node.js binding (via napi-rs) to the Rust Zen Engine core, which requires Node's N-API and binary modules (.node addons).
  • The repo contains Node.js-specific dependency loading and code (see bindings/nodejs/index.js and related files).
  • Deno does not support Node N-API binary modules; Bun has limited support and may not fully load napi native modules.
  • No Deno-specific or Bun-specific build, module, or demo is found in the repository (no deno.json, no pure ESM/TS, no explicit Deno docs, etc.).
  • Attempts to run the npm package in Deno or Bun produce runtime errors due to unsupported Node APIs or missing native bindings.

Impact

  • The claim on the website may mislead developers who expect drop-in Deno or Bun support, especially in modern edge/serverless environments (e.g., Supabase Edge Functions).
  • There's a risk of wasted integration effort for users expecting Deno-native compatibility.

Questions For Maintainers

  • Is there a Deno- or Bun-native build, wrapper, or recommended pattern for using Zen Engine outside Node.js?
  • Are there plans for Deno-native API (pure ESM/TS), WASM build, or documentation?
  • What is the recommended approach for using Zen Engine in Deno (e.g., Supabase Edge Functions) at present? Is a WASM build feasible/advised?

Suggested Next Steps

  • Please clarify the compatibility matrix and update docs/readme to reflect supported environments and any required workarounds for Deno/Bun.
  • If a Deno or Bun wrapper exists (public or planned), please link to it and provide minimal setup code.
  • Consider specifying npm compatibility boundaries and native/platform support for each runtime in documentation.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions