Joyee Cheung

Joyee Cheung

@joyeecheung.bsky.social

She/her. I contribute to Node.js and V8. I post about museums, food, plants and other stuff too. https://github.com/joyeecheung

2,550 Followers 311 Following 750 Posts Joined Nov 2024
4 days ago

ECMAScript EXTRA-SPECIAL excitement 😉

🚨🚨🚨 IT'S ABOUT TIME! 🚨🚨🚨

Congrats to @ptomato.name on advancing Temporal to Stage 4 at @tc39.es today 🎉

Temporal is the replacement for the JavaScript Date API 👍

112 30 7 8
4 days ago
Preview
Node.js — Evolving the Node.js Release Schedule Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.

Node.js is moving to one major release per year starting with Node 27! 🚀

✅ Simpler: Every release becomes LTS.
✅ Predictable: Version numbers now align with the year.
✅ New: A 6-month Alpha channel for early testing.

https://bit.ly/4rnosLg

232 60 4 6
4 days ago

This will work with "useCodeCache": true in the next semver-minor release

github.com/nodejs/node/...

11 1 0 0
3 weeks ago

(Although if they can get us singing robots the next time, that will surely save us from the torture from all these actors with zero singing skills lip-syncing to their lifeless recordings)

0 0 0 0
3 weeks ago

The nerd in me: this is cool
The Chinese in me: Nice try. Robot dancing doesn’t save how boring the Spring Festival Gala has become.

1 0 1 0
3 weeks ago
Preview
sea: support ESM entry point in SEA by joyeecheung · Pull Request #61813 · nodejs/node This uses the new StartExecutionCallbackWithModule embedder API added in #61548 to support ESM entrypoint in SEA via a new configuration field "mainFormat". The behavior currently aligns ...

Landed initial support for ESM in Node.js SEA: github.com/nodejs/node/...

Similar to CJS entrypoints, it only supports importing builtins, so generally require bundling. @nodeland.dev is working on support for VFS in SEA that will unlock loading other modules within SEA github.com/nodejs/node/...

46 9 2 4
1 month ago
2026 Web Engines Hackfest Web Platform community event for people working on the different engines (Chromium/Blink/V8, Safari/WebKit/JSC, Firefox/Gecko/SpiderMonkey, Servo, Ladybird), on the testing side (WPT, Test262), on spe...

(Plug: or you can come to my town webengineshackfest.org )

4 0 2 0
1 month ago

Sounds like a cool idea, though I am more in the camp of “a town reachable by train” than “a castle that needs to be reached by car” ;)

8 0 2 0
1 month ago
I got thanked with good karma on GitHub.

Failed catastrophically at the “don’t look at GitHub” weekend challenge.

But on the bright side…

20 0 1 0
1 month ago
Preview
src: initial support for ESM in embedder API by joyeecheung · Pull Request #61548 · nodejs/node This patch extends LoadEnvironment to support loading ES modules, and adds the following new types: enum class ModuleFormat : uint8_t { kCommonJS, kModule, }; // Data for specifying an entry p...

Started iteration on ESM support in the Node.js embedder API with new overloads that likely will be less prone to ABI breakages as more features are added..
github.com/nodejs/node/...

Initial support has released in 25.6.0
nodejs.org/en/blog/rele...

9 3 0 0
1 month ago

Or you need to step up your game in Spanish 😉 febrile -> febril

3 0 2 0
1 month ago
Gerrit Code Review

This was fun to hack on - a gdb unwinder for V8 JIT-compiled frames on x64.

chromium-review.googlesource.com/c/v8/v8/+/75...

Also interesting to learn this trick from the gdb source: caller's rsp before call = callee's rbp + 16, and this seems to be a conventional CFA in debuggers

9 0 1 0
1 month ago

I think I figured out what's going on. Here is another blog post about tinkering with Node.js Core on ARM64 Windows (and tips about reducing the wait time on Windows) joyeecheung.github.io/blog/2026/01...

8 1 0 0
1 month ago

New blog post on the journey of the new --build-sea flag and how SEA injection works

joyeecheung.github.io/blog/2026/01...

36 12 2 0
1 month ago

This just landed! Thanks @addaleax.bsky.social and @legendecas.bsky.social for the reviews! It will be out in the next semver-minor release of 25, and likely backportable to older LTS - the new workflow is a compatible improvement to the existing postject-based SEA building workflows from v18.x.

19 6 0 1
1 month ago

To be fair I think it doesn’t need to be me, it just needs a contributor with enough time and energy and hopefully who can do it at work hours (I did, thanks to sponsorship by Bloomberg). The slow progress of Node.js development largely comes from lack of contributors, especially funded ones

