You must be logged in to sponsor Qard
Become a sponsor to Stephen Belanger
I'm currently contributing to Node.js and V8 full-time, working on diagnostics-related features. In the last year:
- I introduced
executionAsyncResource()
- I contributed to parts of
AsyncLocalStorage
- I create the incoming
diagnostics_channel
feature - I significantly improved the performance of async_hooks in promise-heavy applications by avoiding GC-tracking of promises where no destroy hook is in-use
- I fixed PromiseHook support for thenables in V8, allowing context tracking with AsyncLocalStorage, or similar systems built on top of async_hooks, to correctly propagate context when using thenables, which are commonly used in database libraries
- I'm currently working on a rewrite of the PromiseHook support in V8 to use JSFunctions rather than C++, which eliminates many expensive barrier hops between generated code, runtime functions, and external C++. This should improve PromiseHook performance and therefore also async_hooks performance quite dramatically.
In the future, I hope to rewrite many parts of async_hooks to trigger lifecycle functions from within JavaScript, wherever possible, further eliminating barrier hops and being much friendlier to the optimizer in V8.
Featured work
-
nodejs/node
Node.js JavaScript runtime β¨π’πβ¨
JavaScript 107,907 -
nodejs/node-v8
Experimental Node.js mirror on V8 lkgr β¨π’πβ¨
Shell 422