Am I paranoid or not, is this an Italian gesture?
Posts by Chengzhong Wu
We are happy to announce the NodeConf EU is returning in 2026. This time, things will be a little different. While the Irish countryside made for a beauttiful backdrop for getting the community together to talk about Node.js, there have always been a number of logistical challenges to hosting there;
People seem to be underestimating how powerful 2 can be. You can make stupid choices you wouldn't normally make in a panic. My ex-roommate once almost got scammed but luckily she still had some wits left in that panic to consult me. It's useful to have another brain around when you are in a panic.
Code example showing the usage of Temporal.ZoneddateTime ```js // London DST starts: 2026-03-29 01:00 -> 02:00 const zdt = Temporal.ZonedDateTime.from( "2026-03-29T00:30:00+00:00[Europe/London]", ); console.log(zdt.toString()); // → "2026-03-29T00:30:00+00:00[Europe/London]" const plus1h = zdt.add({ hours: 1 }); console.log(plus1h.toString()); // "2026-03-29T02:30:00+01:00[Europe/London]" (01:30 doesn't exist) ```
Temporal is now Stage 4 at TC39 🎂🎂🎂
Thanks to all the other champions of JavaScript's new date-time API. It has been a wild ride over many years!
I wrote a blog post explaining how we got here 📜
bloomberg.github.io/js-blog/post...
A JSON file representing a source map. The code contains: { "version": 3, // Always the integer 3 "file": "out.js", // Optional: name of the generated file "sourceRoot": "", // Optional: prefix prepended to each entry in "sources" "sources": ["foo.js", "bar.js"], // Required: list of original source URLs/paths (or null) "sourcesContent": [null, null], // Optional: inlined source text, aligned with "sources" "names": ["src", "maps"], // Optional: symbol names referenced by "mappings" "mappings": "A,AAAB;;ABCDE", // Required: encoded mapping data (base64-VLQ deltas) "ignoreList": [0] // Optional: indexes into "sources" considered "third-party" }
Source maps are a vital part of modern web development, but the lack of a standard made it impossible for us to add new features or improve the debugging experience.
This is the story of how we standardized source maps and how we continue to ship features through standards 📜
🧵
📮 In the first feature-length article on the Bloomberg JS Blog...
@jonkuperman.com explains:
🗺️ what are source maps
✅ how he worked with others to standardize them in TC39
✨ the new debugging features this unlocks
Yes
Now I know the Mail app uses an uint64 to show message counts.
Apple Mail
Node.js wouldn't be where it is without the LGBTQ+ community ...
As in literally. Many of the most important technical contributions have come from LGBTQ+ contributors.
We haven't always done right by them but there's no doubt they are loved.
nodejs.org/en/blog/comm...
Welcome to London! 👋
Joyee Cheung talks about CommonJS and ESM in Node.js at the Web Engines Hackfest 2025 @joyeecheung.bsky.social @nodejs.org www.youtube.com/watch?v=YRue...
In this talk, I tell the story of how we're leveraging the Rust programming language to accelerate the Temporal implementation in V8. 🦀🦖
A warm welcome to our newest Node.js TSC member:
Filip Skokan!
Happy to see you onboard!
github.com/nodejs/node/...
ECMAScript excitement 😉
Firefox 139 ships the TC39 Stage 3 Temporal proposal 🎉
It's about time.
Congrats to those who worked on the implementation including Andre Bargull & Dan Minor 👍
developer.mozilla.org/en-US/docs/M...
Literally, any value can be throw in JavaScript, even `undefined`, and can be used as the value of `error.cause`. So the design of `error.cause` was lenient about such cases. In general, I think it is more like a question of practice that "would you throw a structured data in JavaScript"?
Screenshot of the talks section on the website: https://webengineshackfest.org/#talks
This year the Web Engines Hackfest will have 9 talks live streamed in YouTube on Monday 2nd June starting at 10:30 CEST. 🎥
webengineshackfest.org#talks
ECMAScript Excitement 🎉
This week, at its 107th meeting, TC39 advanced these proposals:
2️⃣.7️⃣ Non-extensible Applies to Private
2️⃣.7️⃣ Upsert
2️⃣ export defer
1️⃣ Compare Strings by Codepoint
1️⃣ Composite Keys
1️⃣ Disposable AsyncContext
1️⃣ Enums
1️⃣ Object.propertyCount
and withdrew Records & Tuples
I didn't have the domain knowledge to fully understand that discussion, but it was about some Intl/Temporal APIs that are difficult to implement because some astral tables don't go far enough in the future or in the past.
We had a lot of productive discussions at the Node.js collaboration summit in Paris. Huge thanks to our host @datadoghq.com!
Find the notes in https://github.com/openjs-foundation/summit/issues/433 - we'll publish the recordings and a trip report soon!