src: move more process methods initialization in bootstrap/node.js#25127
Closed
joyeecheung wants to merge 1 commit intonodejs:masterfrom
Closed
src: move more process methods initialization in bootstrap/node.js#25127joyeecheung wants to merge 1 commit intonodejs:masterfrom
joyeecheung wants to merge 1 commit intonodejs:masterfrom
Conversation
Member
Author
|
cc @addaleax @jasnell @nodejs/process |
addaleax
approved these changes
Dec 19, 2018
jasnell
approved these changes
Dec 19, 2018
Member
Author
1 similar comment
Member
Author
Member
Author
Instead of:
- Writing methods onto the process directly in C++ during
`SetupProcessObject()` and overwrite with argument checks later
- Or, wrapping and writing them in `internal/process/*.js`
Do:
- Move the C++ implementations in node_process.cc and mark them static
wherever possible
- Expose the C++ methods through a new
`internalBinding('process_methods')`
- Wrap the methods in `internal/process/*.js` in a
side-effect-free manner and return them back to
`internal/bootstrap/node.js`
- Centralize the write to the process object based on conditions
in `bootstrap/node.js`
So it's easier to see what methods are attached to the process object
during bootstrap under what condition and in what order.
The eventual goal is to figure out the dependency of process methods
and the write/read access to the process object during bootstrap, group
these access properly and remove the process properties that should not
be exposed to users this way.
Also correct the NODE_PERFORMANCE_MILESTONE_BOOTSTRAP_COMPLETE milestone
which should be marked before code execution.
Refs: nodejs#24961
9edfd9d to
7108077
Compare
Member
Author
Member
Author
|
Landed in 75d0a93, thanks! |
joyeecheung
added a commit
that referenced
this pull request
Dec 21, 2018
Instead of:
- Writing methods onto the process directly in C++ during
`SetupProcessObject()` and overwrite with argument checks later
- Or, wrapping and writing them in `internal/process/*.js`
Do:
- Move the C++ implementations in node_process.cc and mark them static
wherever possible
- Expose the C++ methods through a new
`internalBinding('process_methods')`
- Wrap the methods in `internal/process/*.js` in a
side-effect-free manner and return them back to
`internal/bootstrap/node.js`
- Centralize the write to the process object based on conditions
in `bootstrap/node.js`
So it's easier to see what methods are attached to the process object
during bootstrap under what condition and in what order.
The eventual goal is to figure out the dependency of process methods
and the write/read access to the process object during bootstrap, group
these access properly and remove the process properties that should not
be exposed to users this way.
Also correct the NODE_PERFORMANCE_MILESTONE_BOOTSTRAP_COMPLETE milestone
which should be marked before code execution.
Refs: #24961
PR-URL: #25127
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Contributor
|
This isn't landing cleanly on v11.x, should it be backported? |
Member
|
@joyeecheung I think #25127 needs to be backported along with this? |
2 tasks
Member
Author
refack
pushed a commit
to refack/node
that referenced
this pull request
Jan 14, 2019
Instead of:
- Writing methods onto the process directly in C++ during
`SetupProcessObject()` and overwrite with argument checks later
- Or, wrapping and writing them in `internal/process/*.js`
Do:
- Move the C++ implementations in node_process.cc and mark them static
wherever possible
- Expose the C++ methods through a new
`internalBinding('process_methods')`
- Wrap the methods in `internal/process/*.js` in a
side-effect-free manner and return them back to
`internal/bootstrap/node.js`
- Centralize the write to the process object based on conditions
in `bootstrap/node.js`
So it's easier to see what methods are attached to the process object
during bootstrap under what condition and in what order.
The eventual goal is to figure out the dependency of process methods
and the write/read access to the process object during bootstrap, group
these access properly and remove the process properties that should not
be exposed to users this way.
Also correct the NODE_PERFORMANCE_MILESTONE_BOOTSTRAP_COMPLETE milestone
which should be marked before code execution.
Refs: nodejs#24961
PR-URL: nodejs#25127
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
addaleax
pushed a commit
to addaleax/node
that referenced
this pull request
Jan 14, 2019
Instead of:
- Writing methods onto the process directly in C++ during
`SetupProcessObject()` and overwrite with argument checks later
- Or, wrapping and writing them in `internal/process/*.js`
Do:
- Move the C++ implementations in node_process.cc and mark them static
wherever possible
- Expose the C++ methods through a new
`internalBinding('process_methods')`
- Wrap the methods in `internal/process/*.js` in a
side-effect-free manner and return them back to
`internal/bootstrap/node.js`
- Centralize the write to the process object based on conditions
in `bootstrap/node.js`
So it's easier to see what methods are attached to the process object
during bootstrap under what condition and in what order.
The eventual goal is to figure out the dependency of process methods
and the write/read access to the process object during bootstrap, group
these access properly and remove the process properties that should not
be exposed to users this way.
Also correct the NODE_PERFORMANCE_MILESTONE_BOOTSTRAP_COMPLETE milestone
which should be marked before code execution.
Refs: nodejs#24961
PR-URL: nodejs#25127
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Member
|
@joyeecheung this seems to be the oldest PR which requires a manual backport. Could you have another look at this one? All other manual backport requests are about process changes and should rely on this PR. |
addaleax
pushed a commit
that referenced
this pull request
Jan 15, 2019
Instead of:
- Writing methods onto the process directly in C++ during
`SetupProcessObject()` and overwrite with argument checks later
- Or, wrapping and writing them in `internal/process/*.js`
Do:
- Move the C++ implementations in node_process.cc and mark them static
wherever possible
- Expose the C++ methods through a new
`internalBinding('process_methods')`
- Wrap the methods in `internal/process/*.js` in a
side-effect-free manner and return them back to
`internal/bootstrap/node.js`
- Centralize the write to the process object based on conditions
in `bootstrap/node.js`
So it's easier to see what methods are attached to the process object
during bootstrap under what condition and in what order.
The eventual goal is to figure out the dependency of process methods
and the write/read access to the process object during bootstrap, group
these access properly and remove the process properties that should not
be exposed to users this way.
Also correct the NODE_PERFORMANCE_MILESTONE_BOOTSTRAP_COMPLETE milestone
which should be marked before code execution.
Refs: #24961
PR-URL: #25127
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Backport-PR-URL: #25496
Merged
BridgeAR
pushed a commit
to BridgeAR/node
that referenced
this pull request
Jan 16, 2019
Instead of:
- Writing methods onto the process directly in C++ during
`SetupProcessObject()` and overwrite with argument checks later
- Or, wrapping and writing them in `internal/process/*.js`
Do:
- Move the C++ implementations in node_process.cc and mark them static
wherever possible
- Expose the C++ methods through a new
`internalBinding('process_methods')`
- Wrap the methods in `internal/process/*.js` in a
side-effect-free manner and return them back to
`internal/bootstrap/node.js`
- Centralize the write to the process object based on conditions
in `bootstrap/node.js`
So it's easier to see what methods are attached to the process object
during bootstrap under what condition and in what order.
The eventual goal is to figure out the dependency of process methods
and the write/read access to the process object during bootstrap, group
these access properly and remove the process properties that should not
be exposed to users this way.
Also correct the NODE_PERFORMANCE_MILESTONE_BOOTSTRAP_COMPLETE milestone
which should be marked before code execution.
Refs: nodejs#24961
PR-URL: nodejs#25127
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Backport-PR-URL: nodejs#25496
Merged
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.
Instead of:
SetupProcessObject()and overwrite with argument checks laterinternal/process/*.jsDo:
wherever possible
internalBinding('process_methods')internal/process/*.jsin aside-effect-free manner and return them back to
internal/bootstrap/node.jsin
bootstrap/node.jsSo it's easier to see what methods are attached to the process object
during bootstrap under what condition and in what order.
The eventual goal is to figure out the dependency of process methods
and the write/read access to the process object during bootstrap, group
these access properly and remove the process properties that should not
be exposed to users this way.
Also correct the NODE_PERFORMANCE_MILESTONE_BOOTSTRAP_COMPLETE milestone
which should be marked before code execution.
Refs: #24961
Checklist
make -j4 test(UNIX), orvcbuild test(Windows) passes