RSSAmplifier

Blog

Joyee Cheung's Blog

joyeecheung.github.ioRSS feed ↗20 posts

Latest posts

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 patches into their repositories/CIs

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

Tinkering with Node.js Core on ARM64 Windows

A while back, I wrote about Building Node.js on Windows using the new ClangCL support , which was done on an actual x64 Windows machine

Improving Single Executable Application Building for Node.js

Recently, I landed a change that moves the Single Executable Application (SEA) build process directly into Node.js core - a hobby project I’d been tinkering with for some time

require(esm) in Node.js: implementer's tales

In earlier posts, I wrote about reviving require(esm) and its iteration process

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 <a target="_blank" rel="noopener" href="https://github

Building Node.js on Windows with clang-cl

Recently Node.js started to support building with clang-cl on Windows. I happened to have the chance to try it out this week and while it still needs some fixups in my case, it’s mostly working very well now. Here are some notes about this

Executable loading and startup performance on macOS

Recently, I fixed a macOS-specific startup performance regression in Node.js after an extensive investigation. Along the way, I learned a lot about tools for macOS and Node

Reproducible Node.js built-in snapshots, part 3 - fixing V8 startup snapshot

In the previous posts we looked into how the Node.js executable was made a bit more reproducible after the Node.js snapshot data and the V8 code cache were made reproducible, and did a bit of anatomy on the unreproducible V8 snapshot blobs

Reproducible Node.js built-in snapshots, part 2 - V8 code cache and snapshot blobs

In the previous post , we covered how the Node.js built-in snapshot is generated and embedded into the executable, and how I fixed the Node

Reproducible Node.js built-in snapshots, part 1 - Overview and Node.js fixes

In a recent effort to make the Node.js builds reproducible again (at least on Linux), a big remaining piece was the built-in snapshot. I wrote some notes about the journey of making the Node

Things I learned from organizing a hybrid unconference

Recently, I co-organized a hybrid unconference - the Node.js collaboration summit for 2024 H1

require(esm) in Node.js

Recently I landed experimental support for require() -ing synchronous ES modules in Node.js , a feature that has been long overdue

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

Memory leak regression testing with V8/Node.js, part 2 - finalizer-based testing

In the previous blog post , I talked about how Node.js used memory usage measurement to test against memory leaks. Sometimes that’s good enough to provide valid tests

Memory leak regression testing with V8/Node.js, part 1 - memory usage-based testing

Like many other relatively big piece of software, Node.js is no stranger to memory leaks, and with them, fixes and regression tests

Fixing Node.js vm APIs, part 4 - hitting the compilation cache again

In the last post I wrote about how I finally managed to fix the memory problems in the vm APIs, and it turned out that there was another issue blocking users from upgrading away from the End-of-Life Node

Fixing Node.js vm APIs, part 3 - verifying the fixes

In the last post I wrote about how a new memory management model in Node.js vm APIs was designed to fix the long-standing leaks and use-after-free issues, and we finally put together a PR that the Node

Fixing Node.js vm APIs, part 2 - reworking the memory management

In the last post , I wrote about how I came to work on a memory leak in the vm compilation APIs in Node

Fixing Node.js vm APIs, part 1 - memory leaks and segmentation faults

This year I spent some time fixing a few long-standing issues in the Node.js vm APIs that had been blocking users from upgrading away from Node.js v16 (End-of-Life). It had been an interesting journey, so I decided to write a few blog posts about it. Hopefully they can be helpful for posterity