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
I wonder if reference types could lift our requirement to manage references to JS closures manually?
With externrefs, the host gives Wasm limited access to host objects, but the host also needs to know when Wasm is finished with those objects, so it can clean them up. That clean up might involve closing a file handle or simply deallocating memory.
This means that JS closures should be passed to the Swift code as externref. Deallocating all references to externref would deallocate the closure on the JS side.
Reference types are now available in all browsers except Safari, and in the latter case they seem to only be hidden behind JSC_useWebAssemblyReferences flag. The only question is externref support in our toolchain...
IIRC the issue with JSClosure is that when passed to JS APIs, the Swift closure is deallocated early. We could manage this by using a FinalizationRegistry to track when it’s safe to free the Swift closure, but that has not yet reached production versions of Safari (it seems to currently be in nightly WebKit only)
I wonder if reference types could lift our requirement to manage references to JS closures manually?
This means that JS closures should be passed to the Swift code as
externref
. Deallocating all references toexternref
would deallocate the closure on the JS side.Reference types are now available in all browsers except Safari, and in the latter case they seem to only be hidden behind
JSC_useWebAssemblyReferences
flag. The only question isexternref
support in our toolchain...Doesn't look like LLVM had much progress in that direction? 🤔 Also see WebAssembly/tool-conventions#122
The text was updated successfully, but these errors were encountered: