Leaving slide mode.
WinterCG
the Web-interoperable Runtimes Community Group
TPAC 2024
Anaheim CA, USA
hybrid meeting
23–27 SEPTEMBER 2024
What is a JavaScript runtime?
- JS spec (ECMA-262) defines no I/O
- JS is designed to be a scripting language embedded in a larger system
- The system provides a set of APIs to interact with it –
a runtime environment
- Some such environments (like Node.js, Deno, Bun…) only
exist to give the JS code access to I/O
Types of runtimes
- General purpose OS process: Typically offer a command-line interface.
They’re mostly used as servers, in which case every request runs in the
same instance. E.g. Node.js, Deno...
- Edge runtimes: Essentially only support server use cases.
Typically different requests run in different instances. E.g.
Cloudflare Workers, Deno Deploy...
- Browsers: JS is used to control a GUI, and
sessions are long-lived. Different sessions (pages) can run in the same
instance if they’re same-origin.
Web-interoperability
Why care about it?
- More code reuse
- Less “polyfills” (e.g.
isomorphic-fetch
)
- Learn once, write anywhere
- Common documentation (MDN)
- Reduced lock-in
The web platform is the largest and most important development platform in the world
Web-interoperability
- Many server-side runtimes already have some degree of
web-interoperability, including Node.js
-
But the differences with browsers matter for web API support
- Web specs are written for browsers to follow
- If each runtime solves these issues independently, we have new
sources of incompatibilities
- Extending/using web APIs in ways that aren’t a priority to browsers
- All of which required a venue for coordination between server-side
runtimes and with web specs
WinterCG’s various efforts
Contributing upstream to web specs
Already landed and shipped:
WinterCG’s various efforts
Wider work in common with the web platform
WinterCG’s various efforts
Server-side specific APIs
Collaborating with upstream
-
W3C and WHATWG seem heavily focused on browser use cases, will only
accept changes if they make sense in browsers
- Is it “speci-fiction” if there are non-browser implementers?
- Can we have different conformance classes?
-
How do we get spec authors to consider server-side runtimes?
- Are there any barriers to this collaboration? How can we work to fix them?