7 0 1 0
1 month ago

Following the naming scheme that Elon Musk also used to name his own children already feels like biting the bait, when that platform didn’t even get built as X originally in the first place 😅

3 0 1 0
1 month ago

Good read. A submission to the European Commission's call for evidence on Towards European Open Digital Ecosystems (importance of OSS for EU tech sovereignty, security and competitiveness). It ends with:
> If you work in OSS, consider adding your voice. The feedback period ends February 3, 2026.

28 14 1 1
1 month ago

I think with the direction this PR is going, there's supposedly a way out of this: instead of relying on system APIs to load the addons (e.g. with memfd_create + dlopen on Linux, but not available on Windows), we can build custom loaders and map the libraries ourselves, or at least fallback to that

1 0 0 0
1 month ago

Now is the time to realize I have been compiling with host arch = x64 the whole time because for whatever reason I have been using x64 python the whole time to run the configure script 😅

5 0 0 1
1 month ago

They are mostly already on v24, the changes are primarily just flipping the status in the documentation.

0 0 1 0
1 month ago
Preview
Tracking issue: HTTP_PROXY/HTTPS_PROXY/NO_PROXY support in Node.js · Issue #57872 · nodejs/node Support https/http proxies via HTTP_PROXY/HTTPS_PROXY/NO_PROXY in fetch() (behind NODE_USE_ENV_PROXY) Initial support #57165 align with curl: do not tunnel for http proxy nodejs/undici#4083 align w...

Also @aditeigh.bsky.social and I are looking into what else need to be done to enable built-in http proxy support and custom/system CA support by default, hopefully in 26 and possibly as semver-major. Tracking issues:

github.com/nodejs/node/...
github.com/nodejs/node/...

4 1 0 0
1 month ago
Memory leak regression testing with V8/Node.js, part 3 - heap iteration-based testing In the previous blog post, I described the heap snapshot trick as an “abuse” of the heap snapshot API, because heap snapshots are not designed to interact with the finalizers run in the heap. But the

v8.queryObjects(): I wrote about the motivation of this API for more reliable memory leak testing in joyeecheung.github.io/blog/2024/03...

--heapsnapshot-near-heap-limit: see documentation here: nodejs.org/api/cli.html...

5 0 1 0
1 month ago
Preview
Node.js startup snapshots by Joyee Cheung The video discusses the Startup Snapshot initiative in Node.js, which aims to improve startup performance by integrating features such as lazy loading, precompiling internal modules, and using V8 Star...

Startup snapshot APIs: I gave a talk about this a few years ago at Node Congress: gitnation.com/contents/nod...

4 0 1 0
1 month ago
Optimizing hashing performance · Issue #136 · nodejs/performance What is the problem this feature will solve? Making the hash functions significantly faster. What is the feature you are proposing to solve the problem? I'm not sure what the best option for this i...

There are several features that have been stable de facto, but nobody remembered to send a PR to bump the stability index 😅 I marked them in bulk while I was at it.

crypto.hash(): a faster alternative to crypto.createHash() for one-shot hashing. See github.com/nodejs/perfo...

5 0 1 0
1 month ago
YouTube
JSConf JP 2025|Joyee Cheung|Evolving the Node.js module loader YouTube video by jsconfjp

Then there are also the module compile cache going stable and module.registerHooks() becoming release candidate. I gave a talk at JSConf Japan recently covering the evolution of these features: www.youtube.com/watch?v=MYVn...

4 1 1 0
1 month ago
Preview
require(esm) in Node.js: from experiment to stability More than a year ago, I set out to revive require(esm) in Node.js and landed an experimental implementation. After a lot of iteration and battle-testing, require(esm) is now unflagged across all suppo

First and likely the most anticipated, marking require(esm) as stable. I wrote a blog post about the journey of it going from experiment to stability: joyeecheung.github.io/blog/2025/12...

7 1 2 0
1 month ago

This release contains a bunch of PRs I recently submitted to mark features I contributed to as stable/release candidate. Here is a thread about them 🧵:

53 8 2 1
2 months ago
Single executable applications | Node.js v25.3.0 Documentation

I believe that’s one of the several projects that inspired nodejs.org/api/single-e... (note that this feature has existed since v18, the PR merely moves the injection process into core). The difference is that SEA building does not require installing compilers, it’s just binary surgery

1 0 1 0
2 months ago
Post image

This is a mitigation, not a guarantee.
Stack space exhaustion recovery is NOT specified by ECMAScript. V8 does it on a best-effort basis.

If the recursion depth can be controlled by attackers, explicitly limit the depth.

This is what the React and Next.js teams fixed in vercel.com/kb/bulletin/....

3 1 1 0