• Home
  • Raw
  • Download

Lines Matching +full:node +full:- +full:version

1 # Maintaining V8 in Node.js
6 different compared to the support horizon for Node.js. As a result, Node.js
8 to support. V8 branches in Node.js lack of an official maintenance process due
12 a workflow for maintaining the V8 branches in both Node.js LTS and current
13 releases, and discusses how the Node.js and V8 teams at Google can help.
18 [roughly 6-week release cadence][ChromiumReleaseCalendar]. At any given time
27 * **Master**: V8 tip-of-tree corresponds to V8 5.6. This branch gets regularly
40 * A fix needing backport is tagged w/ *merge-request-x.x* tag. This can be done
46 * Once ready, the issue is tagged w/ *merge-approved-x.x* and one can do the
51 ## Node.js support requirements
53 At any given time Node.js needs to be maintaining a few different V8 branches
65 <td><strong>V8 version</strong>
73 <td>Node.js 4.x
75 <td>2015-10-01
81 <td>2015-09-01
83 <td>2015-10-13
87 <td>Node.js 6.x
89 <td>2016-04-01
95 <td>2016-05-31
97 <td>2016-06-26
101 <td>Node.js 8.x
103 <td>2017-05-30
109 <td>2017-10-17 (6.2)
111 <td>~2017-12-05 (6.2)
115 <td>Node.js 9.x
117 <td>2017-10-31
123 <td>2017-10-17
125 <td>~2017-12-05
137 <td>2017-10-17
139 <td>~2017-12-05
144 The versions of V8 used in Node.js v4.x, v6.x, and 8.x have already been
145 abandoned by upstream V8. However, Node.js needs to continue supporting
151 Once a bug in Node.js has been identified to be caused by V8, the first step is
152 to identify the versions of Node.js and V8 affected. The bug may be present in
161 haven't encountered in Node.js yet.
165 If the bug can be reproduced on the [Node.js `canary` branch][], Chromium
166 canary, or V8 tip-of-tree, and the test case is valid, then the bug needs to be
170 * Make sure to include a link to the corresponding Node.js issue
176 branches that are still active or are branches that Node.js cares about.
186 * Identify which version of V8 the bug was fixed in.
190 bug using this [Node.js specific template][V8TemplateMergeRequest].
193 * Attach *merge-request-x.x* labels to the bug for any active branches
201 cases we float the patch on the Node.js side. See the process on 'Backporting
208 Abandoned V8 branches are supported in the Node.js repository. The fix needs
209 to be cherry-picked in the Node.js repository and V8-CI must test the change.
213 * Checkout a branch off the appropriate *vY.x-staging* branch (e.g.
214 *v6.x-staging* to fix an issue in V8 5.1).
215 * Cherry-pick the commit(s) from the V8 repository.
220 * Open a cherry-pick pull request on `nodejs/node` targeting the
221 *vY.x-staging* branch and notify the `@nodejs/v8` team.
222 * Run the Node.js [V8 CI][] in addition to the [Node.js CI][].
223 The CI uses the `test-v8` target in the `Makefile`, which uses
224 `tools/make-v8.sh` to reconstruct a git tree in the `deps/v8` directory to
227 The [`git-node`][] tool can be used to simplify this task. Run
228 `git node v8 backport <sha>` to cherry-pick a commit.
230 An example for workflow how to cherry-pick consider the bug
233 V8 5.1 (since it was already abandoned). Since Node.js `v6.x` uses V8 5.1, the
234 fix needed to be cherry-picked. To cherry-pick, here's an example workflow:
236 * Download and apply the commit linked-to in the issue (in this case a51f429).
237 `curl -L https://github.com/v8/v8/commit/a51f429.patch | git am -3
238 --directory=deps/v8`. If the branches have diverged significantly, this may
239 not apply cleanly. It may help to try to cherry-pick the merge to the oldest
244 replace yourself as the author. `git commit --amend --reset-author`. You may
246 on Node.js. In this case the original issue was descriptive enough. Example:
249 deps: cherry-pick a51f429 from V8 upstream
252 [regexp] Fix case-insensitive matching for one-byte subjects.
256 early for one-byte subject strings, assuming that the ranges are sorted.
262 Review-Url: https://codereview.chromium.org/2159683002
263 Cr-Commit-Position: refs/heads/master@{#37833}
266 PR-URL: https://github.com/nodejs/node/pull/7833
269 * Open a PR against the `v6.x-staging` branch in the Node.js repository. Launch
270 the normal and [V8 CI][] using the Node.js CI system. We only needed to
276 that might be applicable to the abandoned branches in use by Node.js. This is
283 * `NodeJS-Backport-Review` ([V8][NodeJS-Backport-Review-V8],
284 [Chromium][NodeJS-Backport-Review-Chromium]): to be reviewed if this is
285 applicable to abandoned branches in use by Node.js. This list if regularly
286 reviewed by the Node.js team at Google to determine applicability to Node.js.
287 * `NodeJS-Backport-Approved` ([V8][NodeJS-Backport-Approved-V8],
288 [Chromium][NodeJS-Backport-Approved-Chromium]): marks bugs that are deemed
289 relevant to Node.js and should be backported.
290 * `NodeJS-Backport-Done` ([V8][NodeJS-Backport-Done-V8],
291 [Chromium][NodeJS-Backport-Done-Chromium]): Backport for Node.js has been
293 * `NodeJS-Backport-Rejected` ([V8][NodeJS-Backport-Rejected-V8],
294 [Chromium][NodeJS-Backport-Rejected-Chromium]): Backport for Node.js is not
297 The backlog of issues with such is regularly reviewed by the node-team at Google
304 Node.js keeps a vendored copy of V8 inside of the deps/ directory. In addition,
305 Node.js may need to float patches that do not exist upstream. This means that
308 V8 builds against the version of ICU supplied by Node.js,
309 see [maintaining-icu.md](./maintaining-icu.md) for special considerations.
314 Because there may be floating patches on the version of V8 in Node.js, it is
316 upstream V8 is at 5.0.71.47 and Node.js is at 5.0.71.32. It would be best to
318 patch on the copy of V8 in Node.js. This should preserve the patches/backports
319 that Node.js may be floating (or else cause a merge conflict).
324 # Assuming your fork of Node.js is checked out in $NODE_DIR
325 # and you want to update the Node.js master branch.
326 # Find the current (OLD) version in
327 # $NODE_DIR/deps/v8/include/v8-version.h
330 git merge --ff-only origin/master
331 git checkout -b V8_NEW_VERSION
332 curl -L https://github.com/v8/v8/compare/${V8_OLD_VERSION}...${V8_NEW_VERSION}.patch | git apply --
336 V8 also keeps tags of the form *5.4-lkgr* which point to the *Last Known Good
339 The [`git-node`][] tool can be used to simplify this task. Run `git node v8 minor`
344 We upgrade the version of V8 in Node.js master whenever a V8 release goes stable
352 1. Replace the copy of V8 in Node.js with a fresh checkout of the latest stable
356 1. Reset the `v8_embedder_string` variable to "-node.0" in `common.gypi`.
357 1. Refloat (cherry-pick) all the patches from list computed in 1) as necessary.
363 git log --oneline deps/v8
366 To replace the copy of V8 in Node.js, use the [`git-node`][] tool. For example,
367 if you want to replace the copy of V8 in Node.js with the branch-head for V8 5.1
372 git node v8 major --branch=5.1-lkgr
379 The fact that Node.js keeps a vendored, potentially edited copy of V8 in deps/
384 * The process to update the version of V8 in Node.js could be automated to track
386 * It would simplify cherry-picking and porting of fixes between branches as the
387 version bumps in `v8-version.h` would happen as part of this update instead of
389 * It would simplify the V8-CI and make it more automatable.
392 * It would make it simpler to setup an automated build that tracks Node.js
397 * A script that would update the V8 in a specific Node.js branch with V8 from
399 * We need a script to bump V8 version numbers when a new version of V8 is
400 promoted from `nodejs/v8` to `nodejs/node`.
401 * Enabled the V8-CI build in Jenkins to build from the `nodejs/v8` fork.
403 <!-- Footnotes themselves at the bottom. -->
406 <sup>1</sup>Node.js 0.12 and older are intentionally omitted from this document
410 you can run `PYTHON2 ./configure.py` before running `make test-v8`, in the root
415 [Node.js CI]: https://ci.nodejs.org/job/node-test-pull-request/
416 [Node.js `canary` branch]: https://github.com/nodejs/node-v8/tree/canary
417 [NodeJS-Backport-Approved-Chromium]: https://bugs.chromium.org/p/chromium/issues/list?can=1&q=label…
418 [NodeJS-Backport-Approved-V8]: https://bugs.chromium.org/p/v8/issues/list?can=1&q=label%3ANodeJS-Ba…
419 [NodeJS-Backport-Done-Chromium]: https://bugs.chromium.org/p/chromium/issues/list?can=1&q=label%3AN…
420 [NodeJS-Backport-Done-V8]: https://bugs.chromium.org/p/v8/issues/list?can=1&q=label%3ANodeJS-Backpo…
421 [NodeJS-Backport-Rejected-Chromium]: https://bugs.chromium.org/p/chromium/issues/list?can=1&q=label…
422 [NodeJS-Backport-Rejected-V8]: https://bugs.chromium.org/p/v8/issues/list?can=1&q=label%3ANodeJS-Ba…
423 [NodeJS-Backport-Review-Chromium]: https://bugs.chromium.org/p/chromium/issues/list?can=1&q=label%3…
424 [NodeJS-Backport-Review-V8]: https://bugs.chromium.org/p/v8/issues/list?can=1&q=label%3ANodeJS-Back…
425 [V8 CI]: https://ci.nodejs.org/job/node-test-commit-v8-linux/
429 [V8TemplateMergeRequest]: https://bugs.chromium.org/p/v8/issues/entry?template=Node.js%20merge%20re…
430 [V8TemplateUpstreamBug]: https://bugs.chromium.org/p/v8/issues/entry?template=Node.js%20upstream%20…
431 [`git-node`]: https://github.com/nodejs/node-core-utils/blob/HEAD/docs/git-node.md#git-node-v8