Skip to content

src: disambiguate terms used to refer to builtins and addons

The term "native module" dates back to some of the oldest code in the code base. Within the context of Node.js core it usually refers to modules that are native to Node.js (e.g. fs, http), but it can cause confusion for people who don't work on this part of the code base, as "native module" can also refer to native addons - which is even the case in some of the API docs and error messages.

This patch tries to make the usage of these terms more consistent. Now within the context of Node.js core:

  • JavaScript scripts that are built-in to Node.js are now referred to as "built-in(s)". If they are available as modules, they can also be referred to as "built-in module(s)".
  • Dynamically-linked shared objects that are loaded into the Node.js processes are referred to as "addons".

We will try to avoid using the term "native modules" because it could be ambiguous.

Changes in this patch:

File names:

  • node_native_module.h -> node_builtins.h,
  • node_native_module.cc -> node_builtins.cc

C++ binding names:

  • native_module -> builtins

node::Environment:

  • native_modules_without_cache -> builtins_without_cache
  • native_modules_with_cache -> builtins_with_cache
  • native_modules_in_snapshot -> builtins_in_cache
  • native_module_require -> builtin_module_require

node::EnvSerializeInfo:

  • native_modules -> `builtins

node::native_module::NativeModuleLoader:

  • native_module namespace -> builtins namespace
  • NativeModuleLoader -> BuiltinLoader
  • NativeModuleRecordMap -> BuiltinSourceMap
  • NativeModuleCacheMap -> BuiltinCodeCacheMap
  • ModuleIds -> BuiltinIds
  • ModuleCategories -> BuiltinCategories
  • LoadBuiltinModuleSource -> LoadBuiltinSource

loader.js:

  • NativeModule -> BuiltinModule (the NativeModule name used in process.moduleLoadList is kept for compatibility)

And other clarifications in the documentation and comments.

Fixes: https://github.com/nodejs/node/issues/44036

Merge request reports

Loading