Re:JavaScript Start-up Performance
by s_m_mcguire on Friday February 10, 2017 @08:45AM
(#13615283)
Not first class access, but you can call arbitrary JavaScript via FFI. An approach that worked fine for me was to use a simple object which holds your DOM handles via incrementing numeric IDs and pass them back to your Rust (or C++) code. I found the FFI overhead to be non-existent compared to the actual DOM work as well.
[ Parent
| on HN ]
Re:JavaScript Start-up Performance
by munificent on Friday February 10, 2017 @04:33PM
(#13619085)
> a simple object which holds your DOM handles via incrementing numeric IDs and pass them back to your Rust (or C++) code.
How do you know when to release those handles so the GC can clean them up?
Re:JavaScript Start-up Performance
by s_m_mcguire on Friday February 10, 2017 @07:23PM
(#13620137)
In my case I knew when the owning Rust struct was destroyed, and it was guaranteed to be the only thing holding the element handle so I would just free the DOM node during the destruction logic.
For something more general purpose I'd probably just use a destructor (whether C++ or Rust) with the same guarantee of single-ownership of the underlying ID, and the DOM node will automatically be freed once the native handle goes out of scope.
Edit: Of course, you'd have to prohibit copies on the native side.