process: split execution entry points into main scripts#25667
Closed
joyeecheung wants to merge 3 commits intonodejs:masterfrom
Closed
process: split execution entry points into main scripts#25667joyeecheung wants to merge 3 commits intonodejs:masterfrom
joyeecheung wants to merge 3 commits intonodejs:masterfrom
Conversation
Member
Author
joyeecheung
commented
Jan 23, 2019
src/env.cc
Outdated
Member
Author
There was a problem hiding this comment.
Ideally this should not have been done here - maybe a better place would be the options parser but at that point Environment is not yet available and we do not have a better place to carry this information yet.
addaleax
reviewed
Jan 23, 2019
2 tasks
addaleax
reviewed
Jan 23, 2019
0bab6b0 to
e5ddc18
Compare
Member
Author
|
I've removed the options changes as those are not really related to the primary purpose of this PR. @addaleax PTAL. |
addaleax
approved these changes
Jan 29, 2019
This patch splits the execution mode selection from the environment setup in `lib/internal/bootstrap/node.js`, and split the entry point of different execution mode into main scripts under `lib/internal/main`: - `check_syntax.js`: used when `-c`/`--check` which only checks the syntax of the input instead of executing it. - `eval_stdin.js`: used when `-e` is passed without value and stdin is not a TTY (e.g. something is piped). - `eval_string`: used when `-e` is passed along with a string argument - `inspect.js`: for `node inspect`/`node debug` - `print_bash_completion.js`: for `--completion-bash` - `print_help.js`: for `--help` - `prof_process.js`: for `--prof-process` - `repl.js`: for the REPL - `run_main_module.js`: used when a main module is passed - `run_third_party_main.js`: for the legacy `_third_party_main.js` support - `worker_thread.js`: for workers This makes the entry points easier to navigate and paves the way for customized v8 snapshots (that do not need to deserialize execution mode setup) and better embedder APIs. As an example, after this patch, for the most common case where Node.js executes a user module as an entry point, it essentially goes through: - `lib/internal/per_context.js` to setup the v8 Context (which is also run when setting up contexts for the `vm` module) - `lib/internal/bootstrap/loaders.js` to set up internal binding and builtin module loaders (that are separate from the loaders accessible in the user land). - `lib/internal/bootstrap/node.js`: to set up the rest of the environment, including various globals and the process object - `lib/internal/main/run_main_module.js`: which is selected from C++ to prepare execution of the user module. This patch also removes `NativeModuleLoader::CompileAndCall` and exposes `NativeModuleLoader::LookupAndCompile` directly so that we can handle syntax errors and runtime errors of bootstrap scripts differently.
This patch directly inlines `createMessageHandler()` and `createWorkerFatalExeception()` in the new `lib/internal/main/worker_thread.js` since the implementation of the two methods are related to the execution flow of workers.
e5ddc18 to
455c923
Compare
Member
Author
Member
Author
|
Landed in feebdc5...5e1d446 |
joyeecheung
added a commit
that referenced
this pull request
Jan 30, 2019
This patch splits the execution mode selection from the environment setup in `lib/internal/bootstrap/node.js`, and split the entry point of different execution mode into main scripts under `lib/internal/main`: - `check_syntax.js`: used when `-c`/`--check` which only checks the syntax of the input instead of executing it. - `eval_stdin.js`: used when `-e` is passed without value and stdin is not a TTY (e.g. something is piped). - `eval_string`: used when `-e` is passed along with a string argument - `inspect.js`: for `node inspect`/`node debug` - `print_bash_completion.js`: for `--completion-bash` - `print_help.js`: for `--help` - `prof_process.js`: for `--prof-process` - `repl.js`: for the REPL - `run_main_module.js`: used when a main module is passed - `run_third_party_main.js`: for the legacy `_third_party_main.js` support - `worker_thread.js`: for workers This makes the entry points easier to navigate and paves the way for customized v8 snapshots (that do not need to deserialize execution mode setup) and better embedder APIs. As an example, after this patch, for the most common case where Node.js executes a user module as an entry point, it essentially goes through: - `lib/internal/per_context.js` to setup the v8 Context (which is also run when setting up contexts for the `vm` module) - `lib/internal/bootstrap/loaders.js` to set up internal binding and builtin module loaders (that are separate from the loaders accessible in the user land). - `lib/internal/bootstrap/node.js`: to set up the rest of the environment, including various globals and the process object - `lib/internal/main/run_main_module.js`: which is selected from C++ to prepare execution of the user module. This patch also removes `NativeModuleLoader::CompileAndCall` and exposes `NativeModuleLoader::LookupAndCompile` directly so that we can handle syntax errors and runtime errors of bootstrap scripts differently. PR-URL: #25667 Reviewed-By: Anna Henningsen <anna@addaleax.net>
joyeecheung
added a commit
that referenced
this pull request
Jan 30, 2019
This patch directly inlines `createMessageHandler()` and `createWorkerFatalExeception()` in the new `lib/internal/main/worker_thread.js` since the implementation of the two methods are related to the execution flow of workers. PR-URL: #25667 Reviewed-By: Anna Henningsen <anna@addaleax.net>
Member
|
@joyeecheung This needs a manual backport for v11.x, it seems. |
4 tasks
antsmartian
pushed a commit
to antsmartian/node
that referenced
this pull request
Feb 10, 2019
This patch splits the execution mode selection from the environment setup in `lib/internal/bootstrap/node.js`, and split the entry point of different execution mode into main scripts under `lib/internal/main`: - `check_syntax.js`: used when `-c`/`--check` which only checks the syntax of the input instead of executing it. - `eval_stdin.js`: used when `-e` is passed without value and stdin is not a TTY (e.g. something is piped). - `eval_string`: used when `-e` is passed along with a string argument - `inspect.js`: for `node inspect`/`node debug` - `print_bash_completion.js`: for `--completion-bash` - `print_help.js`: for `--help` - `prof_process.js`: for `--prof-process` - `repl.js`: for the REPL - `run_main_module.js`: used when a main module is passed - `run_third_party_main.js`: for the legacy `_third_party_main.js` support - `worker_thread.js`: for workers This makes the entry points easier to navigate and paves the way for customized v8 snapshots (that do not need to deserialize execution mode setup) and better embedder APIs. As an example, after this patch, for the most common case where Node.js executes a user module as an entry point, it essentially goes through: - `lib/internal/per_context.js` to setup the v8 Context (which is also run when setting up contexts for the `vm` module) - `lib/internal/bootstrap/loaders.js` to set up internal binding and builtin module loaders (that are separate from the loaders accessible in the user land). - `lib/internal/bootstrap/node.js`: to set up the rest of the environment, including various globals and the process object - `lib/internal/main/run_main_module.js`: which is selected from C++ to prepare execution of the user module. This patch also removes `NativeModuleLoader::CompileAndCall` and exposes `NativeModuleLoader::LookupAndCompile` directly so that we can handle syntax errors and runtime errors of bootstrap scripts differently. PR-URL: nodejs#25667 Reviewed-By: Anna Henningsen <anna@addaleax.net>
antsmartian
pushed a commit
to antsmartian/node
that referenced
this pull request
Feb 10, 2019
This patch directly inlines `createMessageHandler()` and `createWorkerFatalExeception()` in the new `lib/internal/main/worker_thread.js` since the implementation of the two methods are related to the execution flow of workers. PR-URL: nodejs#25667 Reviewed-By: Anna Henningsen <anna@addaleax.net>
targos
pushed a commit
to targos/node
that referenced
this pull request
Feb 10, 2019
This patch splits the execution mode selection from the environment setup in `lib/internal/bootstrap/node.js`, and split the entry point of different execution mode into main scripts under `lib/internal/main`: - `check_syntax.js`: used when `-c`/`--check` which only checks the syntax of the input instead of executing it. - `eval_stdin.js`: used when `-e` is passed without value and stdin is not a TTY (e.g. something is piped). - `eval_string`: used when `-e` is passed along with a string argument - `inspect.js`: for `node inspect`/`node debug` - `print_bash_completion.js`: for `--completion-bash` - `print_help.js`: for `--help` - `prof_process.js`: for `--prof-process` - `repl.js`: for the REPL - `run_main_module.js`: used when a main module is passed - `run_third_party_main.js`: for the legacy `_third_party_main.js` support - `worker_thread.js`: for workers This makes the entry points easier to navigate and paves the way for customized v8 snapshots (that do not need to deserialize execution mode setup) and better embedder APIs. As an example, after this patch, for the most common case where Node.js executes a user module as an entry point, it essentially goes through: - `lib/internal/per_context.js` to setup the v8 Context (which is also run when setting up contexts for the `vm` module) - `lib/internal/bootstrap/loaders.js` to set up internal binding and builtin module loaders (that are separate from the loaders accessible in the user land). - `lib/internal/bootstrap/node.js`: to set up the rest of the environment, including various globals and the process object - `lib/internal/main/run_main_module.js`: which is selected from C++ to prepare execution of the user module. This patch also removes `NativeModuleLoader::CompileAndCall` and exposes `NativeModuleLoader::LookupAndCompile` directly so that we can handle syntax errors and runtime errors of bootstrap scripts differently. PR-URL: nodejs#25667 Reviewed-By: Anna Henningsen <anna@addaleax.net>
targos
pushed a commit
to targos/node
that referenced
this pull request
Feb 10, 2019
This patch directly inlines `createMessageHandler()` and `createWorkerFatalExeception()` in the new `lib/internal/main/worker_thread.js` since the implementation of the two methods are related to the execution flow of workers. PR-URL: nodejs#25667 Reviewed-By: Anna Henningsen <anna@addaleax.net>
targos
pushed a commit
that referenced
this pull request
Feb 10, 2019
This patch splits the execution mode selection from the environment setup in `lib/internal/bootstrap/node.js`, and split the entry point of different execution mode into main scripts under `lib/internal/main`: - `check_syntax.js`: used when `-c`/`--check` which only checks the syntax of the input instead of executing it. - `eval_stdin.js`: used when `-e` is passed without value and stdin is not a TTY (e.g. something is piped). - `eval_string`: used when `-e` is passed along with a string argument - `inspect.js`: for `node inspect`/`node debug` - `print_bash_completion.js`: for `--completion-bash` - `print_help.js`: for `--help` - `prof_process.js`: for `--prof-process` - `repl.js`: for the REPL - `run_main_module.js`: used when a main module is passed - `run_third_party_main.js`: for the legacy `_third_party_main.js` support - `worker_thread.js`: for workers This makes the entry points easier to navigate and paves the way for customized v8 snapshots (that do not need to deserialize execution mode setup) and better embedder APIs. As an example, after this patch, for the most common case where Node.js executes a user module as an entry point, it essentially goes through: - `lib/internal/per_context.js` to setup the v8 Context (which is also run when setting up contexts for the `vm` module) - `lib/internal/bootstrap/loaders.js` to set up internal binding and builtin module loaders (that are separate from the loaders accessible in the user land). - `lib/internal/bootstrap/node.js`: to set up the rest of the environment, including various globals and the process object - `lib/internal/main/run_main_module.js`: which is selected from C++ to prepare execution of the user module. This patch also removes `NativeModuleLoader::CompileAndCall` and exposes `NativeModuleLoader::LookupAndCompile` directly so that we can handle syntax errors and runtime errors of bootstrap scripts differently. PR-URL: #25667 Reviewed-By: Anna Henningsen <anna@addaleax.net> Backport-PR-URL: #26036
targos
pushed a commit
that referenced
this pull request
Feb 10, 2019
This patch directly inlines `createMessageHandler()` and `createWorkerFatalExeception()` in the new `lib/internal/main/worker_thread.js` since the implementation of the two methods are related to the execution flow of workers. PR-URL: #25667 Reviewed-By: Anna Henningsen <anna@addaleax.net> Backport-PR-URL: #26036
Merged
This was referenced Feb 15, 2019
nitsakh
added a commit
to electron/node
that referenced
this pull request
Mar 27, 2019
Node removed the NativeModuleLoader CompileAndCall function and exposed the LookupAndCompile function, with the intention of giving the ability to the caller to handle errors. The node PR made the changes nodejs/node#25667. I'm adding this back for now, but this can easily be moved to electron as a helper or can probably be upstreamed somehow.
nitsakh
added a commit
to electron/node
that referenced
this pull request
Mar 28, 2019
Node removed the NativeModuleLoader CompileAndCall function and exposed the LookupAndCompile function, with the intention of giving the ability to the caller to handle errors. The node PR made the changes nodejs/node#25667. I'm adding this back for now, but this can easily be moved to electron as a helper or can probably be upstreamed somehow.
zcbenz
pushed a commit
to electron/node
that referenced
this pull request
Apr 10, 2019
Node removed the NativeModuleLoader CompileAndCall function and exposed the LookupAndCompile function, with the intention of giving the ability to the caller to handle errors. The node PR made the changes nodejs/node#25667. I'm adding this back for now, but this can easily be moved to electron as a helper or can probably be upstreamed somehow.
zcbenz
pushed a commit
to electron/node
that referenced
this pull request
Apr 10, 2019
Node removed the NativeModuleLoader CompileAndCall function and exposed the LookupAndCompile function, with the intention of giving the ability to the caller to handle errors. The node PR made the changes nodejs/node#25667. I'm adding this back for now, but this can easily be moved to electron as a helper or can probably be upstreamed somehow.
zcbenz
pushed a commit
to electron/node
that referenced
this pull request
Apr 10, 2019
Node removed the NativeModuleLoader CompileAndCall function and exposed the LookupAndCompile function, with the intention of giving the ability to the caller to handle errors. The node PR made the changes nodejs/node#25667. I'm adding this back for now, but this can easily be moved to electron as a helper or can probably be upstreamed somehow.
zcbenz
pushed a commit
to electron/node
that referenced
this pull request
Apr 10, 2019
Node removed the NativeModuleLoader CompileAndCall function and exposed the LookupAndCompile function, with the intention of giving the ability to the caller to handle errors. The node PR made the changes nodejs/node#25667. I'm adding this back for now, but this can easily be moved to electron as a helper or can probably be upstreamed somehow.
zcbenz
pushed a commit
to electron/node
that referenced
this pull request
Apr 10, 2019
Node removed the NativeModuleLoader CompileAndCall function and exposed the LookupAndCompile function, with the intention of giving the ability to the caller to handle errors. The node PR made the changes nodejs/node#25667. I'm adding this back for now, but this can easily be moved to electron as a helper or can probably be upstreamed somehow.
zcbenz
pushed a commit
to electron/node
that referenced
this pull request
Apr 11, 2019
Node removed the NativeModuleLoader CompileAndCall function and exposed the LookupAndCompile function, with the intention of giving the ability to the caller to handle errors. The node PR made the changes nodejs/node#25667. I'm adding this back for now, but this can easily be moved to electron as a helper or can probably be upstreamed somehow.
nitsakh
added a commit
to electron/node
that referenced
this pull request
Apr 11, 2019
Node removed the NativeModuleLoader CompileAndCall function and exposed the LookupAndCompile function, with the intention of giving the ability to the caller to handle errors. The node PR made the changes nodejs/node#25667. I'm adding this back for now, but this can easily be moved to electron as a helper or can probably be upstreamed somehow.
nitsakh
added a commit
to electron/node
that referenced
this pull request
Apr 11, 2019
Node removed the NativeModuleLoader CompileAndCall function and exposed the LookupAndCompile function, with the intention of giving the ability to the caller to handle errors. The node PR made the changes nodejs/node#25667. I'm adding this back for now, but this can easily be moved to electron as a helper or can probably be upstreamed somehow.
nitsakh
added a commit
to electron/node
that referenced
this pull request
Apr 11, 2019
Node removed the NativeModuleLoader CompileAndCall function and exposed the LookupAndCompile function, with the intention of giving the ability to the caller to handle errors. The node PR made the changes nodejs/node#25667. I'm adding this back for now, but this can easily be moved to electron as a helper or can probably be upstreamed somehow.
nitsakh
added a commit
to electron/node
that referenced
this pull request
Apr 11, 2019
Node removed the NativeModuleLoader CompileAndCall function and exposed the LookupAndCompile function, with the intention of giving the ability to the caller to handle errors. The node PR made the changes nodejs/node#25667. I'm adding this back for now, but this can easily be moved to electron as a helper or can probably be upstreamed somehow.
zcbenz
pushed a commit
to electron/node
that referenced
this pull request
Apr 16, 2019
Node removed the NativeModuleLoader CompileAndCall function and exposed the LookupAndCompile function, with the intention of giving the ability to the caller to handle errors. The node PR made the changes nodejs/node#25667. I'm adding this back for now, but this can easily be moved to electron as a helper or can probably be upstreamed somehow.
zcbenz
pushed a commit
to electron/node
that referenced
this pull request
Apr 16, 2019
Node removed the NativeModuleLoader CompileAndCall function and exposed the LookupAndCompile function, with the intention of giving the ability to the caller to handle errors. The node PR made the changes nodejs/node#25667. I'm adding this back for now, but this can easily be moved to electron as a helper or can probably be upstreamed somehow.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note: there are some indentation changes in
lib/internal/bootstrap/node.jsso please use https://github.com/nodejs/node/pull/25667/files?w=1 for reviewsprocess: split execution into main scripts
This patch splits the execution mode selection from the environment
setup in
lib/internal/bootstrap/node.js, and split the entry pointof different execution mode into main scripts under
lib/internal/main:check_syntax.js: used when-c/--checkwhich only checks thesyntax of the input instead of executing it.
eval_stdin.js: used when-eis passed without value and stdinis not a TTY (e.g. something is piped).
eval_string: used when-eis passed along with a string argumentinspect.js: fornode inspect/node debugprint_bash_completion.js: for--completion-bashprint_help.js: for--helpprof_process.js: for--prof-processrepl.js: for the REPLrun_main_module.js: used when a main module is passedrun_third_party_main.js: for the legacy_third_party_main.jssupport
worker_thread.js: for workersThis makes the entry points easier to navigate and paves the way
for customized v8 snapshots (that do not need to deserialize
execution mode setup) and better embedder APIs.
As an example, after this patch, for the most common case where
Node.js executes a user module as an entry point, it essentially
goes through:
lib/internal/per_context.jsto setup the v8 Context (which isalso run when setting up contexts for the
vmmodule)lib/internal/bootstrap/loaders.jsto set up internal bindingand builtin module loaders (that are separate from the loaders
accessible in the user land).
lib/internal/bootstrap/node.js: to set up the rest of theenvironment, including various globals and the process object
lib/internal/main/run_main_module.js: which is selected fromC++ to prepare execution of the user module.
This patch also removes
NativeModuleLoader::CompileAndCallandexposes
NativeModuleLoader::LookupAndCompiledirectly so thatwe can handle syntax errors and runtime errors of bootstrap
scripts differently.
worker: move worker thread setup code into the main script
This patch directly inlines
createMessageHandler()andcreateWorkerFatalExeception()in the newlib/internal/main/worker_thread.jssince the implementationof the two methods are related to the execution flow of
workers.
Checklist
make -j4 test(UNIX), orvcbuild test(Windows) passes