Sign in

Joyee Cheung

@joyeecheung.bsky.social
2.7K followers 322 following 847 posts

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

PostsRepliesMedia
Joyee Cheung @joyeecheung.bsky.social · 06/10/2026
We are currently disabling metagen, it's just a matter of where the source of truth is for the time being, but when V8 stablizes it and the C++ part becomes the source of truth we will still need libclang issues.chromium.org/issues/53134...
issues.chromium.org
Chromium
100
Joyee Cheung @joyeecheung.bsky.social · 06/10/2026
Working on upgrading V8 in Node.js to 15.5 and started Jenkins for the first time...and only the linter failed
static.klipy.com
Surprised Cat Says What?!
ALT: Surprised Cat Says What?!
1210
Joyee Cheung @joyeecheung.bsky.social · 30/09/2026
The cheese level is just out of this world
010
Joyee Cheung @joyeecheung.bsky.social · 30/09/2026
Food at @nodeconf.eu in Bologna is just another level 🥹
2141
Joyee Cheung @joyeecheung.bsky.social · 28/09/2026
Yes!
020
Joyee Cheung @joyeecheung.bsky.social · 28/09/2026
Managed to get my travel document back in time to make it to Bologna today…and sure enough they now check passports and visas even for flights from Spain 🤨
390
Joyee Cheung @joyeecheung.bsky.social · 21/09/2026
Another thing I have been working on is to get it to be able to attach to a running process, log something, then detach when some specified condition is met. Should help with containing the output volume too, and avoid the restart/help hit difficult reproductions
010
Joyee Cheung @joyeecheung.bsky.social · 07/09/2026
..or maybe through git blame, but the original spec is long and changes get merged from proposals wholesale. Another thing is that C++ spec anchors name a concept so it’s stable, whereas in ecma262 they are often named after some method used at the time and are less stable throughout refactoring
000
Joyee Cheung @joyeecheung.bsky.social · 07/09/2026
Also for looking into how the C++ spec has evolved to reference a CWG issue, I could look it up in www.open-std.org/jtc1/sc22/wg... once I obtain the anchor. I am not sure how to do that for ecma262, maybe search in GitHub issues or across organization but they aren’t usually indexed with an anchor
open-std.org
C++ Standard Core Language Issue Index by Section
120
Joyee Cheung @joyeecheung.bsky.social · 07/09/2026
..whereas the ecma262 multipage is bigger, not paged by an easy anchor (sec-source-text-module-record-execute-module) and the anchor-as-id in the page doesn’t work in the web version actually
100
Joyee Cheung @joyeecheung.bsky.social · 07/09/2026
Yes that’s what I also used, but for example compare: tc39.es/ecma262/mult... And eel.is/c%2B%2Bdraft... The C++ multipage spec has smaller pages (therefore easier to consume and navigate), anchored directly by expr.static.cast and using the paragraph number it’s easy to locate.
tc39.es
ECMAScript® 2027 Language Specification
Introduction This Ecma Standard defines the ECMAScript 2027 Language. It is the eighteenth edition of the ECMAScript Language Specification. ECMAScript is based on several originating technologies, ...
100
Joyee Cheung @joyeecheung.bsky.social · 05/09/2026
Observations: - It was easier to find multipage spec and check resolution history with the C++ spec anchor compared to ecma262 - pre-commit CI coverage of these high-impact C++ compiler projects is really small when compared to Node.js/V8 - There is a visible test262-shaped void in the C++ world
120
Joyee Cheung @joyeecheung.bsky.social · 05/09/2026
There were more docs to update when changing semantics in Clang, had to educate myself with the release process before finishing the commit Clang commit github.com/llvm/llvm-pr...
github.com
[Clang] Fix conversion from floats to bool-backed enums per CWG1094 (… · llvm/llvm-project@44629e6
…#211172) After CWG 1094, `[expr.static.cast]p8` has been updated to include: > A value of floating-point type can also be explicitly converted to an > enumeration type. The resulting value...
100
Joyee Cheung @joyeecheung.bsky.social · 05/09/2026
There was a bit of a shock for me when navigating in the GCC codebase and the git blame annotation in my editor said the code was as old as myself. GCC commit gcc.gnu.org/cgit/gcc/com...
gcc.gnu.org
Making sure you're not a bot!
130
Joyee Cheung @joyeecheung.bsky.social · 05/09/2026
Landed fixes in GCC & Clang for [expr.static.cast]/8 wrong-code bugs when investigating a V8 bug related to it. Previously: enum Flag : bool { kNo, kYes }; static_cast<Flag>(2); // kNo in GCC ❌, kYes in Clang ✅ static_cast<Flag>(0.5); // kNo in GCC and Clang ❌
192
Joyee Cheung @joyeecheung.bsky.social · 04/09/2026
Gem of my trip to Astorga: Palacio de Gaudí! Beautiful inside out and there is a very interesting epigraph museum in the basement 😇 Cathedral is great too, but if you put it next to Gaudí…😬
Cathedral of AstorgaPalacio de Gaudí Chapel in Palacio de Gaudí, very stunning Inscription from a 3rd Roman procurator of Hispania Citerior fulfilling his vow to a mix of Greco-Egyptian Serapis + Egyptian Isis + Greek Kore + Greco-Roman/Celtic Apollo Grannus + Roman Mars, and he has two other inscriptions thanking Roman official gods and Nemeses of Smyrna (in Greek). That’s a lot of gods 🤣
0100
Joyee Cheung @joyeecheung.bsky.social · 12/08/2026
Weather was not particularly nice but I did see some of the eclipse :)
Phase of the eclipsePhase of the eclipsePhase of the eclipse
0190
Joyee Cheung @joyeecheung.bsky.social · 09/08/2026
You are welcomed 😎
010
Joyee Cheung @joyeecheung.bsky.social · 08/08/2026
Tea lattes without sugar! My favourites only second to milk tea with whipped cheese cream topping 🥹
120
Joyee Cheung @joyeecheung.bsky.social · 08/08/2026
Added some new commands to the GDB & LLDB plugin for V8.. `v8 source`: shows the JS source of the selected frame `v8 isolate`: find the isolate address in the current thread, works from the coredump too (implementing that in LLDB was quite a bit of challenge!)
Screenshot showing v8 isolate and v8 source
0153
Joyee Cheung @joyeecheung.bsky.social · 02/08/2026
Another stop at Vitoria-Gasteiz, now I have been to all provinces in the Basque Community, maybe the next time I should go to Pamplona 🤔 The museums in Vitoria all have free entry!
Map of Roman Álava, the milestone was made during the 3rd century crisis and was honouring  PostumusCiudad con sol and Ciudad con lluvia by the local impressionist Fernando de Amárica, showing la Plaza de la Virgen Blanca in sun and in rainArmours in Arabako Arma Museoa La plaza de la virgen blanca and San Miguel
000
Joyee Cheung @joyeecheung.bsky.social · 29/07/2026
Museo de Burgos: ⭐️⭐️⭐️⭐️ Museo de la Evolución Humana: ⭐️⭐️⭐️⭐️⭐️
Statue of the Egyptian goddess Isis dated 2nd century AD from the deeply inland Clunia in Museo de BurgosEcosystem models of Sierra de Atapuerca in four different periods as the roof of different exhibition rooms in Museo de la Evolución Humana, very interesting designOldest known (pre-)Neanderthals fossils from Sima de los Huesos and an handaxe without wear and tear, possibly the earliest signs of burial ritual?Fossils of Homo Antecessor and probable signs of cannibalism
100
Joyee Cheung @joyeecheung.bsky.social · 27/07/2026
My guess is they are talking about using trap handlers to react to OOB access instead of inserting bound checks in compiled code, V8 implemented this for WASM many years ago docs.google.com/document/u/0...
docs.google.com
WebAssembly Out of Bounds Trap Handling
WebAssembly Out of Bounds Trap Handling V8 currently enforces memory safety in WebAssembly by using explicit bounds checks. This has several downsides: The compiler generates extra nodes for each memo...
110
Joyee Cheung @joyeecheung.bsky.social · 27/07/2026
There wasn’t a heatwave in the forecast when I planned my vacation in Burgos but there will be one soon according to the current forecast 😅 Anyways it’s fun to walk around here and see the tomb of El Cid, who was the first Spanish figure I knew (from playing AOE2 when I was a very small kid)!
The Burgos cathedralAn impressive dome in the Burgos cathedralTomb of El Cid and Jimena Díaz, in the Burgos CathedralThe place where according to legend, El Cid forced Alfonso VI to swear he didn’t assassinate Sancho II - a story that was referenced in AOE2
1100
Joyee Cheung @joyeecheung.bsky.social · 19/07/2026
And TBH I think the choice between “exposed as part of the globals through process” and “exposed as part of a node:foo builtin” has always been arbitrary (since Node.js reviews are done by volunteers and tend to be arbitrary)
040
Joyee Cheung @joyeecheung.bsky.social · 19/07/2026
The need for a free standing API to get to the builtins has existed for a while. Historically process had been that freestanding namespace for many builtins chosen to be exposed globally similar to the `Deno`/`Bun` global object, just for compatibility reasons it’s not a global object called `Node`
140
Joyee Cheung @joyeecheung.bsky.social · 19/07/2026
There were some discussions about next-gen HTTP server in Node.js but it seems there aren’t enough volunteers with the capacity to bring the brainstorms to reality github.com/nodejs/http-...
github.com
GitHub - nodejs/http-next: Repository for exploratory work related to http
Repository for exploratory work related to http. Contribute to nodejs/http-next development by creating an account on GitHub.
150
Joyee Cheung @joyeecheung.bsky.social · 16/07/2026
I haven't worn heels in ages and today I was on heels for a whole day to look formal 💪 (OK they are wedges. But still!)
060
Joyee Cheung @joyeecheung.bsky.social · 14/07/2026
TIL `git history split`!! 😍 lalitm.com/post/git-his...
lalitm.com
The git history command deserves more attention
Working with lots of changes in parallel on git can be painful. You end up juggling branches and commits, and running scary rebase -i commands that can leave your tree in a half-broken state if you so...
4446
Joyee Cheung @joyeecheung.bsky.social · 10/07/2026
Anyone using --use-largepages in real-world deployments? Just opened an issue about possibly deprecating it (if nobody is using it) to reduce the maintenance churn github.com/nodejs/node/...
github.com
Future of `--use-largepages=on` · Issue #64408 · nodejs/node
This was added back in 2018, some background can be found in this issue #16198 - from what I can tell we opted into a user-land relocation to work around the fact that for most kernels in the wild,...
063
Joyee Cheung @joyeecheung.bsky.social · 08/07/2026
Made the new debug helper plugins work for Node.js + bleeding edge V8 🌟 Verified it works in LLDB (Linux, macOS) & GDB (Linux), both in live and coredump debugging Going to backport the patches to Node.js when the object inspection is more polished and it stablizes bit more..
Using the plugin, bt in gdb shows the JS source info of JIT-compiled frames, mostly from the CJS loader (without plugin gdb only shows ???)In the plugin's `v8 inspect` command, it shows the this argument of the first frame is a function named "Module" (the CJS loader class i.e. require('module').Module)
0113
Joyee Cheung @joyeecheung.bsky.social · 07/07/2026
PR: github.com/nodejs/node/... & github.com/nodejs/node/... This will be released in the upcoming v26.5.0 github.com/nodejs/node/...
github.com
module: print required top-level await without side effects by joyeecheung · Pull Request #64154 · nodejs/node
This paves the way for enabling --experimental-print-required-tla by default. Previously in order to collect the locations of the required TLA, we rely on v8::Module::GetStalledTopLevelAwaitMessage...
050
Joyee Cheung @joyeecheung.bsky.social · 07/07/2026
Landed a few improvements to the error reporting for require(esm) with top-level await (behind --experimental-print-required-tla for now): - No longer need to run the code to collect the TLA locations, so it can be enabled by default soon - Added require stack and location metadata to the error
Before: extra noisy arrow pointing to internals, no require stack, needs to run the code to find the top-level await location
After: no more noisy arrows, added require stacks to the output, finds location without running the codeNew ERR_REQUIRE_ASYNC_MODULE includes error.requireStack and error.topLevelAwaitLocations metadata properties
1378
Joyee Cheung @joyeecheung.bsky.social · 02/07/2026
Is the sponsorship the reason why it has such high-budget production like a color picture (!) and a QR code?
100
Joyee Cheung @joyeecheung.bsky.social · 02/07/2026
I think service-wise Chinese healthcare is worse (e.g. staff being rude, you only get maybe 2 minutes with the doctor, and it’s very common for other patients to be in the same room with you when you describe symptoms or getting checked even at gynaecologists), but at least it’s very efficient
010
Joyee Cheung @joyeecheung.bsky.social · 01/07/2026
According to the doctor everything is fine 😆 after serious consideration I decided to have some instant noodles and stay up late a bit before going to bed..
030
Joyee Cheung @joyeecheung.bsky.social · 01/07/2026
Somehow I find myself starving here again, this time sent by an ambulance to the emergency (two very nice people called the ambulance when they saw me in pain after spraining my ankle). Now that I’ve waited past 11pm, maybe I should just go to bed (if I can do that today) on an empty stomach..
5130
Reposted by Joyee Cheung
Node.js @nodejs.org · 01/07/2026
New to open source, or wondering how to get your first Node.js contribution landed and released? Check out our new first-time contributors guide, with practical tips and answers to FAQs about working with our volunteer-driven model. bit.ly/4avNtP2
github.com
node/doc/contributing/first-contributions.md at main · nodejs/node
Node.js JavaScript runtime ✨🐢🚀✨. Contribute to nodejs/node development by creating an account on GitHub.
1377
Joyee Cheung @joyeecheung.bsky.social · 28/06/2026
Amazon: your external monitor will be delivered next Wednesday Me: okay Amazon on Saturday: hey are you home, your external monitor is here Me: oh no I am not, please come back on Monday Amazon on Sunday: hey are you home, your external monitor is here Me: you deliver on Sunday?!
0150
Joyee Cheung @joyeecheung.bsky.social · 24/06/2026
Yeah I think it can depend a lot on whether you work more often during the day and allow natural light in your workplace, I definitely feel that it's less necessary after moving to Spain when the sun doesn't go down in summer until 10pm...
020
Joyee Cheung @joyeecheung.bsky.social · 24/06/2026
A while back when I was sharing my screen my sister asked: why do you programmers use dark backgrounds? Last week I was projecting my terminal/editor to my team and to make it easier to see on the projector screen I switched to light themes. Now I start to wonder why I even use dark themes too 🧐
7240
Joyee Cheung @joyeecheung.bsky.social · 23/06/2026
Had a great Igalia week last week, @lukel97.bsky.social, Cathie and I fed other Igalians some Zongzi, told them the story of the Dragon Boat Festival and taught them how to write Chinese words related to the festival! (Forgot to take a picture of our table but I have a picture of preps ^^)
Preparing for the Chinese writing activity
1171
Joyee Cheung @joyeecheung.bsky.social · 15/06/2026
Great first day at the Web Engine Hackfest!
A new streams API? by James M SnellDecoupling Extensions from Chrome: The Journey to a Modular Extensions Layer by Miyoung Shin and Lorenzo TilveThe EU Cyber Resilience Act: what is it, and how does it affect web browsers? by Aki Rose Braun, Daniel Ari Ehrenberg Goldbergnpmx: a fast, modern browser for the npm registry by Daniel Roe, Matias Leandro Capeletto (patak)
1181
Joyee Cheung @joyeecheung.bsky.social · 15/06/2026
👋
040
Joyee Cheung @joyeecheung.bsky.social · 13/06/2026
Amsterdam sure has a lot of great museums! Rijksmuseum was absolutely my favorite, though I only had the time to go through two floors…
Dowry lottery for Jewish brides from 17th century Amsterdam in the Jewish museumReconstructed studio of Rembrandt in the Rembrandt house museum Almond Blossom in the Van Gogh museum, it was a gift to Van brother and sister-in-law to  celebrate Van Gogh’s new born nephew, painted while he was in a psychiatric asylum fighting with mental illness.Romanticised model of a Javanese market made as souvenirs for Europeans in the 19th century, from the Rijksmuseum
050
Joyee Cheung @joyeecheung.bsky.social · 13/06/2026
Very nice to meet you too! Safe travels!
010
Joyee Cheung @joyeecheung.bsky.social · 12/06/2026
Yes, I think so
010
Joyee Cheung @joyeecheung.bsky.social · 11/06/2026
Today I gave a talk JSNation about the life cycle of ESM in Node.js, how it differs in other environments and the new features that will affect these stages. Slides: github.com/joyeecheung/...
github.com
13812
Reposted by Joyee Cheung
patak @patak.cat · 08/06/2026
I re-watched last year Joyee's @webengineshackfest.org talk. I can't recommend it enough. There are many lessons on the require(esm) story. If you want adoption, meet developers where they are, build bridges for them to move to the future you want.
m.youtube.com
Joyee Cheung - Bridging CommonJS and ESM in Node.js
YouTube video by Web Engines Hackfest
0245
Joyee Cheung @joyeecheung.bsky.social · 06/06/2026
Moving along with the debug_helper-based LLDB & GDB V8 plugins...this now supports basic object inspection! It was fun to write tests that deliberately corrupt the memory and make sure the plugin falls back gracefully, something I've never tried before when maintaining other plugins :D
A screenshot showing the receiver (this) being displayed when doing bt in lldb using the plugin, and using v8 inspect to print JS objects
0100