Releases: elixir-volt/quickbeam
Releases · elixir-volt/quickbeam
v0.6.1
v0.6.0
Added
- DOM prototype chain — full hierarchy:
Node→Element→HTMLElement/SVGElement/MathMLElement, plusDocument,DocumentFragment,Text,Comment. Constructor globals onglobalThisenableinstanceofchecks Symbol.toStringTag—Object.prototype.toString.call(el)returns[object HTMLDivElement]with 40+ HTML tag mappingsMutationObserverno-op stub —observe(),disconnect(),takeRecords()for SSR compatibilitydocument.nodeType(returns 9) anddocument.nodeName(returns"#document") getters- Node object identity — same DOM node always returns the same JS wrapper (
el.parentNode === el.parentNode,document.body === document.body). UsesDocumentData.node_mapwithgc_markto prevent premature collection - 163 WPT-ported tests —
Node,Element,ChildNode,DocumentAPIs adapted from Web Platform Tests
Changed
tagName/nodeNamereturn uppercase for HTML elements (spec compliant). SVG/MathML elements preserve original casetextContent = ""removes all children instead of creating an empty text node- Default
max_stack_sizebumped to 4 MB (from 1 MB) — Vue mount path needs ~2 MB+ innerHTMLsetter uses sharedremove_all_childrenpath with node map eviction
Fixed
- Node identity cache leak —
innerHTML=andtextContent=now recursively evict replaced subtrees from the node map, preventing stale pointers and unbounded map growth JS_DupValueleak on OOM — map put failure now frees the duplicated ref- Removed unused
qb_node_set_user/qb_node_get_userC bridge functions,NodePtrtype alias, and emptyelement_finalizer
v0.5.0
Add precompiled NIF checksums, restrict targets to built platforms