Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

deps: update V8 to 8.4 #33579

Closed
wants to merge 19 commits into from
Closed

deps: update V8 to 8.4 #33579

wants to merge 19 commits into from

Conversation

Copy link
Member

@targos targos commented May 27, 2020

Stable release: Tue, Jul 14, 2020

@nodejs-github-bot nodejs-github-bot added build v8 engine labels May 27, 2020
@nodejs-github-bot
Copy link
Contributor

@nodejs-github-bot nodejs-github-bot commented May 27, 2020

@targos targos added the semver-major label May 27, 2020
@targos
Copy link
Member Author

@targos targos commented May 27, 2020

/cc @nodejs/platform-smartos

08:51:20 ../deps/v8/src/base/platform/platform-posix.cc: In static member function 'static void* v8::base::Stack::GetStackStart()':
08:51:20 ../deps/v8/src/base/platform/platform-posix.cc:978:15: error: 'pthread_getattr_np' was not declared in this scope
08:51:20    int error = pthread_getattr_np(pthread_self(), &attr);
08:51:20                ^~~~~~~~~~~~~~~~~~
08:51:20 ../deps/v8/src/base/platform/platform-posix.cc:978:15: note: suggested alternative: 'pthread_getname_np'
08:51:20    int error = pthread_getattr_np(pthread_self(), &attr);
08:51:20                ^~~~~~~~~~~~~~~~~~
08:51:20                pthread_getname_np
08:51:20 make[2]: *** [tools/v8_gypfiles/v8_libbase.target.mk:145: /home/iojs/build/workspace/node-test-commit-smartos/nodes/smartos18-64/out/Release/obj.target/v8_libbase/deps/v8/src/base/platform/platform-posix.o] Error 1

I fixed a similar error upstream for FreeBSD. The trick was to #include <pthread_np.h>.

@targos
Copy link
Member Author

@targos targos commented May 27, 2020

/cc @nodejs/platform-windows can we work around this error with VS2017?

09:04:25   exported-macros-assembler-tq.cc
09:04:25 c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.16.27023\include\type_traits(616): error C2139: 'v8::internal::JSAggregateError': an undefined class is not allowed as an argument to compiler intrinsic type trait '__is_convertible_to' [C:\workspace\node-compile-windows\node\tools\v8_gypfiles\v8_initializers.vcxproj]
09:04:25   c:\workspace\node-compile-windows\node\out\release\obj\global_intermediate\torque-output-root\torque-generated\internal-class-definitions-tq.h(109): note: see declaration of 'v8::internal::JSAggregateError'
09:04:25   c:\workspace\node-compile-windows\node\deps\v8\src\codegen\tnode.h(262): note: see reference to class template instantiation 'std::is_convertible<T,v8::internal::Object>' being compiled
09:04:25           with
09:04:25           [
09:04:25               T=v8::internal::JSAggregateError
09:04:25           ]
09:04:25   c:\workspace\node-compile-windows\node\out\release\obj\global_intermediate\torque-output-root\torque-generated\exported-macros-assembler-tq.cc(1418): note: see reference to class template instantiation 'v8::internal::is_subtype<v8::internal::JSAggregateError,v8::internal::JSAggregateError>' being compiled
09:04:25   c:\workspace\node-compile-windows\node\deps\v8\src\codegen\x64\register-x64.h(153): note: see reference to class template instantiation 'v8::internal::RegisterBase<v8::internal::XMMRegister,16>' being compiled
09:04:25   c:\workspace\node-compile-windows\node\deps\v8\src\codegen\x64\register-x64.h(53): note: see reference to class template instantiation 'v8::internal::RegisterBase<v8::internal::Register,16>' being compiled

@seishun
Copy link
Contributor

@seishun seishun commented May 27, 2020

Why not drop VS2017?

@targos
Copy link
Member Author

@targos targos commented May 27, 2020

If we just drop VS2017, we won't be able to do this V8 update on Node 14.

@targos
Copy link
Member Author

@targos targos commented May 29, 2020

@targos
Copy link
Member Author

@targos targos commented May 29, 2020

