0.10.12

  • Fix fs.readFileSync without encoding to return Buffer instead of raw Uint8Array, so .toString() decodes as UTF-8
  • Load Buffer polyfill in :node runtimes (was only available in :browser runtimes)
  • Work around enif_make_map_from_arrays segfault on ERTS 15.0–15.2.2 (OTP 27.0–27.2) when returning JS objects with >128 keys

0.10.11

  • Hide vendored C symbols in the native library to avoid collisions with other NIFs
  • Update optional npm_ex dependency to 0.7.1

0.10.10

  • Update npm_ex to 0.7 and make it optional for consumers
  • Update oxc to 0.12.1
  • Update npm toolchain packages with supply-chain policy checks
  • Fix lint/static-analysis issues and quiet Bandit test timestamp warnings

0.10.8

  • Fix precompiled NIF workflow for Linux ARM target

0.10.7

  • Add Linux ARM precompiled NIF target

0.10.6

  • Update OXC dependency to 0.11

0.10.5

0.10.4

  • Fix segfault on nested empty BEAM map property enumeration (e.g. Object.keys on %{x: %{}} passed as a var)
  • Update QuickJS-NG to latest upstream (fixes GC crash)
  • Fix coverage use-after-free

0.10.3

  • Widen OXC dep to >= 0.7.0 (supports OXC 0.10 with codegen, bind, splice, and bundle :external option)

0.10.2

  • Allow oxc ~> 0.9 (adds OXC.Format support)

0.10.1

  • Allow oxc ~> 0.8 (adds OXC.Lint support)

0.10.0

Added

  • JS line coverageQuickBEAM.Cover integrates with mix test --cover to report line-level coverage for all JS/TS code executed through QuickBEAM runtimes. Patches QuickJS to track execution via a per-function hit bitmap with near-zero overhead when disabled. Outputs LCOV and Istanbul JSON. Also works as a sidecar for excoveralls users.
  • Beam.XML.parse — parse XML from JS using OTP's built-in :xmerl. Returns JS-friendly objects with @attr attributes, #text mixed content, and arrays for repeated siblings. Handles namespaces and CDATA.

Changed

  • Toolchain upgraded to oxc 0.7 and npm 0.5.3 — bundler rewritten to use OXC.rewrite_specifiers/3 and NPM.PackageResolver, removing ~150 lines of duplicated resolution logic.
  • Default max_stack_size increased from 4 MB to 8 MB — QuickJS's interpreter uses ~150 KB of C stack per JS call frame, limiting recursion to ~27 frames with the old default. The new default supports ~55 frames, covering all typical real-world patterns.

0.9.0