Sign in

Joyee Cheung

@joyeecheung.bsky.social
2.7K followers 322 following 845 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 · 30/09/2026
Food at @nodeconf.eu in Bologna is just another level 🥹
2141
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 · 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 · 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 · 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 · 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
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 · 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
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 · 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
Joyee Cheung @joyeecheung.bsky.social · 05/06/2026
Arriving in Amsterdam~
Picture of the canal
3330
Joyee Cheung @joyeecheung.bsky.social · 28/05/2026
I've been mostly working on remote servers as my "sandbox" via vscode remote ssh for a while, as local containers don't offer the build power I need. Two tricks that made it easier for me:
2181
Joyee Cheung @joyeecheung.bsky.social · 28/05/2026
Taking minutes at 6am and neither my brain, nor my ear, nor my hands are working 🫠
0110
Reposted by Joyee Cheung
Phil Eaton @eatonphil.bsky.social · 20/05/2026
I chatted with @duswnchl.bsky.social , based in South Korea, who works at the open-source consultancy, and worker-owned cooperative, @igalia.com. We covered her experience over the last 15 years working on WebKit and Chromium. There is no paywall; give it a read! theconsensus.dev/p/2026/05/20...
12710
Joyee Cheung @joyeecheung.bsky.social · 21/05/2026
Sometimes I forget how inefficient public healthcare is in Spain that I make an appointment right before lunch time, then wait for two hours without seeing the doctor and looks like it might take another two hours. Maybe it’s better to forget about the doctor and feed my immune system instead..
340
Reposted by Joyee Cheung
Node.js @nodejs.org · 19/05/2026
Do you use Node.js on Alpine Linux? We are looking for volunteers to help us bring Alpine to "Tier 2" where it would be built and released through the normal CI process. If you can help, let us know: bit.ly/4v03NiW
bit.ly
Promote Alpine Linux out of experimental to be a tier 2 platform · Issue #62764 · nodejs/node
What is the problem this feature will solve? We currently have a significant number of users of Alpine Linux (Linux using musl as its libc implementation). For the direct tarballs from the unoffici...
13611
Joyee Cheung @joyeecheung.bsky.social · 18/05/2026
Lately I've found myself repeating the same explanations to different people about how Node.js and V8 build/test/stay in sync with each other. To reduce the parroting, here's a blog post about the workflows, challenges I see, and some hands-on tips joyeecheung.github.io/blog/2026/05...
joyeecheung.github.io
How Node.js and V8 keep each other working - workflows, challenges and tips
Recently I’ve found myself repeating the same explanations to different people about how to test a V8 patch in Node.js, how to patch the Node.js fork run in V8’s integration CI, or how to get these pa
03311
Joyee Cheung @joyeecheung.bsky.social · 13/05/2026
Walked into the kitchen to finish cooking with the marinated ingredients, found someone sent by the city council to repair the building facade standing right outside my window on a scaffold, looking at my messy counter 😅
020
Reposted by Joyee Cheung
Antoine du Hamel @aduh95.bsky.social · 07/05/2026
Node.js 26.1.0 is out, with a new `node:ffi` module, `crypto.randomUUIDv7()`, and many more features and bug fixes. Full changelog and download links at nodejs.org/en/blog/rele...
nodejs.org
Node.js — Node.js 26.1.0 (Current)
Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.
0379
Joyee Cheung @joyeecheung.bsky.social · 07/05/2026
Landed a set of LLDB & GDB plugins in V8 to help inspect JS states in a live process/coredump together with native states ✨ The initial implementation just supports JS stack trace annotations in bt; support for object inspection is coming up! chromium.googlesource.com/v8/v8.git/+/...
Without the plugin, debugging a coredump from a release build of V8 shows no JS-level information in the stack trace; with the plugin the stack trace is annotated with JS source positions of the functions on the frames.
2232
Joyee Cheung @joyeecheung.bsky.social · 05/05/2026
For those who build or redistribute Node.js - as the V8 implementation of temporal depends on temporal_rs, this also means starting from v26 building Node.js fully requires a Rust toolchain. See github.com/nodejs/node/...
github.com
1256
Reposted by Joyee Cheung
Rafael Gonzaga | Node.js @rafaelgss.dev · 05/05/2026
Node.js v26.0.0 is out 💚 Temporal API enabled by default, V8 14.6, Undici 8, and key deprecations as we keep modernizing the platform. Check it out nodejs.org/en/blog/rele...
nodejs.org
Node.js — Node.js 26.0.0 (Current)
Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.
112735
Reposted by Joyee Cheung
Node.js @nodejs.org · 04/05/2026
The 2026 Node.js London Collaboration Summit trip report is officially live! 🚀 We gathered 50+ contributors to discuss the biggest technical shifts coming to the runtime. Big thanks to Bloomberg for hosting! 🇬🇧 Check out the full recap and recordings here: bit.ly/3OHPLmz
bit.ly
Node.js — Trip report: Node.js collaboration summit (2026 London)
Node.js® is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.
02110
Joyee Cheung @joyeecheung.bsky.social · 01/05/2026
Every time my Internet seems off
Me asking Gemini if there is a football game in spain right now
1100
Reposted by Joyee Cheung
Jesse Alama @jessealama.net · 30/04/2026
I'm happy to announce Thales, a TypeScript compiler and JS engine in Lean. Thales compiles a subset of TypeScript to Lean via a shallow embedding. Thales is a bridge for TS programmers into Lean's program verification toolset. Check out github.com/jessealama/t... to get started.
github.com
74712
Reposted by Joyee Cheung
Rob Palmer @robpalmer.bsky.social · 24/04/2026
Node excitement 😉 Congrats to @targos.dev on landing the V8 14.6 upgrade in upstream Node, heading for Node v26 which will be released very soon 🎉 This is the first version of V8 in Node to support unflagged Temporal 👍 github.com/nodejs/node/...
github.com
deps: update V8 to 14.6 by targos · Pull Request #61898 · nodejs/node
PR for previous version: #61681
77913
Joyee Cheung @joyeecheung.bsky.social · 17/04/2026
Had a blast in London! Thanks @tchetwin.bsky.social, @legendecas.bsky.social and many volunteering Bloombergers for organising a great Node.js collab summit 😇 This was one of the most attended summits I’ve been to, so didn’t get to say hi to everyone, but very happy to see many new faces!
Mexican orange blossomA crow having a snack in the Forgotten StreamsCalifornia lilacSt. Paul’s Cathedral
1192
Joyee Cheung @joyeecheung.bsky.social · 17/04/2026
🤌
1110
Joyee Cheung @joyeecheung.bsky.social · 13/04/2026
RFC: I have a new proposal to add new vm Module primitives and a SourceTextModuleLoader API to bring the `--experimental-vm-modules` out of experiments! github.com/nodejs/node/...
github.com
Proposal: new `vm` module primitives & loader API for ESM customization · Issue #62720 · nodejs/node
This proposes new vm module primitives that aim to replace the existing vm.SourceTextModule and provide a high-level loader API for ESM (specifically SourceTextModule) loading customization. Consid...
0264
Joyee Cheung @joyeecheung.bsky.social · 11/04/2026
TFW you have a meet up next week and you even have a session to facilitate but your tonsils are acting up and your voice is now broken 😅
150
Joyee Cheung @joyeecheung.bsky.social · 07/04/2026
Just landed in London and planning to go to the GitHub social club in London this afternoon. Wondering if anyone here is joining too, happy to go say hi there!
080
Joyee Cheung @joyeecheung.bsky.social · 07/04/2026
30 minutes into sleep and I got woken up by iPhone’s bed time alert and I couldn’t fall asleep again. This must have been the most stupid feature ever…
050
Joyee Cheung @joyeecheung.bsky.social · 05/04/2026
Spring has arrived in Galicia!
Young linden leavesFir pollen conesApple blossoms?Elm samaras
0140
Joyee Cheung @joyeecheung.bsky.social · 03/04/2026
A few days in and I think my brain is gradually getting used to it. It’s amazing how a color scheme (or the familiarity of a particular one) can affect your speed of comprehension of the code but it’s useful to force yourself not to get locked into a specific set of schemes…
050
Joyee Cheung @joyeecheung.bsky.social · 03/04/2026
Finally landed this PR that has been delayed for all sorts of reasons.. Hopefully this will help get rid of the "VSCode remote SSH getting stuck connecting to my server" problem caused by the WebAssembly memory allocation issue for most people when it flows into LTS! github.com/nodejs/node/...
github.com
src: do not enable wasm trap handler if there's not enough vmem by joyeecheung · Pull Request #62132 · nodejs/node
The first commit is a backport of https://chromium-review.googlesource.com/c/v8/v8/+/7638233 This complements --disable-wasm-trap-handler and allows users to keep wasm functional in an environment ...
2122
Joyee Cheung @joyeecheung.bsky.social · 30/03/2026
Just updated vscode and now I am not sure if I should just get used to the new default color scheme or set it back to the old one...
3100
Joyee Cheung @joyeecheung.bsky.social · 25/03/2026
This must've been one of the most challenging things I've worked on in a while. Thanks Bloomberg for sponsoring my work on this, and everyone who helped shipping a fix in time!
15713
Joyee Cheung @joyeecheung.bsky.social · 25/03/2026
Wrote a blog post about how this works: joyeecheung.github.io/blog/2026/03...
joyeecheung.github.io
Teaching gdb to Unwind V8 JIT Frames on x64
Recently I landed a custom Python-gdb unwinder in V8 that allows gdb to unwind through V8’s JIT-compiled frames on x64. During the process, I ended up digging into gdb’s internals to figure out how to
0183
Reposted by Joyee Cheung
James @43081j.com · 21/03/2026
new post on my personal blog. i think these three areas often go unexplained, so hopefully this explains why some of these packages exist. these are fine to exist but the majority of developers shouldn't have to pay the cost for them.
43081j.com
The Three Pillars of JavaScript Bloat
A brief look at the three main causes of bloat in our JavaScript dependency trees, and how we can start to address them.
1315045