Tracking Issue: Syncify the ESM Loader #55782
Labels
esm
Issues and PRs related to the ECMAScript Modules implementation.
loaders
Issues and PRs related to ES module loaders
performance
Issues and PRs related to the performance of Node.js.
The code under
lib/internal/modules/esm
, a.k.a. the ESM loader, contains many functions that are async. We should refactor as many of these as possible, ideally all of them, to be synchronous. This should improve the performance of evaluating ESM code, bringing it roughly on par with the speed of running CommonJS code.Longer term, once the ESM loader is synchronous and we land the synchronous module customization hooks, we could deprecate monkey-patching the CommonJS loader and merge together the CommonJS and ESM loaders, eliminating duplication: #50356.
This issue will track our progress syncifying the various files and functions of the ESM loader until we can get as much of it to be as synchronous as possible.
The files to be updated, all under
lib/internal/modules
:run_main.js
:asyncRunEntryPointWithESMLoader
esm/fetch_module.js
:fetchWithRedirects
esm/fetch_module.js
:isLocalAddress
esm/hooks.js
:Hooks
class (the async methods here probably don’t need updating as they will be removed once we migrate to the synchronous customization hooks)esm/hooks.js
:nextHookFactory
esm/load.js
:getSource
esm/load.js
:defaultLoad
esm/loader.js
:ModuleLoader.eval
esm/loader.js
:ModuleLoader.getModuleJobForImport
esm/loader.js
:ModuleLoader.loadAndTranslate
esm/loader.js
:ModuleLoader.import
esm/loader.js
:ModuleLoader.load
esm/module_job.js
:ModuleJob._link
esm/module_job.js
:ModuleJob._instantiate
esm/module_job.js
:ModuleJob.run
esm/module_job.js
:ModuleJobSync.run
esm/translators.js
:wasm
handler, viatranslators.set('wasm', ...
esm/utils.js
:importModuleDynamicallyCallback
esm/utils.js
:initializeHooks
(might not need updating as we will remove this once the synchronous customization hooks landesm/worker.js
:customizedModuleWorker
(might not need updating as we will remove this once the synchronous customization hooks landesm/worker.js
:handleMessage
(might not need updating as we will remove this once the synchronous customization hooks land@nodejs/loaders @mcollina @JakobJingleheimer @joyeecheung
The text was updated successfully, but these errors were encountered: