Rob Palmer
@robpalmer
JavaScript Infrastructure & Tooling at Bloomberg. Co-chairing TC39. Likely to tweet tech stuff about JS & software performance. Opinions are my own.
ECMAScript excitement 😉 Congrats to @yusukesuzuki.bsky.social on shipping TC39 Stage 3 Import Defer in upstream WebKit, heading for Safari 🎉 Import Defer is a performance feature that lets you lazily execute a module on first access to the module namespace 🔥 github.com/WebKit/WebKi...
ECMAScript excitement 😉 Congrats to my coworker @ashley-c.bsky.social at TechAtBloomberg on advancing Await Dictionary to Stage 3 at TC39 🎉 Promise.all returns positional results as an array. Promise.allKeyed allows named results inside an object 👍 github.com/tc39/proposa...
Bloomberg uses a lot of C++ & contributes to the standard as well as various industry conferences and libraries. I’m looking for an experienced engineer to join a distributed systems team in New York working on our core Deployment Infrastructure for the Bloomberg Terminal 🗽 🧵
Nub is a new frontend for Node by @colinhacks.com ✨ 🦀 A Rust CLI 🧱 Bundler-style JS/TS/JSX transpilation ⚡️ Fast script execution 📦 A new package manager based on Aube 🔢 Node version management The name is similar to Bun. github.com/nubjs/nub
Jarred Sumner experiments with multi-threaded JavaScript 🧪 Filip Pizlo's "wild thought experiment" from 2017 is brought to life 🔥 Unlike existing approaches (workers, SharedArrayBuffer) this shares the JS heap. It means threads directly access the same JS objects. github.com/oven-sh/WebK...
This simplifies the mental model of how type annotations work 💙 The same fix has been merged into upstream Node.js alongside Amaro and SWC. Here are examples of the new errors as well as cases that continue to work fine.
Type-stripping (used in Node's *.ts support) continues to pay dividends 👍 Masaki Hara found some type syntax that was unexpectedly not erasable: adding type assertions changed the precedence of the underlying JS code 😮 Anders on the TypeScript team universally fixed it in TS 7.0 via new errors 🎉
This article explains why many Bloomberg engineers choose to stay with the company for a long time. leaddev.com/career-devel...
ECMAScript gratitude 😉 Huge thanks to @dmitrymakhnev.bsky.social for arranging to host this week's @tc39.es meeting in Amsterdam at @jetbrains.com 🙏 Dmitry was super thoughtful about all the details and an excellent communicator throughout.
We will have achieved AGI when Gemini can appreciate my jokes. (Also, it's important to give your agents closure when they help you with projects around the home.)
The traditional response is for the server to repeat the question slowly. What. Is. Your. Name? Or you can point to this and they'll understand.
Source maps are more exciting than ever 😉 🔶 Recently standardized! (one year ago) 🔶 An active @tc39.es Task Group 🔶 New features soon: Scopes & Range Maps Read all about it 📜 bloomberg.github.io/js-blog/post...
ECMAScript excitement 😉 Safari 26.4 ships support for @tc39.es Stage 4 Iterator.concat 🎉 It creates a new iterator by sequencing existing iterators.
ECMAScript excitement 😉 Congrats to @kdy1.bsky.social on landing support for @tc39.es Stage 3 Decorators in upstream SWC 🎉 SWC is the compiler that powers Next.js, Deno, Parcel, Turbopack, RsPack & more. ⚠️ Note: These differ from the older TS “experimentalDecorators“ github.com/swc-project/...
JavaScript Weekly newsletter is out - and it's about time 😉 javascriptweekly.com/issues/777
ECMAScript excitement 😉 This week in NY @tc39.es advanced these proposals 🎉 4⃣ Intl Era/Month Code 4⃣ Temporal 3⃣ Import Text 2⃣.7⃣ Error Stack Accessor 2⃣.7⃣ Iterator Includes 2⃣ Intl Unit Protocol 2⃣ Thenable Curtailment 1⃣ Error Code Property 🗑️ Dynamic Import Host Adjustment
Yesterday was a big day for JavaScript 🎈 @tc39.es celebrated Temporal achieving Stage 4 in the traditional way - with a cake!
ECMAScript excitement 😉 Congrats to @bridgear.bsky.social on advancing Error Option Limit to Stage 1 @tc39 today 🎉 It allows the captured stack depth to be limited on a per-object basis 👍 It removes the need to rely on implementation-specific global APIs. github.com/tc39-transfe...
ECMAScript excitement 😉 Congrats to @guybedford.com on advancing Import Sync to Stage 2 at @tc39.es today 🎉 const mod = import.sync(<specifier>); Like Node's require(<specifier>), it synchronously loads a module. It throws if sync loading is not possible. github.com/guybedford/p...
ECMAScript excitement 😉 Congrats to Dan Minor @mozilla.org on advancing the Upsert proposal to Stage 4 at TC39 today 🎉 let map = new Map(); map.getOrInsert(key, defaultVal); It lets you set a default value on a map key without overwriting an existing value 👍
Have thoroughly enjoyed working with Jon on JS shenanigans ever since @threepointone.bsky.social leant over and loudly whispered "you should hire this guy" at a London pub. Jon has talked about his dog a lot. Still waiting to meet this chunky boi.
📜 "Date is out, Temporal is in" An article by @wil.to on problems found in the ancient JS Date API and how they are solved in the modern Temporal API 👍 Focuses on immutability and ergonomics of calculations. Love the kicker.
A short article on the perils of the old JS Date API by @philna.sh 📜 It explains the modern solution: use Temporal which shipped in Chrome 144 yesterday 👍 And the article is already out of date! 😉 (in a good way - the article was published 24 hours before Chrome shipped)
This year's GitHub Octoverse annual survey did a good job of correctly representing TypeScript & JavaScript as a single ecosystem. When this combined data is omitted, it results in misleading takes.
Canva used the Rust-based Oxc by @voidzero.dev to generate TS declaration files. It reduced DTS generation time from 339ms down to 5ms - a 66x improvement 🔥
TypeScript excitement 😉 "Our type checks are infinitely parallelizable" @brad.zacher.com.au explains how the difference between the ts & d.ts dependency graphs can help scale the TS checker to 12 MLoC. A 2x faster P50 shifted user behavior to rely less on CI and boosted local checking by 70% 🔥
ECMAScript excitement 😉 This week TC39 advanced these proposals 🎉 4️⃣ Intl.Locale Info 4️⃣ Iterator.concat 4️⃣ JSON.parse Source Text 3️⃣ Iterator.zip 2️⃣.7️⃣ Iterator.prototype.join 2️⃣.7️⃣ Promise.allKeyed 2️⃣ Error.captureStackTrace 2️⃣ Import Text 2️⃣ Object.keysLength 1️⃣ Intl Energy Units 1️⃣ Intl Unit Protocol 🧵