Skip to content

Releases: elixir-volt/quickbeam

v0.10.6

24 Apr 16:33

Choose a tag to compare

Release v0.10.6

v0.10.5

24 Apr 12:27

Choose a tag to compare

Update npm dependency to 0.6 and use the NPM.Resolution.PackageResolver namespace.

v0.10.4

23 Apr 16:25

Choose a tag to compare

  • 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

v0.10.3

21 Apr 14:57

Choose a tag to compare

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

v0.10.2

21 Apr 09:44

Choose a tag to compare

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

v0.10.1

20 Apr 18:20

Choose a tag to compare

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

v0.10.0

14 Apr 19:45

Choose a tag to compare

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.

v0.9.0

10 Apr 12:04

Choose a tag to compare

Release v0.9.0

v0.8.1

25 Mar 05:25

Choose a tag to compare

Fixed

  • Fix precompiled NIF checksum mismatch from v0.8.0 release

See 0.8.0 changelog for the full N-API feature release notes.

v0.8.0

24 Mar 19:54

Choose a tag to compare

Added

  • N-API addon supportQuickBEAM.load_addon/3 loads native .node addons into a runtime and optionally exposes their exports as a global.
  • Node-API surface for native addons — adds the N-API implementation needed to run real addons, including constructors, typed arrays, external buffers, async work, and threadsafe functions.
  • Real addon integration coverage — adds tests for a C test addon plus @node-rs/crc32, @node-rs/argon2, @node-rs/bcrypt, and sqlite-napi.
  • Beam.nanoseconds() — monotonic high-resolution timer via :erlang.monotonic_time(:nanosecond)
  • Beam.uniqueInteger() — monotonically increasing unique integer via :erlang.unique_integer
  • Beam.makeRef() — create a unique BEAM reference, useful for request/reply correlation
  • Beam.inspect(value) — pretty-print any value via Kernel.inspect, especially useful for opaque BeamPid/BeamRef terms

Changed

  • TypeScript support in ContextQuickBEAM.Context now auto-transforms .ts/.tsx scripts via OXC and auto-bundles scripts with import statements, matching Runtime behavior. Previously, Context loaded scripts as raw JS.
  • Repo-wide quality gate — added mix ci with test env defaults and brought the full quality pipeline to green: Elixir linting, Dialyzer, Zig lint, TypeScript type-aware linting, duplicate-code checks, and tests now pass together.
  • TypeScript polyfill quality — resolved DOM/global type collisions in priv/ts by moving implementation classes to QB-prefixed names while preserving web-facing globals. Also removed TS lint/type errors and TS clone findings.
  • N-API implementation cleanup — aligned buffer APIs with QuickBEAM's Uint8Array byte representation, tightened wrap and async cleanup behavior, and split napi.zig into focused Zig modules.
  • Zig lint hygiene — added missing SAFETY: notes for intentional undefined initialization, replaced suppressed error handling with explicit handling, removed unused declarations, and fixed style warnings so zlint runs clean.