Rob Palmer Profile Banner
Rob Palmer Profile
Rob Palmer

@robpalmer2

Followers
7,668
Following
1,672
Media
303
Statuses
8,887

JavaScript Infrastructure & Tooling at Bloomberg. Co-chairing @TC39 . Likely to tweet tech stuff about JS & software performance. Opinions are my own.

London, England
Joined July 2009
Don't wanna be here? Send us removal request.
Explore trending content on Musk Viewer
@robpalmer2
Rob Palmer
4 years
ECMAScript excitement 😉 Today TC39 advanced these features to Stage-4 🎉 - Intl.ListFormat - Intl.DateTimeFormat: dateStyle & timeStyle - Logical Assignment (&&= ||= ??=) - Numeric Separators (1_000) - Promise.any & AggregateError - WeakRefs & FinalizationRegistry
17
350
1K
@robpalmer2
Rob Palmer
3 years
ECMAScript excitement 😉 ES2021 has been approved by the Ecma General Assembly 🎉 💡 Logical Assignment Operators (&&= ||= ??=) 💡 Numeric Separators (1_000) 💡 Promise.any & AggregateError 💡 String.prototype.replaceAll 💡 WeakRefs & FinalizationRegistry
9
192
706
@robpalmer2
Rob Palmer
4 years
ECMAScript excitement 😉 TC39 has advanced the Record & Tuple proposal to Stage 2! This brings immutable datastructures to JavaScript. Congrats to my colleagues @TechAtBloomberg @r_ricard @rickbutton @NicoloRibaudo who are championing the proposal.
14
228
693
@robpalmer2
Rob Palmer
5 years
Two proposals hit Stage 3 at TC39 this week. ?? 🔥 Nullary Coalescing ?. 🔥 Optional Chaining Get ready for more question marks in your JS!
17
160
608
@robpalmer2
Rob Palmer
2 years
ECMAScript excitement 😉 Congrats to @smooshMap on advancing Iterator Helpers to Stage 3 at @TC39 today 🎉 Both sync & async iterators gain these methods: 🔸 map 🔸 filter 🔸 take 🔸 drop 🔸 flatMap 🔸 reduce 🔸 toArray 🔸 forEach 🔸 some 🔸 every 🔸 find
11
100
609
@robpalmer2
Rob Palmer
2 years
ECMAScript excitement 😉 ES2022 is approved by Ecma International 🎉 🔶 Class Fields 🔶 #field in obj checks 🔶 Class Static Blocks 🔶 .at() for arrays & strings 🔶 Error Cause 🔶 Object.hasOwn() 🔶 RegExp Match Indices (/d) 🔶 Top Level Await
15
142
453
@robpalmer2
Rob Palmer
2 years
ECMAScript excitement 😉 Congrats to @acutmore on advancing TC39 proposal "Change Array by Copy" to Stage 3 🎉 These new array methods return a fresh array, leaving the original unmodified. 🔹 .with() 🔹 .toReversed() 🔹 .toSorted() 🔹 .toSpliced()
5
102
405
@robpalmer2
Rob Palmer
19 days
ECMAScript excitement 😉 Today the Ecma General Assembly approved ES2024 🎉 🔶 Array.groupBy & Object.groupBy 🔶 ArrayBuffer transfer 🔶 Atomics.waitAsync 🔶 Promise.withResolvers 🔶 RegExp v flag 🔶 Resizable ArrayBuffers 🔶 Well-Formed Unicode Strings
4
82
393
@robpalmer2
Rob Palmer
10 months
ECMAScript excitement 😉 Next week's @TC39 meeting is hosted by @TechAtBloomberg in Tokyo & has a packed agenda: 🔸 AsyncContext 🔸 Decimal 🔸 Import Attributes 🔸 Intl.MessageFormat 🔸 Negated `in` 🔸 Pattern Matching 🔸 Structs 🔸 TDZ 🔸 Throw expressions 🔸 Type Annotations
14
67
382
@robpalmer2
Rob Palmer
9 months
Source Maps have caused too many unnecessarily frustrating debugging situations. I'm super pleased we're now investing in hardening the spec and the ecosystem tools to make JS debugging a first-class experience.
@TC39
TC39
9 months
TC39 has formed a new Task Group to standardize Source Maps. Source Maps are a file format used for debugging and post-hoc analysis of JavaScript and other languages. The convenors of TC39-TG4 are @jkup and @littledan .
2
57
291
6
31
357
@robpalmer2
Rob Palmer
3 months
ECMAScript excitement 😉 Congrats to @bakkoting on advancing Set Methods to Stage 4 this week @TC39 🎉 Set.prototype gains these methods: 🔶 intersection 🔶 union 🔶 difference 🔶 symmetricDifference 🔶 isSubsetOf 🔶 isSupersetOf 🔶 isDisjointFrom
8
62
357
@robpalmer2
Rob Palmer
4 years
📢I wrote a blog post on how @TechAtBloomberg uses TypeScript. "10 Insights from Adopting TypeScript at Scale"
Tweet media one
9
102
333
@robpalmer2
Rob Palmer
1 year
ECMAScript excitement 😉 Congrats to @acutmore @TechAtBloomberg on advancing "Change Array by Copy" to Stage 4 @TC39 🎉 These new array methods return a fresh array leaving the original unmodified. 🔹 toReversed() 🔹 toSorted() 🔹 toSpliced() 🔹 with()
8
74
334
@robpalmer2
Rob Palmer
8 months
Prettier will be 5x faster thanks to @fabiospampinato 🔥 For cached usage the win is 22x so far 😮 Zero Rust. This is top-tier JS performance work, described in detail in the blog post. Learn about efficient globbing, minimizing FS access, work-skipping, caching. This is gold.
@Vjeux
vjeux ✪
8 months
As a direct result of the bounty, @fabiospampinato has been rewriting the prettier CLI to be orders of magnitude faster. Please try it out and check this awesome performance deep dive:
Tweet media one
1
42
286
6
23
331
@robpalmer2
Rob Palmer
1 year
ECMAScript excitement 😉 Congrats to @NicoloRibaudo on advancing Optional Chaining for assignments to Stage 1 @TC39 today 🎉 Today Optional Chaining works on the Right-Hand Side of assignment. value = obj?.prop This proposal allows it on the left 👍 obj?.prop = value 🆕
4
46
333
@robpalmer2
Rob Palmer
2 years
bun is a new JavaScript runtime 🎉 ↔️ An alternative to existing runtimes like Node, Deno, etc 🔋 Batteries Included - the toolchain has compilation, bundling, testing, npm fetching 🍎 Uses JSC engine (not V8) ⚡ Written in Zig (not Rust/C++) 🔥 Super fast By @jarredsumner
@jarredsumner
Jarred Sumner
2 years
Introducing Bun - an incredibly fast all-in-one JavaScript runtime.
239
2K
8K
3
63
329
@robpalmer2
Rob Palmer
1 year
ECMAScript excitement 😉 Congrats to my coworker @peetklecha @TechAtBloomberg on advancing the Promise.withResolvers() proposal to Stage 2 @TC39 today 🎉 It creates a promise with exposed functions to resolve or reject it. Also known as a "Deferred" 👍
11
48
318
@robpalmer2
Rob Palmer
1 year
TypeScript source code now uses ES modules 🎉 🔹 npm package is 46% smaller 🔹 Build times reduced by 10-25% 😲 The next likely step is to ship native ESM for even more wins 👍 e.g. making the CJS entrypoint a thin wrapper around a native ESM entrypoint will save 7 MB alone 🔥
@typescript
TypeScript
1 year
Want to hear about our refactoring adventures? We put together a nice short write-up (just 6,000 words) about our journey in modernizing the TypeScript codebase, and our migration to modules!
1
73
401
4
53
318
@robpalmer2
Rob Palmer
1 year
ECMAScript excitement 😉 @TC39 advanced these proposals this week 🎉 4️⃣ Atomics.waitAsync 4️⃣ RegExp v flag 4️⃣ Well-Formed Unicode Strings 3️⃣ Decorator Metadata 3️⃣ Float16Array 2️⃣ Base64 for Uint8Array 2️⃣ Promise.withResolvers 2️⃣ TimeZone Canonicalizn 1️⃣ Intl.ZonedDateTimeFormat
7
47
315
@robpalmer2
Rob Palmer
2 years
ECMAScript excitement 😉 These proposals achieved stage advancement during this week's 90th TC39 meeting 🎉 4️⃣ findLast/findLastIndex 3️⃣ Symbols as WeakMap keys 3️⃣ JSON.parse source text access 3️⃣ RegExp modifiers 2️⃣ String.dedent 1️⃣ Import Reflection 1️⃣ RegExp Atomic Operators
8
80
315
@robpalmer2
Rob Palmer
3 months
ECMAScript excitement 😉 This week's @tc39 agenda: 🔶 Array.isTemplateObject 🔶 AsyncContext 🔼 Decimal 🔼 Deferred Evaluation 🔶 Explicit Res Mgmt 🔼 Extractors 🔼 Iterator.range 🔼 Math.sumExact 🔼 Pattern Matching 🔶 Record & Tuple 🔼 Set Methods 🔶 Shared Structs 🆕 Signals
13
43
298
@robpalmer2
Rob Palmer
3 years
Typescript 4.5 is on track to support the native ES Module features introduced in Node 12 thanks to Wes Wigham 🎉 🔥 *.mjs & *.cjs files are importable 🔥 "type": "module" in package.json 🔥 "exports" in package.json 🔥 native import() in CJS files
5
70
289
@robpalmer2
Rob Palmer
8 months
ECMAScript excitement 😉 Congrats to my coworker @peetklecha @TechAtBloomberg for advancing Promise.withResolvers to Stage 4 @TC39 today 🎉 const { promise, resolve, reject } = Promise.withResolvers(); Also known as a "Deferred"
4
52
294
@robpalmer2
Rob Palmer
2 years
ECMAScript excitement 😉 Congrats to @bakkoting on advancing the Set Methods proposal to Stage 3 at @TC39 today 🎉 Set.prototype gains these methods: 🟡intersection 🟡union 🟡difference 🟡symmetricDifference 🟡isSubsetOf 🟡isSupersetOf 🟡isDisjointFrom
4
51
292
@robpalmer2
Rob Palmer
1 year
ECMAScript excitement 😉 ES2023 was approved by Ecma International at the 125th General Assembly in Geneva 🎉 Featuring... 🔶 Array findFromLast() 🔶 Change Array by Copy 🔶 Hashbang Grammar 🔶 Symbols as WeakMap keys
4
36
291
@robpalmer2
Rob Palmer
4 years
ECMAScript excitement 😉 TC39 has advanced these proposals. 💡Resizable ArrayBuffers➡️2 💡Error Cause➡️1 💡Double-Ended Iterator & Destructuring➡️1 💡Intl.DisplayNames V2➡️1 💡Intl Locale Info➡️1 💡Modulus & Additional Integer Math➡️1 💡Standardized Debug➡️1 💡String Dedent➡️1
6
81
284
@robpalmer2
Rob Palmer
2 years
ECMAScript excitement 😉 Congrats to @pzuraq on advancing TC39 proposal Decorators to Stage 3 🎉 This is conditional advancement based on separating out metadata into a follow-on proposal.
10
81
287
@robpalmer2
Rob Palmer
3 months
TypeScript excitement 😉 Congrats to @TitianCernicova @TechAtBloomberg on landing --isolatedDeclarations in upstream TypeScript 🎉 It's the start of a journey to faster type-checking at scale 🔥 An epic collab between folk in TS, Bloomberg & Google 👍
10
45
287
@robpalmer2
Rob Palmer
4 years
ECMAScript excitement 😉 TC39 has just advanced these proposals 🎉 - Class static initialization block ➡️ Stage 2 - .item() for indexables ➡️ Stage 3 - Import Assertions ➡️ Stage 3 - Intl.DisplayNames ➡️ Stage 4 - Intl.Enumeration ➡️ Stage 2
11
82
278
@robpalmer2
Rob Palmer
5 months
📢 LLRT (Low Latency Runtime) is a new JS runtime from Amazon ✨ ⚡ Designed for fast Serverless startup time 🦀 Written in Rust 💨 Embeds the QuickJS engine written in C 💡 Lightweight (~3MB) 🧪 Experimental!
6
70
280
@robpalmer2
Rob Palmer
1 year
ECMAScript excitement 😉 This week @TC39 advanced these proposals 🎉 3️⃣ Array Grouping 3️⃣ Promise.withResolvers 3️⃣ Source Phase Imports 3️⃣ Time Zone Canonicalization 2️⃣ Deferred Import Evaluation 1️⃣ DataView get/set Uint8Clamped methods 1️⃣ Optional Chaining assignment
3
75
280
@robpalmer2
Rob Palmer
25 days
TypeScript 5.5 is out 🎉 🔶 JS: Set Methods 🔷 Checking: Inferred type predicates 🔷 Checking: RegExp syntax 🔷 JSDoc: Type Imports 🔷 DTS: Isolated Declarations 🔷 DTS: transpileDeclaration API 🔷 Config: ${configDir} 🔷 Package: Shrinks 30% 🗑 Deprecated flags
@typescript
TypeScript
25 days
TypeScript 5.5 is now available! 🎉✨ Now with ✅ Inferred Type Predicates ✅ RegEx syntax checks ✅ The JSDoc @‍import Tag ✅ ${configDir} for easier tsconfig inheritance ✅ --isolatedDeclarations ✅ Lots of new optimizations And more! Try it today!
18
521
2K
4
39
280
@robpalmer2
Rob Palmer
1 year
ECMAScript excitement 😉 These proposals advanced @TC39 this week 🎉 3️⃣ Async Explicit Resource Mgmt 3️⃣ Import Attributes (*) 2️⃣ AsyncContext 2️⃣ Float16Array 2️⃣ Iterator.range 1️⃣ Await Dictionary 1️⃣ Class Method Param Decorators 1️⃣ Promise.withResolvers 1️⃣ TZ Canonicalization
5
59
274
@robpalmer2
Rob Palmer
10 months
ECMAScript excitement 😉 These proposals moved this week @TC39 🎉 4️⃣ Resizable ArrayBuffer 2️⃣ RegExp.escape 2️⃣🔙 ShadowRealm 1️⃣ Joint Iteration 1️⃣ Locale Extensions 1️⃣ Iterator Sequencing 1️⃣ Negated in 1️⃣ Stable Formatting 🗑️ FinalizationRegistry #cleanupSome 🗑️ Symbol.thenable
8
50
268
@robpalmer2
Rob Palmer
10 months
ECMAScript excitement 😉 Congrats to @_shu on shipping @TC39 Stage 3 Promise.withResolvers in upstream @v8js heading for Chromium 119 🎉 const { promise, resolve, reject } = Promise.withResolvers(); Also known as a "Deferred" 👍
5
33
262
@robpalmer2
Rob Palmer
3 years
ECMAScript excitement 😉 TC39 proposal Temporal is now Stage-3 🎉 It's about time ⏰ and provides a replacement for Date 📅 Congrats to all the champions & contributors @maggiepint @pipobscure @mj1856 @bterlson @_sffc @ryzokuken @therealptomato @Jason_williams @justingrantjg
@pipobscure
Philipp Dunkel
3 years
Hurray!!! The JavaScript Temporal proposal has reached stage 3 in TC39. Proper Date & Time handling are coming!
8
178
574
0
71
249
@robpalmer2
Rob Palmer
5 years
ECMAScript excitement 😉 New proposal Records & Tuples achieved Stage 1 at TC39! This brings immutable datastructures to JS. Congrats to champions @r_ricard and @rickbutton
4
89
247
@robpalmer2
Rob Palmer
5 months
ECMAScript excitement 😉 This week @TC39 advanced these proposals 🎉 4️⃣ ArrayBuffer transfer 3️⃣ Base64 conversion 2️⃣.7️⃣ ShadowRealm 2️⃣ Joint Iteration 2️⃣ Math.sum 2️⃣ Promise.try 1️⃣ Discard bindings 1️⃣ ESM Phase Imports 1️⃣ Function Decorators 1️⃣ Iterator Unique/Chunking
4
36
244
@robpalmer2
Rob Palmer
3 months
ECMAScript excitement 😉 Congrats to @JatinRamanathan @littledan & @wycats on advancing the Signals proposal to Stage 1 today @TC39 🎉 Thanks to proposal author @EisenbergEffect and the many other framework representatives who have contributed so far 👍
@EisenbergEffect
Rob Eisenberg
3 months
Achievement Unlocked! Signals advance to Stage 1 in TC39. Big thanks to @JatinRamanathan , @littledan , and @wycats for presenting today. Lots more work to do during Stage 1, but we're now officially under consideration.
6
40
211
5
38
236
@robpalmer2
Rob Palmer
4 years
@ahejlsberg @gvanrossum Looking forwards to Typeython! 😉
6
5
232
@robpalmer2
Rob Palmer
2 years
ECMAScript excitement 😉 This week TC39 advanced these proposals 🎉 3️⃣ Change Array by Copy 3️⃣ Decorators 3️⃣ RegExp set notation + string props 2️⃣ Decorators metadata 1️⃣ Function.prototype.once() 1️⃣ Intl units conversion 1️⃣ Intl.MessageFormat 1️⃣ Type Annotations
@GNUmanth
Hemanth.HM
2 years
Updates from 89th meeting of #TC39 🤓 #javascript
2
5
32
3
51
226
@robpalmer2
Rob Palmer
3 years
Typescript 4.5 is on track to support explicit type-only import specifiers thanks to @atcb 🎉 📘 import { a, type b } from "p" ➡️ 📙 import { a } from "p" This use of `type` conveys more information to the reader and will simplify tooling.
4
50
223
@robpalmer2
Rob Palmer
8 months
ECMAScript excitement 😉 This week @TC39 advanced these JS proposals 🎉 4️⃣ Array Grouping 4️⃣ Promise.withResolvers() 1️⃣ Module sync assert ...and withdrew these proposals 🗑️ Operator Overloading 🗑️ Custom Numeric Suffices
5
28
216
@robpalmer2
Rob Palmer
3 months
ECMAScript excitement 😉 This week @TC39 advanced these proposals 🎉 4️⃣ RegExp: Duplicate Named Cap Groups 4️⃣ Set Methods 3️⃣ eval for Trusted Types 3️⃣ eval-injected global var is redeclarable 2️⃣.7️⃣ Math.sumPrecise 2️⃣.7️⃣ Promise.try 1️⃣ Error.isError 1️⃣ Signals 1️⃣ Strict `using`
12
33
214
@robpalmer2
Rob Palmer
1 year
ECMAScript excitement 😉 Import Assertions will (pending editorial reviews) re-advance to Stage 3 under the new name "Import Attributes" 🎉 The `assert` keyword is now renamed to `with` import obj from "mod" with { "type": "json" } `assert` will be deprecated ⚠
5
50
214
@robpalmer2
Rob Palmer
2 months
ECMAScript excitement 😉 Congrats to @evanwallace on shipping support for @TC39 Stage 3 Decorators in esbuild v0.21 🎉 Evan's diligent approach led to bugs being reported in Babel, TypeScript, SWC, plus clarification in the forthcoming ES spec text 👍
3
41
212
@robpalmer2
Rob Palmer
10 months
@TheBrousse @varjmes @pujux_ @zyxwvutswal @yagiznizipli @guykdm Yagiz is a kind person who has donated extreme amounts of his free time to improving Node performance without payment, because he wants to lift up the community. I'm impressed how reasonable his responses are given the wild assertions being made here.
1
1
208
@robpalmer2
Rob Palmer
8 months
ECMAScript excitement 😉 Congrats to @ljharb for advancing Array Grouping to Stage 4 @TC39 today 🎉 🔶 Object.groupBy() 🔶 Map.groupBy() These are static functions that operate on arrays.
@ljharb
Jordan Harband
8 months
Array Grouping received stage 4 today at @TC39 ! Spec PR: Proposals repo: Use it now with and !
3
8
85
4
50
208
@robpalmer2
Rob Palmer
4 months
TypeScript 5.4 is out 🎉 🔶 JS: Object.groupBy & Map.groupBy 🔷 Checking: Closure bindings narrowed after final assignment 🔷 Checking: "NoInfer" utility type 🔷 Checking: Customizable Import Attributes 🔷 Modules: require() in ESM 🔷 IDE: Quick fix missing params
@typescript
TypeScript
4 months
Announcing TypeScript 5.4! 📢 Now with: ✅ Smarter control-flow analysis in closures ✅ The `NoInfer` utility type ✅ Broader support for bundlers and runtimes ✅ Quick fixes for missing parameters ✅ Improved auto-imports and more! Try it today!
18
281
1K
2
39
208
@robpalmer2
Rob Palmer
6 months
If you say "Type Annotations" three times, this guy suddenly appears 😉
Tweet media one
3
2
207
@robpalmer2
Rob Palmer
1 month
TypeScript 5.5 RC is out 🎉 🔶 JS: Set Methods 🔷 Checking: Inferred type predicates 🔷 Checking: RegExp syntax 🔷 JSDoc: Type Imports 🔷 DTS: Isolated Declarations 🔷 DTS: transpileDeclaration API 🔷 Config: ${configDir} 🔷 Package: Shrinks 30% 🗑 Deprecated flags
@typescript
TypeScript
1 month
TypeScript 5.5 RC is now out to try! We're looking for feedback on inferred type predicates, JSDoc imports, regex checking, ${configDir}, isolatedDeclarations, build optimizations, and more!
6
112
533
5
34
207
@robpalmer2
Rob Palmer
2 years
ECMAScript excitement 😉 These proposals achieved stage advancement at this week's @TC39 meeting 🎉 ⏩3️⃣ Array.fromAsync ⏩2️⃣ Well-Formed Unicode Strings ⏩1️⃣ Extractors
2
42
204
@robpalmer2
Rob Palmer
5 years
JavaScript engines are much like buses: you wait years for one, then two shiny new ones show up at once! 🔥 QuickJS by Fabrice Bellard 🔥 Hermes by Facebook
3
62
202
@robpalmer2
Rob Palmer
6 months
ECMAScript excitement 😉 Congrats to Rezvan Mahdavi Hezaveh on shipping @TC39 Stage 3 Set Methods in @v8js heading for Chrome 122 🎉 🔶 Adds intersection(), union(), etc Thanks to @_shu , Liviu Rau, Michael Achenbach & Adam Klein for the reviews 👍
3
30
203
@robpalmer2
Rob Palmer
5 years
ECMAScript excitement 😉 TC39 Stage 0 proposal BigDecimal for arbitrary-precision decimal numbers has been implemented in the QuickJS engine made by Fabrice Bellard. 0.1d + 0.2d === 0.3d // true!
8
65
200
@robpalmer2
Rob Palmer
1 year
Profiling production code in @ChromeDevTools now shows you original function names in Chrome 109 🎉 This uses sourcemaps to decode the minified function name. Thanks to Andres Olivares for implementing this 👍
Tweet media one
4
41
198
@robpalmer2
Rob Palmer
2 years
ECMAScript excitement 😉 TC39 Stage 2 proposal Record & Tuple brings immutable data structures to JavaScript that can be compared by value. #{ a:1 } === #{ a:1 } // true 🔥 @r_ricard from @TechAtBloomberg will reveal more at @thejsnation in Amsterdam in June.
2
42
197
@robpalmer2
Rob Palmer
2 years
ECMAScript excitement 😉 Congrats to @giltayar & my fellow champions @drosenwasser @romulocintra on advancing TC39 proposal "Type Annotations" to Stage 1 🎉 This proposal was formerly known as "Types as Comments" Hopefully this will make using typed JavaScript even easier 🎈
3
40
193
@robpalmer2
Rob Palmer
9 months
ECMAScript excitement 😉 Chrome 119 is released 🎉 🔸 Stage 3 Promise.withResolvers() 🔹 WebAssembly Garbage Collection (WasmGC)
3
26
191
@robpalmer2
Rob Palmer
1 year
ECMAScript excitement 😉 This week @TC39 moved these proposals 🎉 4️⃣ Change Array by Copy 4️⃣ Intl.NumberFormat V3 4️⃣ Symbols as WeakMap keys 3️⃣ ArrayBuffer transfer 2️⃣⏪ Import Assertions 2️⃣ Intl era/monthCode 2️⃣ Symbol Predicates 1️⃣ Async Context 1️⃣ Proto pollution mitigation
4
33
192
@robpalmer2
Rob Palmer
1 month
ECMAScript excitement 😉 This week @TC39 advanced these proposals 🎉 3️⃣ Promise.try 2️⃣.7️⃣ Deferred Import Evaluation 2️⃣.7️⃣ Joint Iteration 2️⃣.7️⃣ RegExp.escape 2️⃣ Error.isError 2️⃣ ESM Phase Imports 2️⃣ Discard Bindings 2️⃣ Iterator Sequencing
3
33
192
@robpalmer2
Rob Palmer
2 years
TypeScript 4.9 Beta is out 🎉 🔷 New `satisfies` operator to check compatibility 🔷 Enhanced narrowing of `in` 🔷 Stricter NaN checks 🔶 File-Watching is more efficient - reduced polling 🔶 No more speculative import-specifier-elimination in JS files
@typescript
TypeScript
2 years
TypeScript 4.9 Beta is now available! Try out our improved 'in' operator narrowing, the new 'satisfies' operator, stricter 'NaN' checks, and more-efficient file-watching defaults!
10
151
691
3
23
189
@robpalmer2
Rob Palmer
1 month
ECMAScript excitement 😉 @mozilla will host next week's @TC39 meeting in Helsinki 👍 Proposed advancements: 🔶 Atomics.pause 🔶 Decimal 🔶 Deferred Import Evaluation 🔶 Error.isError 🔶 ESM Phase Imports 🔶 Iterator Sequencing 🔶 Joint Iteration 🔶 Promise.try 🔶 RegExp.escape
6
22
188
@robpalmer2
Rob Palmer
5 years
ECMAScript excitement 😉 Optional Chaining just achieved Stage 4 at TC39! Many people worked on this including @drosenwasser @the_gisenberg @DustinSavery @devsnek @ioctaptceb @rkirsling @BenjaminCoe @littledan Joshua Litt, Claude Pache, Justin Ridgewell
@drosenwasser
Daniel Rosenwasser
5 years
Optional Chaining just moved to Stage 4 at TC39! 🎉 ?. is now part of ES2020!
25
623
2K
3
74
184
@robpalmer2
Rob Palmer
4 years
This is big. @guybedford has managed to get Node to synthesise named exports from classic CommonJS modules 🎉 import { prop } from "cjs-module" Many users have requested this for years.
@MylesBorins
sMyle
4 years
🎉Happy @nodejs release day 🎉 OMG named imports from CJS modules edition! Congrats @guybedford on getting this together. $ nvm install v14.13.0
13
133
482
4
58
180
@robpalmer2
Rob Palmer
10 months
ECMAScript excitement 😉 Safari 17.0 ships support for @TC39 Stage 3 proposal Set Methods 🎉 The seven new Set.prototype methods are: 🔸 intersection 🔸 union 🔸 difference 🔸 symmetricDifference 🔸 isSubsetOf 🔸 isSupersetOf 🔸 isDisjointFrom
@jensimmons
Jen Simmons
10 months
Safari 17.0 is here!
16
131
548
0
31
178
@robpalmer2
Rob Palmer
26 days
If you are interested in low-level JS performance optimization techniques that exploit monomorphism & JIT, @TitianCernicova just dropped an experimental win of ~20% in the TypeScript checker 🔥 This kind of win does not get discovered everyday.
6
24
180
@robpalmer2
Rob Palmer
3 years
ECMAScript excitement 😉 A strong agenda for tomorrow's TC39 meeting 🔥 💡 Array Grouping (requesting Stage 3⃣) 💡 Decimal numbers 💡 Decorators 💡 New Intl APIs 💡 Records & Tuples 💡 RegExp enhancements 💡 ShadowRealms 💡 Temporal date/times
4
26
174
@robpalmer2
Rob Palmer
25 days
TypeScript excitement 😉 Today TS 5.5 ships Isolated Declarations 🎉 An epic collab between @TechAtBloomberg @Google @typescript to enhance .d.ts emit & unlock performance 🔥 Thanks to @TitianCernicova Hana Joo @TChetwin @frigus02 Lisa Velden @andhaveaniceday @WesleyWigham 👍
Tweet media one
@robpalmer2
Rob Palmer
25 days
TypeScript 5.5 is out 🎉 🔶 JS: Set Methods 🔷 Checking: Inferred type predicates 🔷 Checking: RegExp syntax 🔷 JSDoc: Type Imports 🔷 DTS: Isolated Declarations 🔷 DTS: transpileDeclaration API 🔷 Config: ${configDir} 🔷 Package: Shrinks 30% 🗑 Deprecated flags
4
39
280
3
13
168
@robpalmer2
Rob Palmer
3 months
TypeScript 5.5 Beta is out 🎉 🔷 Checking: Inferred type predicates 🔷 Checking: RegExp syntax 🔷 JSDoc: Type-only imports 🔷 DTS: Isolated Declarations 🔷 DTS: transpileDeclaration API 🔷 DTS: Omit references by default 🔷 Package: 30% smaller install 🗑 Deprecated flags
@typescript
TypeScript
3 months
Announcing TypeScript 5.5 Beta! 📣 Now with type predicate inference, more type narrowing, an @‍import tag for JSDoc, the --isolatedDeclarations flag, performance & reliability improvements, and much more!
12
199
927
1
25
166
@robpalmer2
Rob Palmer
10 months
ECMAScript excitement 😉 Congrats to @ljharb on advancing the proposal for RegExp.escape to Stage 2 @TC39 today 🎉 It lets you escape arbitrary strings so they can be used in Regular Expressions. RegExp.escape("(*.*)"); // "\(\*\.\*\)"
4
19
165
@robpalmer2
Rob Palmer
1 year
It may be non-obvious but the WebAssembly Garbage Collection proposal together with StringRef is key to enabling efficient sharing of structured data between WebAssembly & JavaScript ⚡ In time, the immense value of this work to the web platform will become apparent 🔥
@cramforce
Malte Ubl
1 year
This is a nuanced and ground breaking change. Efficient string sharing between host VM and WASM is a game changer for many use cases.
2
19
119
4
37
165
@robpalmer2
Rob Palmer
1 year
Many exciting items on this week's @TC39 meeting agenda 😉 🔸Async Context 🔸Async Explicit Resource Mgmt 🔸Decimal 🔸Decorator Metadata & Method Params 🔸Import Assertions/Reflection 🔸Iterator.range & Helpers 🔸Promise.withResolvers 🔸Type Annotations
10
24
164
@robpalmer2
Rob Palmer
5 years
Last week @MylesBorins successfully pushed Top-Level Await to Stage 3 at TC39 🚀 I'd like to say thank you for the input from the JS tooling community on this proposal. TLA is a widely demanded feature that allows you to await promises from outside of functions. (1/n)
2
27
160
@robpalmer2
Rob Palmer
1 year
Import Maps have now been implemented in all major browsers & engines 🔥 🔸 Chromium 89 🔸 Firefox 108 🔸 Safari 16.4 Beta This lets browsers understand code that contains: import _ from "lodash" 📜 This article by Yoshi explains what they are & the problem they solve.
@SpiderMonkeyJS
SpiderMonkey
1 year
Late last year, we implemented the Import Maps specification in Firefox. Yoshi (the engineer working on it) wrote an in-depth introduction to it, along with a deep dive that you can expect next week! Read the blog post here:
2
13
53
4
20
157
@robpalmer2
Rob Palmer
3 months
ECMAScript excitement 😉 Congrats to @ljharb on advancing Error.isError to Stage 1 today @TC39 🎉 Error.isError() allows you to test if a value is an Error instance. It works even if the Error originates from another Realm, similar to Array.isArray 👍
4
17
159
@robpalmer2
Rob Palmer
1 year
Typescript 5.0 is released 🎉 So many new features, including... 🔷 ES Decorators 🔷 --moduleResolution bundler matches semantics used by Vite et al 🔷 --allowImportingTsExtensions allows referencing *.ts files 👍 🔷 --allowArbitraryExtensions means app.css gets app.d.css.ts
@typescript
TypeScript
1 year
TypeScript 5.0 is here! 🎉🎉 Learn about what's new and try it today!
34
1K
5K
1
26
153
@robpalmer2
Rob Palmer
4 years
Deno contains a single version of TypeScript. TypeScript checking gets better over time, meaning source code fixes are needed to work with new versions. Is the expectation that all Deno packages should be fixed up when Deno bumps its TypeScript version?
12
20
153
@robpalmer2
Rob Palmer
2 years
@kdy1dev Call it Turbocheck. It's cleaner.
Tweet media one
2
2
152
@robpalmer2
Rob Palmer
1 year
ECMAScript excitement 😉 Congrats to Justin Ridgewell @vercel & @legendecas on advancing the "Async Context" proposal to Stage 1 at @TC39 today 🎉 AsyncContext lets you propagate state throughout a potentially async callstack. It is similar to Node's AsyncLocalStorage 👍
@legendecas
Chengzhong Wu
1 year
We've got AsyncContext for JavaScript accepted as a TC39 stage 1 proposal 🥳: (Great thanks to Justin Ridgewell!!)
3
16
114
3
24
152
@robpalmer2
Rob Palmer
4 years
ECMAScript excitement 😉 Congrats to champions @littledan @apaprocki on advancing the TC39 proposal for Decimal numbers to Stage 1. 0.1m + 0.2m === 0.3m // true!
5
57
148
@robpalmer2
Rob Palmer
3 years
ECMAScript excitement 😉 Congrats to @caio_nepo on advancing all three Class Fields proposals to Stage 4 at TC39 🎉 Thanks to champion @littledan and the many **many** contributors who came together to make this happen. It has been an epic joint effort over several years.
4
40
149
@robpalmer2
Rob Palmer
6 months
📜 The Future of TypeScript with @drosenwasser 🔹 Delivered in 2023: Decorators, `using`, IDE delights, TypeChat 🔹 Priority for 2024: Speed 🔹 Biggest change coming: Isolated Declarations for parallel builds 🔹 Prepare for: TS5.5 deprecations 🔹 Most demanded: No build step 👍
@thenewstack
The New Stack
6 months
Daniel Rosenwasser on TypeScript and What’s Ahead in 2024 @lorainelawson @drosenwasser @TypeScript #microsoft
1
7
27
3
21
144
@robpalmer2
Rob Palmer
4 months
Shipping in all major browsers 👍
@wesbos
Wes Bos
4 months
Promise.withResolvers() has hit Stage 4, is in Chrome+FF, and is easy to polyfill. This is really handy for situations where you don't want to pass work into a Promise, but instead pass around the resolve/reject methods. Super handy for callback and stream based APIs
Tweet media one
16
92
671
1
20
143
@robpalmer2
Rob Palmer
1 year
ECMAScript excitement 😉 Congrats to @ljharb on advancing Array Grouping to Stage 3 @TC39 today 🎉 🔶 Object.groupBy() 🔶 Map.groupBy() These are static functions that operate on arrays. The previous method-variant was found to be web-incompatible.
3
30
144
@robpalmer2
Rob Palmer
8 months
tsimp lets Node run TypeScript files directly 👍 💯 Uses the genuine tsc compiler ⚡ Blazing fast due to caching ✅ Includes type-checking 🆕 Works with Node 20.6 --import
Tweet media one
@izs
isaacs
8 months
Here's the conclusion of this thread, a TypeScript --import module loader with the full power of TSC's type checking, and (warm cache) performance as good as or better than "blazing fast" ts compilers written in Rust and Golang (which don't typecheck).
8
31
198
10
19
141
@robpalmer2
Rob Palmer
1 year
@mattpocockuk I always preferred using DTS files to express type-only modules as it felt like it better conveyed intent. However @atcb helpfully explained TypeScript doesn't truly support this usage pattern and so the guidance today is to use TS files.
6
6
142
@robpalmer2
Rob Palmer
9 months
TypeScript 5.3 RC 🎉 🔶 JS: Import Attributes 🔷 Modules: "resolution-mode" for type-only imports 🔷 Checking: Narrowing of boolean comparison, switch(true), instanceof-via-hasInstance 🔷 Checking: Strict `super` access 🔷 Perf: Faster *.ts parsing 🔷 npm: 20% smaller package
@typescript
TypeScript
9 months
The release candidate of TypeScript 5.3 is out - we're looking for feedback to make sure this release is as perfect as possible!
6
98
512
0
15
140
@robpalmer2
Rob Palmer
6 months
TypeScript 5.4 Beta is out 🎉 🔶 JS: Object.groupBy & Map.groupBy 🔷 Checking: Closure bindings narrowed after final assignment 🔷 Checking: "NoInfer" utility type 🔷 Checking: Customizable Import Attributes 🔷 Modules: require() in ESM for Bun 🔷 IDE: Quick fix missing params
@typescript
TypeScript
6 months
TypeScript 5.4 Beta is available to try! This release has lots of type narrowing improvements, the 'NoInfer' type helper, groupBy, better options for bundlers, and more!
8
89
440
1
22
140
@robpalmer2
Rob Palmer
2 years
⚡️ Do you enjoy making JavaScript / C++ systems go fast? I'm looking for a Performance Engineer to help make the @TheTerminal even faster 🔥 Tech stack spans @nodejs , Chromium, @SpiderMonkeyJS , @electronjs with upstream contributions encouraged & supported by the @business
Tweet media one
20
34
133
@robpalmer2
Rob Palmer
4 months
Node excitement 😉 Congrats to @JoyeeCheung at @igalia on landing **experimental** support for require(ESM) in Node 🎉 The intent is to allow more CommonJS packages to migrate to ESM without breaking compatibility. This should help eliminate the [ERR_REQUIRE_ESM] error 👍
@JoyeeCheung
Joyee Cheung
4 months
Landed experimental support for synchronous require(esm) to load ES modules without top-level await 🥳
28
152
606
3
26
136
@robpalmer2
Rob Palmer
5 months
TypeScript 5.4 RC is out 🎉 🔶 JS: Object.groupBy & Map.groupBy 🔷 Checking: Closure bindings narrowed after final assignment 🔷 Checking: "NoInfer" utility type 🔷 Checking: Customizable Import Attributes 🔷 Modules: require() in ESM for Bun 🔷 IDE: Quick fix missing params
@typescript
TypeScript
5 months
The release candidate of TypeScript 5.4 is now ready to download! Read up on what's coming in TypeScript 5.4 👀
8
116
573
3
27
135
@robpalmer2
Rob Palmer
3 years
Lots of goodness in TypeScript 4.5 👍 🔥 Node ESM (type: module + package imports/exports + .mjs/.cjs) 🔥 `type` keyword on import specifiers 🔥 Private Field Presence Checks thanks to @acutmore 🔥 Import Assertions for importing JSON modules 🔥 `Awaited` type
@typescript
TypeScript
3 years
Happy birthday to us! 🎂 What better way to celebrate 9 years of being public than a beta release? Try out TypeScript 4.5 beta! Now bringing great new features including better support for ES modules in Node.js.
19
266
1K
3
34
133
@robpalmer2
Rob Palmer
6 months
ECMAScript excitement 😉 Safari 17.4 brings: 🔶 Object.groupBy & Map.groupBy 🔶 Promise.withResolvers 🔶 ArrayBuffer methods: detached(), transfer(), transferToFixedLength() 🔶 Intl.DateTimeFormat supports TimeZoneOffset format
@jensimmons
Jen Simmons
6 months
Safari 17.4 beta is out ! So much in it, including: - @​scope - align-content on blocks - vertical form controls - <hr> inside <select> - <input type="checkbox" switch> - VP8/VP9 & WebM on iOS & iPadOS - Vorbis audio codec on iOS - Fullscreen API on iOS
37
77
532
1
20
134