10:05:06 not ok 1 v8-updates/test-postmortem-metadata
10:05:06   ---
10:05:06   duration_ms: 0.918
10:05:06   severity: fail
10:05:06   exitcode: 1
10:05:06   stack: |-
10:05:06     assert.js:103
10:05:06       throw new AssertionError(obj);
10:05:06       ^
10:05:06     
10:05:06     AssertionError [ERR_ASSERTION]: Missing constants: 
10:05:06     v8dbg_class_FixedArrayBase__length__SMI
10:05:06     v8dbg_class_JSTypedArray__base_pointer__Object
10:05:06     v8dbg_class_JSArrayBufferView__buffer__Object
10:05:06     v8dbg_class_UncompiledData__inferred_name__String
10:05:06         at Object.<anonymous> (/home/iojs/build/workspace/node-test-commit-v8-linux/nodes/benchmark-ubuntu1604-intel-64/v8test/v8test/test/v8-updates/test-postmortem-metadata.js:51:8)
10:05:06         at Module._compile (internal/modules/cjs/loader.js:1215:30)
10:05:06         at Object.Module._extensions..js (internal/modules/cjs/loader.js:1236:10)
10:05:06         at Module.load (internal/modules/cjs/loader.js:1064:32)
10:05:06         at Function.Module._load (internal/modules/cjs/loader.js:952:14)
10:05:06         at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
10:05:06         at internal/main/run_main_module.js:17:47 {
10:05:06       generatedMessage: false,
10:05:06       code: 'ERR_ASSERTION',
10:05:06       actual: 4,
10:05:06       expected: 0,
10:05:06       operator: 'strictEqual'
10:05:06     }
10:05:06   ...

@cjihrig

Edit: and PTAL at #33579 (comment) in case you missed it.

@BridgeAR BridgeAR force-pushed the master branch 2 times, most recently from 8ae28ff to 2935f72 Compare May 31, 2020
@cjihrig
Copy link
Contributor

@cjihrig cjihrig commented May 31, 2020

@targos the SmartOS error appears to be the same one from the V8 8.3 update. I think you should just need to cherry-pick v8/v8@9868b2a to fix it.

Regarding the test-postmortem-metadata failure: it seems like @mmarchini has sort of taken over that. If I'm wrong and that isn't the case, I'm happy to look into it.

@gengjiawen
Copy link
Member

@gengjiawen gengjiawen commented Jun 1, 2020

/cc @nodejs/platform-windows can we work around this error with VS2017?

09:04:25   exported-macros-assembler-tq.cc
09:04:25 c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.16.27023\include\type_traits(616): error C2139: 'v8::internal::JSAggregateError': an undefined class is not allowed as an argument to compiler intrinsic type trait '__is_convertible_to' [C:\workspace\node-compile-windows\node\tools\v8_gypfiles\v8_initializers.vcxproj]
09:04:25   c:\workspace\node-compile-windows\node\out\release\obj\global_intermediate\torque-output-root\torque-generated\internal-class-definitions-tq.h(109): note: see declaration of 'v8::internal::JSAggregateError'
09:04:25   c:\workspace\node-compile-windows\node\deps\v8\src\codegen\tnode.h(262): note: see reference to class template instantiation 'std::is_convertible<T,v8::internal::Object>' being compiled
09:04:25           with
09:04:25           [
09:04:25               T=v8::internal::JSAggregateError
09:04:25           ]
09:04:25   c:\workspace\node-compile-windows\node\out\release\obj\global_intermediate\torque-output-root\torque-generated\exported-macros-assembler-tq.cc(1418): note: see reference to class template instantiation 'v8::internal::is_subtype<v8::internal::JSAggregateError,v8::internal::JSAggregateError>' being compiled
09:04:25   c:\workspace\node-compile-windows\node\deps\v8\src\codegen\x64\register-x64.h(153): note: see reference to class template instantiation 'v8::internal::RegisterBase<v8::internal::XMMRegister,16>' being compiled
09:04:25   c:\workspace\node-compile-windows\node\deps\v8\src\codegen\x64\register-x64.h(53): note: see reference to class template instantiation 'v8::internal::RegisterBase<v8::internal::Register,16>' being compiled

This should fix it. cc @targos

