October 02, 2024 | JavaScript subgroup (BA Guest Languages SIG)
N/A
Attendee |
---|
Calvin Prewitt |
Guy Bedford |
Tomasz Andrzejak |
Saul Cabrera |
Luke Wagner |
Till Schneidereit |
Victor Adossi |
Notes
- Presented slides on StarlingMonkey during Plumbers Summit
- Some enthusiasm from Microsoft which
- Few inflight PRs
- Inflight initialization
- Abstracted configuration system (
componentize-js
can use this, other tools pass through to the internal CLI arg parser to invoke SM init) - Updated to the latest WASI
- (landed) Fix to finalization system – all builtins now have working finalizer support
- Rust
Url
usage can now be cleaned up from JS side properly
- Rust
- Project boards
- Rust bindings
- (Luke) If Rust has
async
bindings (preview3), possibly we can get some more async-ification for free?- (Guy) There’s an open PR to support rust bindings, and ideally this is what we’d use
- In terms of bindings, with the
componentize-js
upstreaming,componentize-js
can likely integrate more closely - -Technically- we do support async (sync-fiied async), but un-sync-ified async would be ideal as well.
- (Luke)
- (Guy) Current Streams implementation is on a fork of Spidermonkey, mostly due to a refactor (move from
js
todom
folder) made code depend on stuff that we don’t need.- How to fix this in the long term is an open question.
- Spidermonkey people in this meeting would help towards figuring out how to share
- (Luke) WebIDL to Rust bindings would help and encourage sharing
- (Guy) Do they have a WebIDL binding generator as well?
- (Luke) Yes, part of the
dom
tree- a Rust bindings generator could share the frontend, with a distinct backend
- Instead of having to change the cycle collector, maybe we could garbage collect (i.e. like Oilpan)
- (Guy) There’s also a lot of builtins and string functions/etc
- (Luke) Yes, the gecko custom string implementation
- (Guy) Hard to resolve in a way that’s non-disruptive
- (Luke) Maybe instead of trying to reuse, it could be built on Rust and separate from the Gecko related code to start
- (Guy) So sharing IDL functionality, and also taking the fork and upstreaming to the StarlingMonkey side
- (Luke) If Rust has
- (Luke) And possibly even w/ Preview3 it could be Rust
- New from Microsoft, likely to be contributing to StarlingMonkey likely starting from next month
jco
channel- JS guest runtime and bindings collaborations (StarlingMonkey)
- SIG Guest Languages - Javascript Subgroup
- (Guy) Following discussion from the last meeting at Plumbers Summit, it likely makes more sense for
componentize-js
to move into StarlingMonkey- There’s been a complaint about
componentize-js
pulling in unnecessary things for hosts
- There’s been a complaint about
jco
is squarely a host consideration, wherecomponentize-js
might make more sense as a part of StarlingMonkey- Documentations updates
- Some examples that were going to go into component-docs are now going into
examples
folder forjco
- (Guy) In the past the problem we’ve had
- When componentize-js moves into StarlingMonkey we’ll need to update again
- Some examples that were going to go into component-docs are now going into
- One more update for CompoentizeJS, Golem has contributed a new type generation utility stub generation for StarlingMonkey
- bytecodealliance/jco#503
- Scaffolding/Stub generation would also be very useful for onboarding new users
- Something that generates code that imports generated types and uses them in stubs.
- Now running on Latest WASI
- (Guy) Updated to Orca project (
orca-wasm
)- They’ve completely replicated
walrus
– we might be able to switch to and recommend them instead - They originally were working on instrumentation code (
wamm
), and ended up re-implementing walrus functionality - Does not yet support full DWARF but has name section remapping
- Does not choke on debug builds
- They’ve completely replicated
- (Victor) Where should a stub generation bindgen solution go?
wit-bindgen
?- (Guy)
jco
currently owns it’s bindgen/generation code - If in the future there’s a problem with
jco
contributions it might make sense to move it upstream, but now it’s likely easier to test everything somewhat close to thejco
project.
- (Guy)
- (Till) WebIDL Bindings generator work is underway
- https://github.com/servo/servo/tree/main/third_party/WebIDL
- (Guy) Deno went IDL to JS, not IDL to rust
- https://crates.io/crates/deno_webidl (generates JS bindings, -not- rust bindings)
- (Till) We can’t quite use Deno’s work here (based on servo’s with mutations) but the server bindings are heavily abstracted and are depending on stuff that has somewhat evolved (along with Rust lang itself).