This post stems from a recent Twitter conversation and a bug I was trying to fix. I’ve also seen some questions asked in the issue tracker about this from time to time. A lot of people are already aware that a substantial part of Node.js is implemented in JavaScript, and many naturally think that Node.js loads its builtins from separate JS files on disk when the process is launched (which is very intuitive, but not true unless you use a special build-time flag). So in this post I’ll try to explain how the whole thing comes together at the moment, hopefully it can be helpful to someone searching about it on the Internet or to code archeologists in the future.
Note: The builtins are sometimes called “native modules” internally, but in this post I’ll call them “builtins” so they are not confused with C++ addons - the some_library.node
dynamic libraries that npm modules load via require()
.
#node #javascript #nodejs