nodejs/node
Glossary
This glossary mixes the public Node.js community vocabulary (mirrored from glossary.md at the repo root) with internal terms-of-art that show up while reading the source.
Public glossary terms
The repo ships a glossary at the root that expands community shorthand: glossary.md. It defines acronyms used in pull request reviews, code comments, and on-call docs:
- AFAICT / AFAIK / IIRC / IIUC / IMHO / LGTM / SGTM / PTAL / RSLGTM / TBH / WDYT / WIP — review shorthand.
- ABI / API / CLI / CVE / DOM / ECMA / ECMAScript / ESM / CJS / FFDC / FIPS / IPC / JIT / JSON / LTS / npm / OOM / OOB / OOP / PPC / RAII / REPL / RFC / SMP / TC39 / TSC / UI / URL / UTF-8 / V8 / VM / WASI / WASM / W3C / WG / WHATWG / WPT — see
glossary.mdfor the canonical definitions. - Bootstrap — the early phase in
Realm::BootstrapRealm()that runslib/internal/bootstrap/realm.jsandlib/internal/bootstrap/node.js. - Backport — applying a fix or feature from
mainto a release branch (v22.x,v20.x, …). - Code cache — V8 compiled-bytecode cache used to skip recompilation of frequently-loaded scripts.
- Native modules / addons — code compiled to native binaries that exposes interfaces callable from JS via Node-API or the legacy
nanAPI. - Primordials — frozen copies of JavaScript built-ins captured in
lib/internal/per_context/primordials.jsso that internal modules cannot be broken by user-land prototype pollution. See Patterns and conventions. - Prototype Pollution — a user mutating built-in prototypes in a way that affects core code; the reason
primordialsexists. - Snapshot — bytes serialized from a V8 heap, used by Node to skip re-running the bootstrap scripts at startup.
- Vendoring — copying upstream source into
deps/. Most ofdeps/**is vendored, see Vendored deps and build.
The full file is worth reading once if any term in PR reviews is unfamiliar.
Internal terms used in the source tree
These terms are not in the public glossary but appear constantly in src/ and lib/internal/:
- Embedded snapshot / mksnapshot — the V8 startup snapshot baked into the
nodebinary. Built bytools/snapshot/andnode_mksnapshot. The relevant C++ code isSnapshotBuilder::Generate()insrc/node_snapshotable.cc. internalBinding(name)vs.process.binding(name)—internalBindingis the private, fast loader used insidelib/internal/;process.bindingis a legacy publicly-visible loader still used for a small allow-list defined inlib/internal/bootstrap/realm.js. Most code should useinternalBinding.BuiltinModule— the in-process module loader that backsrequire('internal/...')andrequire('fs')for built-ins. Implemented inlib/internal/bootstrap/realm.js.- Realm vs. Environment vs. Isolate — see primitives › environment-and-realm. One
Isolateper V8 instance, oneEnvironmentper Node thread, one or moreRealms perEnvironment. - Principal Realm — the first/main Realm created in an Environment.
- ShadowRealm — Stage-3 TC39 ShadowRealm; its boot path runs
lib/internal/bootstrap/shadow_realm.js. AsyncWrap— base class for any C++ object that can run JS callbacks under an async-resource identity. Critical forasync_hooks,AsyncLocalStorage, anddiagnostics_channelinstrumentation.HandleWrap— wraps a long-lived libuv handle (sockets, timers, fs watchers).ReqWrap— wraps a one-shot libuv request (uv_write_t,uv_fs_t, …).StreamBase— Node's C++ stream contract. Sockets, pipes, TLS, HTTP/2 sessions plug into it.BindingData— per-realm storage for a binding, seesrc/node_realm.h. Kept across snapshots viaEmbedderGraph.primordials— see above.bootstrap/switches/— bootstrap fragments toggled by--no-deprecation,--frozen-intrinsics, etc. Found inlib/internal/bootstrap/switches/.pre_execution—lib/internal/process/pre_execution.js. Does whatever the snapshot-friendly bootstrap could not do, e.g. read environment variables, set up CLI options, install the inspector.MakeCallback— the C++ helper that runs a JS callback from native code while keeping the async stack andprocess.nextTickqueue consistent.process._linkedBinding— public API for embedders to register C++ bindings linked into the binary.NODE_BINDING_CONTEXT_AWARE_INTERNAL— macro used to register an internal binding (used byinternalBinding(name)).per_context— JS code that runs once per V8 context (per Realm). Lives inlib/internal/per_context/.per_thread— process initialization that has to happen for every worker as well as the main thread. Seelib/internal/process/per_thread.js.cppgc/CppgcMixin— a helper layer over V8's C++ garbage collector. Seesrc/cppgc_helpers.h.MaybeStackBuffer— small-buffer-optimization helper for binding code, defined insrc/util.h.PointerData— used by FFI bindings (src/ffi/) to manage external pointers.undici— vendored fetch/HTTP client atdeps/undici/. BacksglobalThis.fetch.amaro— vendored TypeScript stripper atdeps/amaro/. Backs--experimental-strip-types.ada— vendored URL parser atdeps/ada/. BacksURLandURLPattern.simdjson— SIMD JSON parser atdeps/simdjson/. Used by--experimental-config-file.ncrypto— Node's wrapper crate over OpenSSL/BoringSSL primitives atdeps/ncrypto/. Used bysrc/crypto/.ngtcp2/nghttp3— QUIC and HTTP/3 libraries vendored atdeps/ngtcp2/. Backsquicand the experimental HTTP/3 layer.nghttp2— HTTP/2 library atdeps/nghttp2/. Backshttp2.llhttp— HTTP/1 parser atdeps/llhttp/. Backshttp.
For deeper background on any of these, jump from this glossary to the relevant subsystem page under Systems or Primitives.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.