TC39 Roundup Drama Edition Part II: JS0 and JSSugar
In this episode, Surma talks about a presenation-maybe-soon-to-be-a-proposal "JS0", which explores the idea of splitting JavaScript into two specifications: JS0, focusing on security, performance and capabilties, implemented by engines; and JSSugar, focussing on developer productivity and syntactic sugar features implemented by build tools. Notes & Corrections: Yes, I know, people stillĀ doĀ have to step through assembler. But I stand behind the essence of my point: The debug symbols for compiled languages feel very reliable. We should be able to at least match that reliability in JavaScript. Guy Bedford currently works at Fastly. Resources: Previous episode on Shared Structs The infamous slide deck OTMT episode on SourceMaps on source maps
-------- Ā
31:42
TC39 Roundup Drama Edition Part I: Shared Structs
In this episode, Surma talks about the Stage 2 proposal "JavaScript Struct", which introduces fixed-layout objects and the ability to share them between realms. Notes & Corrections fromĀ Shu: Surma was slightly wrong about why private fields were originally considered problematic for sharability. The problem occurs when a class can be evaluated multiple times: function makeClass() { return class MyClass { #priv; getPrivateField(instance) { return instance.#priv; } }; } const C1 = makeClass(); const C2 = makeClass(); const i1 = new C1(); const i2 = new C2(); // this throws! i1.getPrivateField(i2); This behavior makes it hard to compile private fields just as "slots" on an object, as clearly additional behavior is required. This is somewhat at odds with the goal of achieving a fixed layout. Also, launching is mid-2025 is very optimistic. Resources: SharedArrayBuffer Structs proposal Return overrides Records & Tuples proposal SurmaāsĀ buffer-backed-objectĀ library forĀ SharedArrayBuffer
-------- Ā
30:47
More build tools: Nix
After talking about Bazel in one of our previous episodes, we are now looking at Nix, a build system that has been getting increasing attention lately. Resources: OTMT Bazel episode Surma'sĀ video on Nix Eelco Dolstra'sĀ PhD Thesis Nix & NixOS AĀ branchĀ ofĀ SquooshĀ using Nix Nixpkgs manual ComparisonĀ of size and freshness of different package managers Home Manager Nix pills
-------- Ā
41:06
The new stylable select element
We're finally getting aĀ Ā element we can fully control with CSS! A bunch of other stuff needed to be added to the platform to make it work, and the good news is we can use it a lot of them independently ofĀ . Resources: Chrome's article on the newĀ , and how you can provide feedback. The CSS appearance property. Nope, I still don't know what it does. The Popover API. "On popover accessibility: what the browser does and doesnāt do"Ā by Hidde de Vries and Scott O'Hara. The CSS anchor positioning API. The previous spatnav spec effort. TheĀ hiddenĀ attributeĀ until-foundĀ valueĀ (sorry, I saidĀ if-foundĀ in the episode). The CSS element function. Timing of cloning for theĀ Ā element. Animating to height auto. The new entry-exit animation feautres. The proposedĀ commandĀ andĀ commandforĀ attributes which give buttons declaritive activation behavior.
-------- Ā
45:29
Chrome's new LLM AI API OMG
Chrome is experimenting with exposing an LLM to the web platform. Jake and Surma dig into how the API works, and whether something like this could work on the open web. Resources: The explainer ChatGPT functions Chrome's initial vague docs about the feature Gemini terms of use The EURion constellation WebNN