Profile avatar
robpalmer.bsky.social
JavaScript Infrastructure & Tooling at Bloomberg. Co-chairing TC39. Likely to tweet tech stuff about JS & software performance. Opinions are my own.
301 posts 3,800 followers 680 following
Regular Contributor
Active Commenter

OMG finally!

I'm happy because this change means TypeScript defaults and Node defaults are converging πŸ‘ Node does not support Import Elision which means it's important to enable "verbatimModuleSyntax" vMS means the developer knows if an import statement/binding will be deleted - all via the `type` keyword.

Open source messaging remains an aspirational goal. Alas IYKYK

TypeScript excitement πŸ˜‰ Congrats to @searyanc.dev on landing big updates to the default tsconfig settings used by `tsc --init` πŸŽ‰ Defaults matter - and in TS 5.9 they embrace simplicity πŸ’™ πŸ”· ESM (was CommonJS) πŸ”· No down-leveling (was ES2016) πŸ”· verbatimModuleSyntax: true github.com/microsoft/Ty...

This is my favourite performance-enhancing JS feature ⚑ It allows ES modules to achieve laziness similar to inline require() in CJS modules, and adds safe handling of Top-Level Await πŸ‘ It's an easy way to speed up existing codebases without introducing the async virality of dynamic import() 🦠

ECMAScript excitement πŸ˜‰ Congrats to @nicr.dev @ryzokuken.bsky.social on landing support for TC39 Stage 3 `import defer` (Lazy Evaluation) in upstream TypeScript heading for TS 5.9 πŸŽ‰ Thanks to @jakebailey.dev @danr.bsky.social @chronicles.org Wes Wigham for the reviews πŸ‘ github.com/microsoft/Ty...

Good day in London so far. Finally got to catch up with @robpalmer.bsky.social in person! And caught @justinfagnani.com for a beer! πŸ™Œ

How it’s going with ESM vs CJS today: 29.6% of the popular packages on npm now includes ESM. Up from 28.8% a quarter ago. ESM-only is up from 10.8% to 11.5%. It’s perhaps all a bit soon after Node 18 became EOL on April 30, making `require(esm)` available everywhere. Maybe next quarter shows more

βœ‹ [email protected] is out! - Browser Target Changed to Baseline Widely Available - Node 18 support dropped. Vite is now distributed as ESM only Plus fixes and deprecated feats removals, preparing for rolldown. Help us test the beta and report back πŸ™ github.com/vitejs/vite/...

@goose.icu showing some benchmark numbers at @webengineshackfest.org

ECMAScript Excitement πŸŽ‰ This week, at its 108th meeting, TC39 advanced these proposals:

Today we are excited to announce Rolldown-Vite: a technical preview of the version of @vite.dev entirely powered by the Rust stack we built over the past year (Oxc + @rolldown.rs) voidzero.dev/posts/announ...

ECMAScript excitement πŸ˜‰ This week TC39 advanced these proposals πŸŽ‰ 4️⃣ Array.fromAsync 4️⃣ Error.isError 4️⃣ Explicit Resource Management: `using` 3️⃣ Immutable ArrayBuffer 2️⃣ Number.prototype.clamp 2️⃣ Seeded Pseudo Random Number Generator 1️⃣ Inspector 1️⃣ Keep Trailing Zeros 1️⃣ More Random Functions

ECMAScript excitement πŸ˜‰ Congrats to @jakob.jingleheimer.dev on advancing the Inspector proposal to Stage 1 at TC39 today πŸŽ‰ Inspector is a subset of the larger Comparisons/Assertions proposal. It tackles the problem space of printing failed comparisons of objects πŸ‘ github.com/JakobJingleh...

ECMAScript Excitement πŸŽ‰ Today, TC39 advanced these proposals: 2️⃣ Math.clamp 2️⃣ Seeded Pseudo-Random Numbers 1️⃣ Random Functions

We're about to begin our next JSR open office hours. Come with questions and we'll share the upcoming roadmap! discord.gg/Xr2a5pHx?eve...

This is so random! and muuuuch needed A new Random namespace with 22 methods for working with randomness in JavaScript. proposal just hit Stage 1

ECMAScript excitement πŸ˜‰ Congrats to @goose.icu on advancing the Math.clamp proposal to Stage 2 at TC39 today πŸŽ‰ Math.clamp(number, min, max) constrains the number to be between the stated range πŸ‘ github.com/tc39/proposa...

And now for something completely different:

ECMAScript excitement πŸ˜‰ Congrats to @tabatkins.com on advancing the proposal for More Random Functions to Stage 1 at TC39 today πŸŽ‰ It provides a set of functions for proper generation of random numbers with control over ranges and distributions πŸ‘ github.com/tc39-transfe...

ECMAScript excitement πŸ˜‰ Congrats to @tabatkins.com on advancing the Seeded Pseudo-Random Numbers proposal to Stage 2 at TC39 today πŸŽ‰ It produces a series of pseudo-random numbers in a way that can be reproduced across program runs and different JS realms πŸ‘ github.com/tc39/proposa...

Interested in Signals? Enjoy learning by reading code? Check out github.com/jkup/learn-s...

As many of you know, I have set myself a mission in 2025 to try and raise Β£50,000 for education-related charities that are equipping young people as they navigate those tricky years into adult life and work. Thank you for all the support so far! - all details at www.givewheel.com/fundraising/...

The Chrome DevTools Performance panel just leveled up! πŸš€ Here's a 69-second taste of the new hotness.

ECMAScript Excitement πŸŽ‰ Today, TC39 advanced these proposals: 4️⃣ Explicit Resource Management 4️⃣ Array.fromAsync 4️⃣ Error.isError 1️⃣ Keep trailing zeros in Intl.NumberFormat and Intl.PluralRules

ECMAScript excitement πŸ˜‰ Congrats to @chronicles.org on conditionally advancing Explicit Resource Management to Stage 4 at TC39 today πŸŽ‰ It introduces `using` declarations and the Symbol.dispose protocol to deterministically and ergonomically release resources πŸ‘ github.com/tc39/proposa...

ECMAScript excitement πŸ˜‰ Congrats to champion JS Choi on conditionally advancing TC39 proposal Array.fromAsync to Stage 4 at TC39 today πŸŽ‰ It's like Array.from & works with async iterators. It's like the npm pkg it-all. It eliminates needing an adhoc for-await-of loop πŸ‘ github.com/tc39/proposa...