diff --git a/deps/v8/src/torque/implementation-visitor.cc b/deps/v8/src/torque/implementation-visitor.cc
index bee31b4d32..1537e33bab 100644
--- a/deps/v8/src/torque/implementation-visitor.cc
+++ b/deps/v8/src/torque/implementation-visitor.cc
@@ -4616,6 +4616,7 @@ void ImplementationVisitor::GenerateExportedMacrosAssembler(
     cc_contents << "#include \"src/objects/fixed-array-inl.h\"\n";
     cc_contents << "#include \"src/objects/free-space.h\"\n";
     cc_contents << "#include \"src/objects/js-regexp-string-iterator.h\"\n";
+    cc_contents << "#include \"src/objects/js-aggregate-error.h\"\n";
     cc_contents << "#include \"src/objects/ordered-hash-table.h\"\n";
     cc_contents << "#include \"src/objects/property-descriptor-object.h\"\n";
     cc_contents << "#include \"src/objects/synthetic-module.h\"\n";

@gengjiawen
Copy link
Member

@gengjiawen gengjiawen commented Jun 1, 2020

@targos Next time if you see vs2017 build problem, feel free to @ me.

I am +1 on remove vs2017 in Node.js 15.

Also great thanks for @appveyor to let me use their machine for debug.

@bzoz
Copy link
Contributor

@bzoz bzoz commented Jun 1, 2020

can confirm, @gengjiawen patch fixes the build

@gengjiawen
Copy link
Member

@gengjiawen gengjiawen commented Jun 2, 2020

@targos Next time if you see vs2017 build problem, feel free to @ me.

I am +1 on remove vs2017 in Node.js 15.

Also great thanks for @appveyor to let me use their machine for debug.

PR to V8: https://chromium-review.googlesource.com/c/v8/v8/+/2226123.

@targos
Copy link
Member Author

@targos targos commented Jun 2, 2020

@cjihrig right thanks. Somehow I though this commit was already in 8.4.

@gengjiawen I included your change, thanks!

@mmarchini are you able to handle #33579 (comment) ?

@nodejs-github-bot
Copy link
Contributor

@nodejs-github-bot nodejs-github-bot commented Jun 2, 2020

@targos
Copy link
Member Author

@targos targos commented Jun 2, 2020

There's another SmartOS error:

10:57:10 dtrace: failed to compile script src/v8ustack.d: line 502: failed to resolve V8DBG_CLASS_FIXEDARRAYBASE__LENGTH__SMI: Unknown variable name
10:57:10 make[2]: *** [node_dtrace_ustack.target.mk:26: /home/iojs/build/workspace/node-test-commit-smartos/nodes/smartos18-64/out/Release/obj.target/libnode/src/node_dtrace_ustack.o] Error 1

@targos
Copy link
Member Author

@targos targos commented Jun 16, 2020

@mmarchini
Copy link
Contributor

@mmarchini mmarchini commented Jun 18, 2020

I'll try to send a patch after the TSC meeting.

@mmarchini
Copy link
Contributor

@mmarchini mmarchini commented Jun 25, 2020

Sorry, didn't had time to do it last week and I'm mostly away this week due to Summit + personal stuff, don't think I'll be able to get to it before next Wednesday (or after).

@mmarchini
Copy link
Contributor

@mmarchini mmarchini commented Jun 25, 2020

FWIW I'm not looking at test-postmortem-metadata anymore since I moved metadata changes detection that I use for llnode to https://github.com/mmarchini/llnode-v8-tester, so unless @cjihrig objects I wouldn't mind this test being marked as flaky or removed.

It doesn't solve the dtrace issues though.

nodejs-ci pushed a commit to nodejs/node-v8 that referenced this issue Nov 25, 2020
This commit updates V8's gen-postmortem-metadata.py script
to fix SmartOS compilation for V8 8.4.

PR-URL: nodejs/node#33579
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
nodejs-ci pushed a commit to nodejs/node-v8 that referenced this issue Nov 26, 2020
This commit updates V8's gen-postmortem-metadata.py script
to fix SmartOS compilation for V8 8.4.

PR-URL: nodejs/node#33579
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
nodejs-ci pushed a commit to nodejs/node-v8 that referenced this issue Nov 27, 2020
This commit updates V8's gen-postmortem-metadata.py script
to fix SmartOS compilation for V8 8.4.

PR-URL: nodejs/node#33579
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
nodejs-ci pushed a commit to nodejs/node-v8 that referenced this issue Nov 28, 2020
This commit updates V8's gen-postmortem-metadata.py script
to fix SmartOS compilation for V8 8.4.

PR-URL: nodejs/node#33579
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
nodejs-ci pushed a commit to nodejs/node-v8 that referenced this issue Nov 29, 2020
This commit updates V8's gen-postmortem-metadata.py script
to fix SmartOS compilation for V8 8.4.

PR-URL: nodejs/node#33579
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
targos pushed a commit to targos/node that referenced this issue Nov 29, 2020
This commit updates V8's gen-postmortem-metadata.py script
to fix SmartOS compilation for V8 8.4.

PR-URL: nodejs#33579
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
nodejs-ci pushed a commit to nodejs/node-v8 that referenced this issue Nov 30, 2020
This commit updates V8's gen-postmortem-metadata.py script
to fix SmartOS compilation for V8 8.4.

PR-URL: nodejs/node#33579
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
nodejs-ci pushed a commit to nodejs/node-v8 that referenced this issue Dec 1, 2020
This commit updates V8's gen-postmortem-metadata.py script
to fix SmartOS compilation for V8 8.4.

PR-URL: nodejs/node#33579
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
nodejs-ci pushed a commit to nodejs/node-v8 that referenced this issue Dec 2, 2020
This commit updates V8's gen-postmortem-metadata.py script
to fix SmartOS compilation for V8 8.4.

PR-URL: nodejs/node#33579
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
nodejs-ci pushed a commit to nodejs/node-v8 that referenced this issue Dec 3, 2020
This commit updates V8's gen-postmortem-metadata.py script
to fix SmartOS compilation for V8 8.4.

PR-URL: nodejs/node#33579
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
nodejs-ci pushed a commit to nodejs/node-v8 that referenced this issue Dec 4, 2020
This commit updates V8's gen-postmortem-metadata.py script
to fix SmartOS compilation for V8 8.4.

PR-URL: nodejs/node#33579
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
nodejs-ci pushed a commit to nodejs/node-v8 that referenced this issue Dec 5, 2020
This commit updates V8's gen-postmortem-metadata.py script
to fix SmartOS compilation for V8 8.4.

PR-URL: nodejs/node#33579
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
nodejs-ci pushed a commit to nodejs/node-v8 that referenced this issue Dec 6, 2020
This commit updates V8's gen-postmortem-metadata.py script
to fix SmartOS compilation for V8 8.4.

PR-URL: nodejs/node#33579
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
targos pushed a commit that referenced this issue Dec 6, 2020
This commit updates V8's gen-postmortem-metadata.py script
to fix SmartOS compilation for V8 8.4.

PR-URL: #33579
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
cjihrig added a commit to cjihrig/node that referenced this issue Dec 6, 2020
This commit updates V8's gen-postmortem-metadata.py script
to fix SmartOS compilation for V8 8.4.

PR-URL: nodejs#33579
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
nodejs-ci pushed a commit to nodejs/node-v8 that referenced this issue Dec 7, 2020
This commit updates V8's gen-postmortem-metadata.py script
to fix SmartOS compilation for V8 8.4.

PR-URL: nodejs/node#33579
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
nodejs-ci pushed a commit to nodejs/node-v8 that referenced this issue Dec 8, 2020
This commit updates V8's gen-postmortem-metadata.py script
to fix SmartOS compilation for V8 8.4.

PR-URL: nodejs/node#33579
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
ryzokuken pushed a commit that referenced this issue Dec 21, 2020
This commit updates V8's gen-postmortem-metadata.py script
to fix SmartOS compilation for V8 8.4.

PR-URL: #33579
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Shelley Vohr <codebytere@gmail.com>
BethGriggs added a commit that referenced this issue Apr 20, 2021
Notable Changes:

Deprecations and Removals

- **(SEMVER-MAJOR)** **fs**: remove permissive rmdir recursive
  (Antoine du Hamel) [#37216]
- **(SEMVER-MAJOR)** **fs**: runtime deprecate rmdir recursive option
  (Antoine du Hamel) [#37302]
- **(SEMVER-MAJOR)** **lib**: runtime deprecate access to
  process.binding('http_parser') (James M Snell) [#37813]
- **(SEMVER-MAJOR)** **lib**: runtime deprecate access to
  process.binding('url') (James M Snell) [#37799]
- **(SEMVER-MAJOR)** **lib**: make process.binding('util') return only
  type checkers (Anna Henningsen) [#37819]
- **(SEMVER-MAJOR)** **lib**: runtime deprecate access to
  process.binding('crypto') (James M Snell) [#37790]
- **(SEMVER-MAJOR)** **lib**: runtime deprecate access to
  process.binding('signal_wrap') (James M Snell) [#37800]
- **(SEMVER-MAJOR)** **lib**: runtime deprecate access to
  process.binding('v8') (James M Snell) [#37789]
- **(SEMVER-MAJOR)** **lib**: runtime deprecate access to
  process.binding('async_wrap') (James M Snell) [#37576]
- **(SEMVER-MAJOR)** **module**: remove module.createRequireFromPath
  (Antoine du Hamel) [#37201]
- **(SEMVER-MAJOR)** **module**: runtime deprecate subpath folder
  mappings (Antoine du Hamel) [#37215]
- **(SEMVER-MAJOR)** **module**: runtime deprecate "main" index and
  extension lookups (Antoine du Hamel) [#37206]
- **(SEMVER-MAJOR)** **module**: runtime deprecate invalid package.json
  main entries (Antoine du Hamel) [#37204]
- **(SEMVER-MAJOR)** **process**: runtime deprecate changing
  process.config (James M Snell) [#36902]

Stable Timers Promises API:

The Timers Promises API provides an alternative set of timer functions
that return Promise objects. Added in Node.js v15.0.0, in this release
they graduate from experimental status to stable.

Contributed by James Snell - [#38112]

Toolchain and Compiler Upgrades:

Node.js v16.0.0 will be the first release where we ship prebuilt
binaries for Apple Silicon. While we’ll be providing separate tarballs
for the Intel (`darwin-x64`) and ARM (`darwin-arm64`) architectures the
macOS installer (`.pkg`) will be shipped as a ‘fat’ (multi-architecture)
binary.

- **(SEMVER-MAJOR)** **build**: remove support for Python 2
  (Christian Clauss) [#36691]
- **(SEMVER-MAJOR)** **build**: default PYTHON to python3 in Makefile
  (Michaël Zasso) [#37764]
- **build**: update Makefile to support fat binary (Ash Cripps)
  [#37861]
- **(SEMVER-MAJOR)** **build**: enable ASLR (PIE) on OS X (woodfairy)
  [#35704]
- **build**: warn for gcc versions earlier than 8.3.0 (Richard Lau)
  [#37935]
- **(SEMVER-MAJOR)** **doc**: update minimum supported Xcode to 11
  (Michaël Zasso) [#37872]
- **(SEMVER-MAJOR)** **doc**: update minimum supported GCC to 8.3
  (Michaël Zasso) [#37871]
- **(SEMVER-MAJOR)** **doc**: update AIX to GCC8 for v16.x (Ash Cripps)
  [#37677]
- **tools**: set arch in Distribution.xml (Ash Cripps)
  [#38261]

V8 9.0:

The V8 JavaScript engine is updated to V8 9.0, including performance
tweaks and improvements.

This update also brings the ECMAScript RegExp Match Indices, which
provide the start and end indices of the captured string. The indices
array is available via the `.indices` property on match objects when the
regular expression has the `/d` flag.

Contributed by Michaël Zasso - [#37587]

Other Notable Changes:

- **(SEMVER-MINOR)** **assert**: graduate assert.match and
  assert.doesNotMatch (James M Snell) [#38111]
- **(SEMVER-MAJOR)** **buffer**: expose btoa and atob as globals
  (James M Snell) [#37786]
- **deps**: update llhttp to 6.0.0 (Fedor Indutny)
  [#38277]
- **deps**: upgrade npm to 7.10.0 (Ruy Adorno)
  [#38254]
- **(SEMVER-MAJOR)** **deps**: bump minimum ICU version to 68
  (Michaël Zasso) [#37330]
- **(SEMVER-MINOR)** **http**: add http.ClientRequest.getRawHeaderNames()
  (simov) [#37660]
- **(SEMVER-MAJOR)** **lib,src**: update cluster to use Parent
  (Michael Dawson) [#36478]
- **(SEMVER-MINOR)** **module**: add support for `node:`‑prefixed
  `require(…)` calls (ExE Boss) [#37246]
- **(SEMVER-MINOR)** **perf_hooks**: add histogram option to timerify
  (James M Snell) [#37475]
- **(SEMVER-MINOR)** **repl**: add auto‑completion for `node:`‑prefixed
  `require(…)` calls (ExE Boss) [#37246]
- **(SEMVER-MINOR)** **util**: add getSystemErrorMap() impl
  (eladkeyshawn) [#38101]

Semver-Major Commits:

- **async_hooks**: add thisArg to AsyncResource.bind (James M Snell)
  [#36782]
- **buffer**: expose btoa and atob as globals (James M Snell)
  [#37786]
- **build**: remove support for Python 2 (Christian Clauss)
  [#36691]
- **build**: default PYTHON to python3 in Makefile (Michaël Zasso)
  [#37764]
- **build**: update Makefile to support fat binary (Ash Cripps)
  [#37861]
- **build**: reset embedder string to "-node.0" (Michaël Zasso)
  [#37587]
- **build**: include minimal V8 headers in distribution (Michaël Zasso)
  [#37570]
- **build**: reset embedder string to "-node.0" (Michaël Zasso)
  [#37330]
- **build**: reset embedder string to "-node.0" (Michaël Zasso)
  [#36139]
- **build**: use C++11 ABI with libstdc++ (Anna Henningsen)
  [#36634]
- **build**: enable ASLR (PIE) on OS X (woodfairy)
  [#35704]
- **build**: reset embedder string to "-node.0" (Michaël Zasso)
  [#35700]
- **deps**: V8: cherry-pick 1648e050cade (Michaël Zasso)
  [#37587]
- **deps**: silence irrelevant V8 warnings (Michaël Zasso)
  [#37587]
- **deps**: fix V8 build issue with inline methods (Jiawen Geng)
  [#35415]
- **deps**: make v8.h compatible with VS2015 (Joao Reis)
  [#32116]
- **deps**: V8: forward declaration of `Rtl\*FunctionTable` (Refael
  Ackermann) [#32116]
- **deps**: V8: patch register-arm64.h (Refael Ackermann)
  [#32116]
- **deps**: V8: un-cherry-pick bd019bd (Refael Ackermann)
  [#32116]
- **deps**: update V8 to 9.0.257.11 (Michaël Zasso)
  [#37587]
- **deps**: bump minimum ICU version to 68 (Michaël Zasso)
  [#37330]
- **deps**: V8: cherry-pick 8957d4677aa7 (Michaël Zasso)
  [#37330]
- **deps**: V8: backport a11395433dbd (Michaël Zasso)
  [#37330]
- **deps**: V8: cherry-pick deb0813166f3 (Michaël Zasso)
  [#36139]
- **deps**: V8: cherry-pick 9a6a22874c81 (Michaël Zasso)
  [#36139]
- **deps**: silence irrelevant V8 warning (Michaël Zasso)
  [#37330]
- **deps**: workaround stod() limitations on SmartOS (Colin Ihrig)
  [#37330]
- **deps**: fix V8 build issue with inline methods (Jiawen Geng)
  [#35415]
- **deps**: patch V8 to run on Xcode 8 (Mary Marchini)
  [#32116]
- **deps**: make v8.h compatible with VS2015 (Joao Reis)
  [#32116]
- **deps**: V8: forward declaration of `Rtl\*FunctionTable` (Refael
  Ackermann) [#32116]
- **deps**: V8: patch register-arm64.h (Refael Ackermann)
  [#32116]
- **deps**: patch V8 to run on older XCode versions (Ujjwal Sharma)
  [#32116]
- **deps**: V8: un-cherry-pick bd019bd (Refael Ackermann)
  [#32116]
- **deps**: update V8 to 8.9.255.19 (Michaël Zasso)
  [#37330]
- **deps**: V8: cherry-pick deb0813166f3 (Michaël Zasso)
  [#36139]
- **deps**: V8: cherry-pick 9a6a22874c81 (Michaël Zasso)
  [#36139]
- **deps**: V8: cherry-pick 2059ee813359 (Michaël Zasso)
  [#36139]
- **deps**: V8: cherry-pick bde7ee5473d6 (Michaël Zasso)
  [#36139]
- **deps**: V8: cherry-pick 9a712984025e (Michaël Zasso)
  [#36139]
- **deps**: V8: cherry-pick 0b96e5b0bfb2 (Michaël Zasso)
  [#36139]
- **deps**: V8: cherry-pick fbb28902e049 (Michaël Zasso)
  [#36139]
- **deps**: V8: cherry-pick 821fb3883a8e (Michaël Zasso)
  [#35700]
- **deps**: workaround stod() limitations on SmartOS (Colin Ihrig)
  [#36139]
- **deps**: fix V8 build issue with inline methods (Jiawen Geng)
  [#35415]
- **deps**: patch V8 to run on Xcode 8 (Mary Marchini)
  [#32116]
- **deps**: V8: silence irrelevant warnings (Michaël Zasso)
  [#32116]
- **deps**: make v8.h compatible with VS2015 (Joao Reis)
  [#32116]
- **deps**: V8: forward declaration of `Rtl\*FunctionTable` (Refael
  Ackermann) [#32116]
- **deps**: V8: patch register-arm64.h (Refael Ackermann)
  [#32116]
- **deps**: patch V8 to run on older XCode versions (Ujjwal Sharma)
  [#32116]
- **deps**: V8: un-cherry-pick bd019bd (Refael Ackermann)
  [#32116]
- **deps**: update V8 to 8.8.278.17 (Michaël Zasso)
  [#36139]
- **deps**: V8: cherry-pick 821fb3883a8e (Michaël Zasso)
  [#35700]
- **deps**: V8: cherry-pick 45e49775f5a3 (Michaël Zasso)
  [#35700]
- **deps**: V8: cherry-pick 7b3a27b7ae65 (Michaël Zasso)
  [#35700]
- **deps**: V8: cherry-pick d76abfed3512 (Michaël Zasso)
  [#35415]
- **deps**: fix V8 build issue with inline methods (Jiawen Geng)
  [#35415]
- **deps**: update V8 postmortem metadata script (Colin Ihrig)
  [#35415]
- **deps**: update V8 postmortem metadata script (Colin Ihrig)
  [#33579]
- **deps**: patch V8 to run on Xcode 8 (Mary Marchini)
  [#32116]
- **deps**: V8: silence irrelevant warnings (Michaël Zasso)
  [#32116]
- **deps**: make v8.h compatible with VS2015 (Joao Reis)
  [#32116]
- **deps**: V8: forward declaration of `Rtl\*FunctionTable` (Refael
  Ackermann) [#32116]
- **deps**: V8: patch register-arm64.h (Refael Ackermann)
  [#32116]
- **deps**: patch V8 to run on older XCode versions (Ujjwal Sharma)
  [#32116]
- **deps**: V8: un-cherry-pick bd019bd (Refael Ackermann)
  [#32116]
- **deps**: update V8 to 8.7.220 (Michaël Zasso)
  [#35700]
- **dns**: use url module instead of punycode for IDNA (Antoine du
  Hamel) [#35091]
- **doc**: update minimum supported Xcode to 11 (Michaël Zasso)
  [#37872]
- **doc**: update minimum supported GCC to 8.3 (Michaël Zasso)
  [#37871]
- **doc**: update AIX to GCC8 for v16.x (Ash Cripps)
  [#37677]
- **doc**: fixup http.IncomingMessage deprecation code (Guy Bedford)
  [#36917]
- **doc**: add http.IncomingMessage#connection (Pranshu Srivastava)
  [#33768]
- **events**: change EventTarget handler exception behavior (Nitzan
  Uziely) [#37237]
- **fs**: remove permissive rmdir recursive (Antoine du Hamel)
  [#37216]
- **fs**: add validation for fd and path (Dylan Elliott)
  [#35187]
- **fs**: runtime deprecate rmdir recursive option (Antoine du Hamel)
  [#37302]
- **fs**: fix flag and mode validation (James M Snell)
  [#37480]
- **http**: use objects with null prototype in Agent (Michaël Zasso)
  [#36409]
- **lib**: runtime deprecate access to process.binding('http_parser')
  (James M Snell) [#37813]
- **lib**: runtime deprecate access to process.binding('url') (James M
  Snell) [#37799]
- **lib**: make process.binding('util') return only type checkers (Anna
  Henningsen) [#37819]
- **lib**: runtime deprecate access to process.binding('crypto') (James
  M Snell) [#37790]
- **lib**: runtime deprecate access to process.binding('signal_wrap')
  (James M Snell) [#37800]
- **lib**: runtime deprecate access to process.binding('v8') (James M
  Snell) [#37789]
- **lib**: aggregate errors to avoid error swallowing (Antoine du Hamel)
  [#37460]
- **lib**: load v8_prof_processor dependencies as ESM (Michaël Zasso)
  [#37587]
- **lib**: runtime deprecate access to process.binding('async_wrap')
  (James M Snell) [#37576]
- **lib**: remove usage of url.parse (raisinten)
  [#36853]
- **lib**: add error handling for input stream (rexagod)
  [#31603]
- **lib,src**: update cluster to use Parent (Michael Dawson)
  [#36478]
- **module**: runtime deprecate subpath folder mappings (Antoine du
  Hamel) [#37215]
- **module**: runtime deprecate "main" index and extension lookups
  (Antoine du Hamel) [#37206]
- **module**: runtime deprecate invalid package.json main entries
  (Antoine du Hamel) [#37204]
- **module**: remove module.createRequireFromPath (Antoine du Hamel)
  [#37201]
- **module**: only set cache when finding module succeeds (Yongsheng
  Zhang) [#36642]
- **perf_hooks**: make performance a global (James M Snell)
  [#37970]
- **perf_hooks**: complete overhaul of the implementation (James M
  Snell) [#37136]
- **process**: disallow adding options to
  process.allowedNodeEnvironmentFlags (Antoine du Hamel)
  [#36660]
- **process**: runtime deprecate changing process.config (James M Snell)
  [#36902]
- **readline**: cursorTo throw error on NaN (Zijian Liu)
  [#36379]
- **src**: use non-deprecated GetCreationContext from V8 (Michaël Zasso)
  [#37587]
- **src**: remove V8_FT_ADAPTOR for V8 update (Colin Ihrig)
  [#37587]
- **src**: use non-deprecated V8 module APIs (Michaël Zasso)
  [#37587]
- **src**: update NODE_MODULE_VERSION to 93 (Michaël Zasso)
  [#37587]
- **src**: use non-deprecated V8 module and script APIs (Michaël Zasso)
  [#37330]
- **src**: update NODE_MODULE_VERSION to 92 (Michaël Zasso)
  [#37330]
- **src**: update NODE_MODULE_VERSION to 91 (Michaël Zasso)
  [#36139]
- **src**: mark internally exported functions as explicitly internal
  (Tyler Ang-Wanek) [#37000]
- **src**: inline AsyncCleanupHookHandle in headers (Tyler Ang-Wanek)
  [#37000]
- **src**: fix v8 api deprecation (Jiawen Geng)
  [#35700]
- **src**: update NODE_MODULE_VERSION to 90 (Michaël Zasso)
  [#35700]
- **src**: clean up embedder API (Anna Henningsen)
  [#35897]
- **test**: mark test-return-on-exit as flaky (Michaël Zasso)
  [#36139]
- **test**: mark WASI's test-return-on-exit as flaky (Colin Ihrig)
  [#36139]
- **tools**: update V8 gypfiles for 9.0 (Michaël Zasso)
  [#37587]
- **tools**: update V8 gypfiles for 8.9 (Michaël Zasso)
  [#37330]
- **tools**: update V8 gypfiles for 8.8 (Michaël Zasso)
  [#36139]
- **tools**: update V8 gypfiles for 8.7 (Michaël Zasso)
  [#35700]
- **worker**: send correct error status for worker init (Yash Ladha)
  [#36242]

PR-URL: #37678
@targos targos removed their assignment Oct 31, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backported-to-v14.x build semver-major v8 engine
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet