Releases: elixir-volt/quickbeam
Releases · elixir-volt/quickbeam
v0.10.6
v0.10.5
Update npm dependency to 0.6 and use the NPM.Resolution.PackageResolver namespace.
v0.10.4
- Fix segfault on nested empty BEAM map property enumeration (e.g.
Object.keyson%{x: %{}}passed as a var) - Update QuickJS-NG to latest upstream (fixes GC crash)
- Fix coverage use-after-free
v0.10.3
Widen OXC dep to >= 0.7.0 (supports OXC 0.10 with codegen, bind, splice, and bundle :external option)
v0.10.2
- Allow oxc ~> 0.9 (adds OXC.Format support)
v0.10.1
- Allow oxc ~> 0.8 (adds OXC.Lint support)
v0.10.0
Added
- JS line coverage —
QuickBEAM.Coverintegrates withmix test --coverto 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@attrattributes,#textmixed content, and arrays for repeated siblings. Handles namespaces and CDATA.
Changed
- Toolchain upgraded to
oxc0.7 andnpm0.5.3 — bundler rewritten to useOXC.rewrite_specifiers/3andNPM.PackageResolver, removing ~150 lines of duplicated resolution logic. - Default
max_stack_sizeincreased 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
Release v0.9.0
v0.8.1
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
Added
- N-API addon support —
QuickBEAM.load_addon/3loads native.nodeaddons 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, andsqlite-napi. Beam.nanoseconds()— monotonic high-resolution timer via:erlang.monotonic_time(:nanosecond)Beam.uniqueInteger()— monotonically increasing unique integer via:erlang.unique_integerBeam.makeRef()— create a unique BEAM reference, useful for request/reply correlationBeam.inspect(value)— pretty-print any value viaKernel.inspect, especially useful for opaqueBeamPid/BeamRefterms
Changed
- TypeScript support in Context —
QuickBEAM.Contextnow auto-transforms.ts/.tsxscripts via OXC and auto-bundles scripts withimportstatements, matching Runtime behavior. Previously, Context loaded scripts as raw JS. - Repo-wide quality gate — added
mix ciwith 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/tsby 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
Uint8Arraybyte representation, tightened wrap and async cleanup behavior, and splitnapi.ziginto focused Zig modules. - Zig lint hygiene — added missing
SAFETY:notes for intentionalundefinedinitialization, replaced suppressed error handling with explicit handling, removed unused declarations, and fixed style warnings sozlintruns clean.