Open-Source Wikis

/

Node.js

/

Node.js

/

Glossary

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.md for the canonical definitions.
  • Bootstrap — the early phase in Realm::BootstrapRealm() that runs lib/internal/bootstrap/realm.js and lib/internal/bootstrap/node.js.
  • Backport — applying a fix or feature from main to 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 nan API.
  • Primordials — frozen copies of JavaScript built-ins captured in lib/internal/per_context/primordials.js so 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 primordials exists.
  • 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 of deps/** 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 node binary. Built by tools/snapshot/ and node_mksnapshot. The relevant C++ code is SnapshotBuilder::Generate() in src/node_snapshotable.cc.
  • internalBinding(name) vs. process.binding(name)internalBinding is the private, fast loader used inside lib/internal/; process.binding is a legacy publicly-visible loader still used for a small allow-list defined in lib/internal/bootstrap/realm.js. Most code should use internalBinding.
  • BuiltinModule — the in-process module loader that backs require('internal/...') and require('fs') for built-ins. Implemented in lib/internal/bootstrap/realm.js.
  • Realm vs. Environment vs. Isolate — see primitives › environment-and-realm. One Isolate per V8 instance, one Environment per Node thread, one or more Realms per Environment.
  • 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 for async_hooks, AsyncLocalStorage, and diagnostics_channel instrumentation.
  • 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, see src/node_realm.h. Kept across snapshots via EmbedderGraph.
  • primordials — see above.
  • bootstrap/switches/ — bootstrap fragments toggled by --no-deprecation, --frozen-intrinsics, etc. Found in lib/internal/bootstrap/switches/.
  • pre_executionlib/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 and process.nextTick queue 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 by internalBinding(name)).
  • per_context — JS code that runs once per V8 context (per Realm). Lives in lib/internal/per_context/.
  • per_thread — process initialization that has to happen for every worker as well as the main thread. See lib/internal/process/per_thread.js.
  • cppgc / CppgcMixin — a helper layer over V8's C++ garbage collector. See src/cppgc_helpers.h.
  • MaybeStackBuffer — small-buffer-optimization helper for binding code, defined in src/util.h.
  • PointerData — used by FFI bindings (src/ffi/) to manage external pointers.
  • undici — vendored fetch/HTTP client at deps/undici/. Backs globalThis.fetch.
  • amaro — vendored TypeScript stripper at deps/amaro/. Backs --experimental-strip-types.
  • ada — vendored URL parser at deps/ada/. Backs URL and URLPattern.
  • simdjson — SIMD JSON parser at deps/simdjson/. Used by --experimental-config-file.
  • ncrypto — Node's wrapper crate over OpenSSL/BoringSSL primitives at deps/ncrypto/. Used by src/crypto/.
  • ngtcp2 / nghttp3 — QUIC and HTTP/3 libraries vendored at deps/ngtcp2/. Backs quic and the experimental HTTP/3 layer.
  • nghttp2 — HTTP/2 library at deps/nghttp2/. Backs http2.
  • llhttp — HTTP/1 parser at deps/llhttp/. Backs http.

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.

Glossary – Node.js wiki | Factory