You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
qjs wrap_drain: N per navigation; no UAF across multi-page browsing.
Next (phase two+, on the validated bridge)
Widen DOM coverage off the identity map: classList/DOMTokenList, real querySelector/querySelectorAll (see DOM: document.querySelector / querySelectorAll basic selector support #29), live NodeList/HTMLCollection, attributes/NamedNodeMap. These need a CSS-selector backend + live-collection proxy (separate work).
Dead-code sweep: macsurf_date_get_now now has no caller; the in-macsurf_qjs.c ES6 transpile cache is effectively unused (QuickJS runs ES2023 natively).
Tracking issue for the JS engine swap (was never filed; recording now per DIRECTIVE #3).
Done (shipped, awaiting G3 verify — commits held)
macsurf_qjs.c: node-identity map (1024-bucket chained, keyed bydom_node*), owner-document keepalive ref per wrapper, idempotent finalizer (map-entry = already-cleaned flag), guaranteedqjs_wrap_drain()(drops node + owner_doc, then clears) at realm reset + heap destroy,qjs_get_node()align/range pointer guard on all 18 accessors. Consume-semantics ref contract (wrapper owns exactly one node ref + one doc keepalive, released solely by finalizer/drain). Engine-agnosticmain.cJS-init gates;js_stub.cguard fixed.WITH_QUICKJSdefault,WITH_DUKTAPEno longer auto-defined.WITH_DUKTAPEguards collapsed to#ifdef WITH_QUICKJS; symbols renamed (macsurf_duk_monotonic_ms→macsurf_monotonic_ms,macsurf_duk_date_get_now→macsurf_date_get_now); deletedlibduktape/,content/handlers/javascript/duktape/(bothduk_config.h), frontendmacsurf_js*.c/.h+macsurf_es6.c/.h+macos9_js_click.c.Design/audit refs:
docs/research/quickjs-dom-port-phase1.md,docs/research/teardown-ordering-audit.md.Verify (G3, after rebuild)
el.parentNode === el.parentNode;appendChild→parentNode→removeChild→parentNode === null.qjs wrap_drain: Nper navigation; no UAF across multi-page browsing.Next (phase two+, on the validated bridge)
classList/DOMTokenList, realquerySelector/querySelectorAll(see DOM: document.querySelector / querySelectorAll basic selector support #29), liveNodeList/HTMLCollection,attributes/NamedNodeMap. These need a CSS-selector backend + live-collection proxy (separate work).macsurf_date_get_nownow has no caller; the in-macsurf_qjs.cES6 transpile cache is effectively unused (QuickJS runs ES2023 natively).