Skip to content

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

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions