node-aix-ppc64 22.10.0 → 23.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/CHANGELOG.md +527 -2239
  2. package/README.md +9 -14
  3. package/bin/node +0 -0
  4. package/include/node/common.gypi +3 -3
  5. package/include/node/config.gypi +3 -2
  6. package/include/node/cppgc/allocation.h +10 -11
  7. package/include/node/cppgc/garbage-collected.h +8 -0
  8. package/include/node/cppgc/heap-statistics.h +2 -0
  9. package/include/node/cppgc/internal/api-constants.h +6 -1
  10. package/include/node/cppgc/internal/compiler-specific.h +9 -1
  11. package/include/node/cppgc/internal/gc-info.h +12 -10
  12. package/include/node/cppgc/internal/member-storage.h +6 -0
  13. package/include/node/cppgc/internal/name-trait.h +5 -1
  14. package/include/node/cppgc/name-provider.h +7 -0
  15. package/include/node/node.exp +7790 -6255
  16. package/include/node/node.h +8 -18
  17. package/include/node/node_api.h +12 -0
  18. package/include/node/node_version.h +3 -3
  19. package/include/node/uv/tree.h +3 -250
  20. package/include/node/uv/version.h +2 -2
  21. package/include/node/uv/win.h +2 -2
  22. package/include/node/uv.h +45 -17
  23. package/include/node/v8-array-buffer.h +44 -24
  24. package/include/node/v8-callbacks.h +10 -5
  25. package/include/node/v8-context.h +41 -9
  26. package/include/node/v8-cppgc.h +3 -55
  27. package/include/node/v8-date.h +9 -0
  28. package/include/node/v8-embedder-heap.h +4 -1
  29. package/include/node/v8-exception.h +70 -0
  30. package/include/node/v8-function-callback.h +203 -62
  31. package/include/node/v8-function.h +4 -3
  32. package/include/node/v8-handle-base.h +2 -2
  33. package/include/node/v8-initialization.h +18 -1
  34. package/include/node/v8-internal.h +303 -58
  35. package/include/node/v8-isolate.h +51 -39
  36. package/include/node/v8-local-handle.h +18 -19
  37. package/include/node/v8-message.h +0 -21
  38. package/include/node/v8-microtask-queue.h +0 -5
  39. package/include/node/v8-object.h +284 -35
  40. package/include/node/v8-persistent-handle.h +0 -19
  41. package/include/node/v8-platform.h +21 -35
  42. package/include/node/v8-primitive.h +92 -1
  43. package/include/node/v8-profiler.h +38 -1
  44. package/include/node/v8-promise.h +2 -2
  45. package/include/node/v8-sandbox.h +173 -0
  46. package/include/node/v8-script.h +44 -14
  47. package/include/node/v8-snapshot.h +38 -2
  48. package/include/node/v8-template.h +105 -263
  49. package/include/node/v8-traced-handle.h +4 -15
  50. package/include/node/v8-unwinder.h +2 -1
  51. package/include/node/v8-value.h +3 -2
  52. package/include/node/v8-version.h +3 -3
  53. package/include/node/v8-wasm.h +3 -0
  54. package/include/node/v8config.h +47 -7
  55. package/package.json +1 -1
  56. package/share/doc/node/gdbinit +41 -3
  57. package/share/doc/node/lldb_commands.py +7 -2
  58. package/share/man/man1/node.1 +0 -14
package/README.md CHANGED
@@ -104,11 +104,10 @@ To download `SHASUMS256.txt` using `curl`:
104
104
  curl -O https://nodejs.org/dist/vx.y.z/SHASUMS256.txt
105
105
  ```
106
106
 
107
- To check that a downloaded file matches the checksum, run
108
- it through `sha256sum` with a command such as:
107
+ To check that downloaded files match the checksum, use `sha256sum`:
109
108
 
110
109
  ```bash
111
- grep node-vx.y.z.tar.gz SHASUMS256.txt | sha256sum -c -
110
+ sha256sum -c SHASUMS256.txt --ignore-missing
112
111
  ```
113
112
 
114
113
  For Current and LTS, the GPG detached signature of `SHASUMS256.txt` is in
@@ -320,8 +319,6 @@ For information about the governance of the Node.js project, see
320
319
  **Kohei Ueno** <<kohei.ueno119@gmail.com>> (he/him)
321
320
  * [daeyeon](https://github.com/daeyeon) -
322
321
  **Daeyeon Jeong** <<daeyeon.dev@gmail.com>> (he/him)
323
- * [danielleadams](https://github.com/danielleadams) -
324
- **Danielle Adams** <<adamzdanielle@gmail.com>> (she/her)
325
322
  * [debadree25](https://github.com/debadree25) -
326
323
  **Debadree Chatterjee** <<debadree333@gmail.com>> (he/him)
327
324
  * [deokjinkim](https://github.com/deokjinkim) -
@@ -502,6 +499,8 @@ For information about the governance of the Node.js project, see
502
499
  **Claudio Rodriguez** <<cjrodr@yahoo.com>>
503
500
  * [danbev](https://github.com/danbev) -
504
501
  **Daniel Bevenius** <<daniel.bevenius@gmail.com>> (he/him)
502
+ * [danielleadams](https://github.com/danielleadams) -
503
+ **Danielle Adams** <<adamzdanielle@gmail.com>> (she/her)
505
504
  * [DavidCai1993](https://github.com/DavidCai1993) -
506
505
  **David Cai** <<davidcai1993@yahoo.com>> (he/him)
507
506
  * [davisjam](https://github.com/davisjam) -
@@ -770,12 +769,6 @@ Primary GPG keys for Node.js Releasers (some Releasers sign with subkeys):
770
769
 
771
770
  * **Antoine du Hamel** <<duhamelantoine1995@gmail.com>>
772
771
  `C0D6248439F1D5604AAFFB4021D900FFDB233756`
773
- * **Beth Griggs** <<bethanyngriggs@gmail.com>>
774
- `4ED778F539E3634C779C87C6D7062848A1AB005C`
775
- * **Bryan English** <<bryan@bryanenglish.com>>
776
- `141F07595B7B3FFE74309A937405533BE57C7D57`
777
- * **Danielle Adams** <<adamzdanielle@gmail.com>>
778
- `74F12602B6F1C4E913FAA37AD3A89613643B6201`
779
772
  * **Juan José Arboleda** <<soyjuanarbol@gmail.com>>
780
773
  `DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7`
781
774
  * **Marco Ippolito** <<marcoippolito54@gmail.com>>
@@ -796,9 +789,6 @@ to sign releases):
796
789
 
797
790
  ```bash
798
791
  gpg --keyserver hkps://keys.openpgp.org --recv-keys C0D6248439F1D5604AAFFB4021D900FFDB233756 # Antoine du Hamel
799
- gpg --keyserver hkps://keys.openpgp.org --recv-keys 4ED778F539E3634C779C87C6D7062848A1AB005C # Beth Griggs
800
- gpg --keyserver hkps://keys.openpgp.org --recv-keys 141F07595B7B3FFE74309A937405533BE57C7D57 # Bryan English
801
- gpg --keyserver hkps://keys.openpgp.org --recv-keys 74F12602B6F1C4E913FAA37AD3A89613643B6201 # Danielle Adams
802
792
  gpg --keyserver hkps://keys.openpgp.org --recv-keys DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 # Juan José Arboleda
803
793
  gpg --keyserver hkps://keys.openpgp.org --recv-keys CC68F5A3106FF448322E48ED27F5E38D5B0A215F # Marco Ippolito
804
794
  gpg --keyserver hkps://keys.openpgp.org --recv-keys 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 # Michaël Zasso
@@ -815,12 +805,17 @@ verify a downloaded file.
815
805
 
816
806
  <summary>Other keys used to sign some previous releases</summary>
817
807
 
808
+ * **Beth Griggs** <<bethanyngriggs@gmail.com>>
809
+ `4ED778F539E3634C779C87C6D7062848A1AB005C`
810
+ * **Bryan English** <<bryan@bryanenglish.com>>
811
+ `141F07595B7B3FFE74309A937405533BE57C7D57`
818
812
  * **Chris Dickinson** <<christopher.s.dickinson@gmail.com>>
819
813
  `9554F04D7259F04124DE6B476D5A82AC7E37093B`
820
814
  * **Colin Ihrig** <<cjihrig@gmail.com>>
821
815
  `94AE36675C464D64BAFA68DD7434390BDBE9B9C5`
822
816
  * **Danielle Adams** <<adamzdanielle@gmail.com>>
823
817
  `1C050899334244A8AF75E53792EF661D867B9DFA`
818
+ `74F12602B6F1C4E913FAA37AD3A89613643B6201`
824
819
  * **Evan Lucas** <<evanlucas@me.com>>
825
820
  `B9AE9905FFD7803F25714661B63B535A4C206CA9`
826
821
  * **Gibson Fahnestock** <<gibfahn@gmail.com>>
package/bin/node CHANGED
Binary file
@@ -36,7 +36,7 @@
36
36
 
37
37
  # Reset this number to 0 on major V8 upgrades.
38
38
  # Increment by one for each non-official patch applied to deps/v8.
39
- 'v8_embedder_string': '-node.21',
39
+ 'v8_embedder_string': '-node.11',
40
40
 
41
41
  ##### V8 defaults for Node.js #####
42
42
 
@@ -493,7 +493,7 @@
493
493
  '-fno-rtti',
494
494
  '-fno-exceptions',
495
495
  '-fno-strict-aliasing',
496
- '-std=gnu++17',
496
+ '-std=gnu++20',
497
497
  ],
498
498
  'defines': [ '__STDC_FORMAT_MACROS' ],
499
499
  'ldflags': [ '-rdynamic' ],
@@ -663,7 +663,7 @@
663
663
  ['clang==1', {
664
664
  'xcode_settings': {
665
665
  'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0',
666
- 'CLANG_CXX_LANGUAGE_STANDARD': 'gnu++17', # -std=gnu++17
666
+ 'CLANG_CXX_LANGUAGE_STANDARD': 'gnu++20', # -std=gnu++20
667
667
  'CLANG_CXX_LIBRARY': 'libc++',
668
668
  },
669
669
  }],
@@ -79,6 +79,7 @@
79
79
  'lib/internal/assert.js',
80
80
  'lib/internal/assert/assertion_error.js',
81
81
  'lib/internal/assert/calltracker.js',
82
+ 'lib/internal/assert/myers_diff.js',
82
83
  'lib/internal/assert/utils.js',
83
84
  'lib/internal/async_context_frame.js',
84
85
  'lib/internal/async_hooks.js',
@@ -363,7 +364,7 @@
363
364
  'lib/wasi.js',
364
365
  'lib/worker_threads.js',
365
366
  'lib/zlib.js'],
366
- 'node_module_version': 127,
367
+ 'node_module_version': 131,
367
368
  'node_no_browser_globals': 'false',
368
369
  'node_prefix': '/',
369
370
  'node_release_urlbase': 'https://nodejs.org/download/release/',
@@ -396,7 +397,7 @@
396
397
  'openssl_is_fips': 'false',
397
398
  'openssl_quic': 'true',
398
399
  'ossfuzz': 'false',
399
- 'shlib_suffix': '127.a',
400
+ 'shlib_suffix': '131.a',
400
401
  'single_executable_application': 'true',
401
402
  'target_arch': 'ppc64',
402
403
  'ubsan': 0,
@@ -47,7 +47,7 @@ namespace internal {
47
47
  // Similar to C++17 std::align_val_t;
48
48
  enum class AlignVal : size_t {};
49
49
 
50
- class V8_EXPORT MakeGarbageCollectedTraitInternal {
50
+ class MakeGarbageCollectedTraitInternal {
51
51
  protected:
52
52
  static inline void MarkObjectAsFullyConstructed(const void* payload) {
53
53
  // See api_constants for an explanation of the constants.
@@ -121,16 +121,15 @@ class V8_EXPORT MakeGarbageCollectedTraitInternal {
121
121
  };
122
122
 
123
123
  private:
124
- static void* CPPGC_DEFAULT_ALIGNED Allocate(cppgc::AllocationHandle&, size_t,
125
- GCInfoIndex);
126
- static void* CPPGC_DOUBLE_WORD_ALIGNED Allocate(cppgc::AllocationHandle&,
127
- size_t, AlignVal,
128
- GCInfoIndex);
129
- static void* CPPGC_DEFAULT_ALIGNED Allocate(cppgc::AllocationHandle&, size_t,
130
- GCInfoIndex, CustomSpaceIndex);
131
- static void* CPPGC_DOUBLE_WORD_ALIGNED Allocate(cppgc::AllocationHandle&,
132
- size_t, AlignVal, GCInfoIndex,
133
- CustomSpaceIndex);
124
+ V8_EXPORT static void* CPPGC_DEFAULT_ALIGNED
125
+ Allocate(cppgc::AllocationHandle&, size_t, GCInfoIndex);
126
+ V8_EXPORT static void* CPPGC_DOUBLE_WORD_ALIGNED
127
+ Allocate(cppgc::AllocationHandle&, size_t, AlignVal, GCInfoIndex);
128
+ V8_EXPORT static void* CPPGC_DEFAULT_ALIGNED
129
+ Allocate(cppgc::AllocationHandle&, size_t, GCInfoIndex, CustomSpaceIndex);
130
+ V8_EXPORT static void* CPPGC_DOUBLE_WORD_ALIGNED
131
+ Allocate(cppgc::AllocationHandle&, size_t, AlignVal, GCInfoIndex,
132
+ CustomSpaceIndex);
134
133
 
135
134
  friend class HeapObjectHeader;
136
135
  };
@@ -94,6 +94,14 @@ class GarbageCollectedMixin {
94
94
  public:
95
95
  using IsGarbageCollectedMixinTypeMarker = void;
96
96
 
97
+ // Must use MakeGarbageCollected.
98
+ void* operator new(size_t) = delete;
99
+ void* operator new[](size_t) = delete;
100
+ // The garbage collector is taking care of reclaiming the object.
101
+ // Not override the non-array varaint of `delete` to not conflict with the
102
+ // operator in GarbageCollected above.
103
+ void operator delete[](void*) = delete;
104
+
97
105
  /**
98
106
  * This Trace method must be overriden by objects inheriting from
99
107
  * GarbageCollectedMixin.
@@ -102,6 +102,8 @@ struct HeapStatistics final {
102
102
  size_t resident_size_bytes = 0;
103
103
  /** Amount of memory actually used on the heap. */
104
104
  size_t used_size_bytes = 0;
105
+ /** Memory retained in the page pool, not used directly by the heap. */
106
+ size_t pooled_memory_size_bytes = 0;
105
107
  /** Detail level of this HeapStatistics. */
106
108
  DetailLevel detail_level;
107
109
 
@@ -30,10 +30,15 @@ static constexpr size_t kFullyConstructedBitFieldOffsetFromPayload =
30
30
  // Mask for in-construction bit.
31
31
  static constexpr uint16_t kFullyConstructedBitMask = uint16_t{1};
32
32
 
33
- static constexpr size_t kPageSize = size_t{1} << 17;
33
+ static constexpr size_t kPageSizeBits = 17;
34
+ static constexpr size_t kPageSize = size_t{1} << kPageSizeBits;
34
35
 
35
36
  #if defined(V8_HOST_ARCH_ARM64) && defined(V8_OS_DARWIN)
36
37
  constexpr size_t kGuardPageSize = 0;
38
+ #elif defined(V8_HOST_ARCH_PPC64)
39
+ constexpr size_t kGuardPageSize = 0;
40
+ #elif defined(V8_HOST_ARCH_LOONG64) || defined(V8_HOST_ARCH_MIPS64)
41
+ constexpr size_t kGuardPageSize = 0;
37
42
  #else
38
43
  constexpr size_t kGuardPageSize = 4096;
39
44
  #endif
@@ -5,6 +5,8 @@
5
5
  #ifndef INCLUDE_CPPGC_INTERNAL_COMPILER_SPECIFIC_H_
6
6
  #define INCLUDE_CPPGC_INTERNAL_COMPILER_SPECIFIC_H_
7
7
 
8
+ #include "v8config.h" // NOLINT(build/include_directory)
9
+
8
10
  namespace cppgc {
9
11
 
10
12
  #if defined(__has_attribute)
@@ -21,7 +23,13 @@ namespace cppgc {
21
23
 
22
24
  // [[no_unique_address]] comes in C++20 but supported in clang with -std >=
23
25
  // c++11.
24
- #if CPPGC_HAS_CPP_ATTRIBUTE(no_unique_address)
26
+ #if defined(V8_CC_MSVC) && CPPGC_HAS_CPP_ATTRIBUTE(msvc::no_unique_address)
27
+ // Unfortunately MSVC ignores [[no_unique_address]] (see
28
+ // https://devblogs.microsoft.com/cppblog/msvc-cpp20-and-the-std-cpp20-switch/#msvc-extensions-and-abi),
29
+ // and clang-cl matches it for ABI compatibility reasons. We need to prefer
30
+ // [[msvc::no_unique_address]] when available if we actually want any effect.
31
+ #define CPPGC_NO_UNIQUE_ADDRESS [[msvc::no_unique_address]]
32
+ #elif CPPGC_HAS_CPP_ATTRIBUTE(no_unique_address)
25
33
  #define CPPGC_NO_UNIQUE_ADDRESS [[no_unique_address]]
26
34
  #else
27
35
  #define CPPGC_NO_UNIQUE_ADDRESS
@@ -94,12 +94,11 @@ struct GCInfoTrait final {
94
94
  return index;
95
95
  }
96
96
 
97
- static constexpr bool CheckCallbacksAreDefined() {
97
+ static constexpr void CheckCallbacksAreDefined() {
98
98
  // No USE() macro available.
99
99
  (void)static_cast<TraceCallback>(TraceTrait<T>::Trace);
100
100
  (void)static_cast<FinalizationCallback>(FinalizerTrait<T>::kCallback);
101
101
  (void)static_cast<NameCallback>(NameTrait<T>::GetName);
102
- return true;
103
102
  }
104
103
  };
105
104
 
@@ -127,19 +126,22 @@ struct GCInfoFolding final {
127
126
  // configuration. Only a single GCInfo (for `ResultType` below) will actually
128
127
  // be instantiated but existence (and well-formedness) of all callbacks is
129
128
  // checked.
130
- static constexpr bool kCheckTypeGuardAlwaysTrue =
131
- GCInfoTrait<T>::CheckCallbacksAreDefined() &&
129
+ static constexpr bool WantToFold() {
130
+ if constexpr ((kHasVirtualDestructorAtBase ||
131
+ kBothTypesAreTriviallyDestructible ||
132
+ kHasCustomFinalizerDispatchAtBase) &&
133
+ !kWantsDetailedObjectNames) {
134
+ GCInfoTrait<T>::CheckCallbacksAreDefined();
132
135
  GCInfoTrait<ParentMostGarbageCollectedType>::CheckCallbacksAreDefined();
136
+ return true;
137
+ }
138
+ return false;
139
+ }
133
140
 
134
141
  // Folding would regress name resolution when deriving names from C++
135
142
  // class names as it would just folds a name to the base class name.
136
143
  using ResultType =
137
- std::conditional_t<kCheckTypeGuardAlwaysTrue &&
138
- (kHasVirtualDestructorAtBase ||
139
- kBothTypesAreTriviallyDestructible ||
140
- kHasCustomFinalizerDispatchAtBase) &&
141
- !kWantsDetailedObjectNames,
142
- ParentMostGarbageCollectedType, T>;
144
+ std::conditional_t<WantToFold(), ParentMostGarbageCollectedType, T>;
143
145
  };
144
146
 
145
147
  } // namespace internal
@@ -158,6 +158,12 @@ class V8_TRIVIAL_ABI CompressedPointer final {
158
158
  static V8_INLINE void* Decompress(IntegralType ptr) {
159
159
  CPPGC_DCHECK(CageBaseGlobal::IsSet());
160
160
  const uintptr_t base = CageBaseGlobal::Get();
161
+ return Decompress(ptr, base);
162
+ }
163
+
164
+ static V8_INLINE void* Decompress(IntegralType ptr, uintptr_t base) {
165
+ CPPGC_DCHECK(CageBaseGlobal::IsSet());
166
+ CPPGC_DCHECK(base == CageBaseGlobal::Get());
161
167
  // Treat compressed pointer as signed and cast it to uint64_t, which will
162
168
  // sign-extend it.
163
169
  #if defined(CPPGC_2GB_CAGE)
@@ -121,7 +121,11 @@ class NameTrait final : public NameTraitBase {
121
121
  #undef PRETTY_FUNCTION_VALUE
122
122
 
123
123
  #else // !CPPGC_SUPPORTS_OBJECT_NAMES
124
- return {NameProvider::kHiddenName, true};
124
+ // We wanted to use a class name but were unable to provide one due to
125
+ // compiler limitations or build configuration. As such, return the hidden
126
+ // name with name_was_hidden=false, which will cause this object to be
127
+ // visible in the snapshot.
128
+ return {NameProvider::kHiddenName, false};
125
129
  #endif // !CPPGC_SUPPORTS_OBJECT_NAMES
126
130
  }
127
131
  };
@@ -55,6 +55,13 @@ class V8_EXPORT NameProvider {
55
55
  * Specifies a name for the garbage-collected object. Such names will never
56
56
  * be hidden, as they are explicitly specified by the user of this API.
57
57
  *
58
+ * V8 may call this function while generating a heap snapshot or at other
59
+ * times. If V8 is currently generating a heap snapshot (according to
60
+ * HeapProfiler::IsTakingSnapshot), then the returned string must stay alive
61
+ * until the snapshot generation has completed. Otherwise, the returned string
62
+ * must stay alive forever. If you need a place to store a temporary string
63
+ * during snapshot generation, use HeapProfiler::CopyNameForHeapSnapshot.
64
+ *
58
65
  * @returns a human readable name for the object.
59
66
  */
60
67
  virtual const char* GetHumanReadableName() const = 0;