Skip to content

Commit baa6ee1

Browse files
authored
Merge branch 'nodejs:main' into diag/suppression-als
2 parents 716a4eb + 09c603f commit baa6ee1

170 files changed

Lines changed: 2589 additions & 678 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.mailmap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ Mathias Buus <mathiasbuus@gmail.com> <m@ge.tt>
350350
Mathias Pettersson <mape@mape.me>
351351
Matt Lang <matt@mediasuite.co.nz>
352352
Matt Reed <matthewreed26@gmail.com>
353-
Matteo Collina <matteo.collina@gmail.com> <hello@matteocollina.com>
353+
Matteo Collina <hello@matteocollina.com> <matteo.collina@gmail.com>
354354
Matthew Lye <muddletoes@hotmail.com>
355355
Matthew Turner <matty_t47@hotmail.com> <ramesius@users.noreply.github.com>
356356
Matthias Bastian <dev@matthias-bastian.de> <piepmatz@users.noreply.github.com>

CHANGELOG.md

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
Select a Node.js version below to view the changelog history:
44

55
* [Node.js 26](doc/changelogs/CHANGELOG_V26.md) **Current**
6-
* [Node.js 25](doc/changelogs/CHANGELOG_V25.md) Current
6+
* [Node.js 25](doc/changelogs/CHANGELOG_V25.md) End-of-Life
77
* [Node.js 24](doc/changelogs/CHANGELOG_V24.md) **Long Term Support**
88
* [Node.js 23](doc/changelogs/CHANGELOG_V23.md) End-of-Life
99
* [Node.js 22](doc/changelogs/CHANGELOG_V22.md) Long Term Support
@@ -36,33 +36,17 @@ release.
3636
<table>
3737
<tr>
3838
<th title="Current"><a href="doc/changelogs/CHANGELOG_V26.md">26</a> (Current)</th>
39-
<th title="Current"><a href="doc/changelogs/CHANGELOG_V25.md">25</a> (Current)</th>
4039
<th title="LTS Until 2028-04"><a href="doc/changelogs/CHANGELOG_V24.md">24</a> (LTS)</th>
4140
<th title="LTS Until 2027-04"><a href="doc/changelogs/CHANGELOG_V22.md">22</a> (LTS)</th>
4241
</tr>
4342
<tr>
4443
<td valign="top">
45-
<b><a href="doc/changelogs/CHANGELOG_V26.md#26.2.0">26.2.0</a></b><br/>
44+
<b><a href="doc/changelogs/CHANGELOG_V26.md#26.3.0">26.3.0</a></b><br/>
45+
<a href="doc/changelogs/CHANGELOG_V26.md#26.2.0">26.2.0</a><br/>
4646
<a href="doc/changelogs/CHANGELOG_V26.md#26.1.0">26.1.0</a><br/>
4747
<a href="doc/changelogs/CHANGELOG_V26.md#26.0.0">26.0.0</a><br/>
4848
</td>
4949
<td valign="top">
50-
<b><a href="doc/changelogs/CHANGELOG_V25.md#25.9.0">25.9.0</a></b><br/>
51-
<a href="doc/changelogs/CHANGELOG_V25.md#25.8.2">25.8.2</a><br/>
52-
<a href="doc/changelogs/CHANGELOG_V25.md#25.8.1">25.8.1</a><br/>
53-
<a href="doc/changelogs/CHANGELOG_V25.md#25.8.0">25.8.0</a><br/>
54-
<a href="doc/changelogs/CHANGELOG_V25.md#25.7.0">25.7.0</a><br/>
55-
<a href="doc/changelogs/CHANGELOG_V25.md#25.6.1">25.6.1</a><br/>
56-
<a href="doc/changelogs/CHANGELOG_V25.md#25.6.0">25.6.0</a><br/>
57-
<a href="doc/changelogs/CHANGELOG_V25.md#25.5.0">25.5.0</a><br/>
58-
<a href="doc/changelogs/CHANGELOG_V25.md#25.4.0">25.4.0</a><br/>
59-
<a href="doc/changelogs/CHANGELOG_V25.md#25.3.0">25.3.0</a><br/>
60-
<a href="doc/changelogs/CHANGELOG_V25.md#25.2.1">25.2.1</a><br/>
61-
<a href="doc/changelogs/CHANGELOG_V25.md#25.2.0">25.2.0</a><br/>
62-
<a href="doc/changelogs/CHANGELOG_V25.md#25.1.0">25.1.0</a><br/>
63-
<a href="doc/changelogs/CHANGELOG_V25.md#25.0.0">25.0.0</a><br/>
64-
</td>
65-
<td valign="top">
6650
<b><a href="doc/changelogs/CHANGELOG_V24.md#24.16.0">24.16.0</a></b><br/>
6751
<a href="doc/changelogs/CHANGELOG_V24.md#24.15.0">24.15.0</a><br/>
6852
<a href="doc/changelogs/CHANGELOG_V24.md#24.14.1">24.14.1</a><br/>
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
'use strict';
2+
3+
const common = require('../common.js');
4+
5+
const bench = common.createBenchmark(main, {
6+
size: [64, 1024, 16384, 262144, 4194304],
7+
content: ['ascii', 'latin1', 'utf8_mixed', 'latin1_then_cjk'],
8+
n: [1e4],
9+
});
10+
11+
function buildBuffer(kind, size) {
12+
if (kind === 'ascii') {
13+
return Buffer.alloc(size, 0x61);
14+
}
15+
if (kind === 'latin1') {
16+
const pair = Buffer.from([0xC3, 0xA9]);
17+
const buf = Buffer.alloc(size);
18+
for (let i = 0; i + 2 <= size; i += 2) pair.copy(buf, i);
19+
return buf;
20+
}
21+
if (kind === 'utf8_mixed') {
22+
const cjk = Buffer.from([0xE4, 0xB8, 0xAD]);
23+
const buf = Buffer.alloc(size);
24+
let i = 0;
25+
while (i + 4 <= size) {
26+
buf[i++] = 0x61;
27+
cjk.copy(buf, i);
28+
i += 3;
29+
}
30+
return buf;
31+
}
32+
if (kind === 'latin1_then_cjk') {
33+
const pair = Buffer.from([0xC3, 0xA9]);
34+
const cjk = Buffer.from([0xE4, 0xB8, 0xAD]);
35+
const buf = Buffer.alloc(size);
36+
const mid = (size >> 1) & ~1;
37+
for (let i = 0; i + 2 <= mid; i += 2) pair.copy(buf, i);
38+
cjk.copy(buf, mid);
39+
for (let i = mid + 3; i + 2 <= size; i += 2) pair.copy(buf, i);
40+
return buf;
41+
}
42+
throw new Error('unknown content: ' + kind);
43+
}
44+
45+
function main({ n, size, content }) {
46+
const buf = buildBuffer(content, size);
47+
48+
bench.start();
49+
for (let i = 0; i < n; i++) {
50+
buf.toString('utf8');
51+
}
52+
bench.end(n);
53+
}

benchmark/ffi/add-f64.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const bench = common.createBenchmark(main, {
1313
ensureFixtureLibrary();
1414

1515
const { lib, functions } = ffi.dlopen(libraryPath, {
16-
add_f64: { result: 'f64', parameters: ['f64', 'f64'] },
16+
add_f64: { return: 'f64', arguments: ['f64', 'f64'] },
1717
});
1818

1919
const add = functions.add_f64;

benchmark/ffi/add-i32.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const bench = common.createBenchmark(main, {
1313
ensureFixtureLibrary();
1414

1515
const { lib, functions } = ffi.dlopen(libraryPath, {
16-
add_i32: { result: 'i32', parameters: ['i32', 'i32'] },
16+
add_i32: { return: 'i32', arguments: ['i32', 'i32'] },
1717
});
1818

1919
const add = functions.add_i32;

benchmark/ffi/getpid.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const bench = common.createBenchmark(main, {
1010
});
1111

1212
const { lib, functions } = ffi.dlopen(null, {
13-
uv_os_getpid: { result: 'i32', parameters: [] },
13+
uv_os_getpid: { return: 'i32', arguments: [] },
1414
});
1515

1616
const getpid = functions.uv_os_getpid;

benchmark/ffi/many-args.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const bench = common.createBenchmark(main, {
1313
ensureFixtureLibrary();
1414

1515
const { lib, functions } = ffi.dlopen(libraryPath, {
16-
sum_6_i32: { result: 'i32', parameters: ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'] },
16+
sum_6_i32: { return: 'i32', arguments: ['i32', 'i32', 'i32', 'i32', 'i32', 'i32'] },
1717
});
1818

1919
const fn = functions.sum_6_i32;

benchmark/ffi/pointer-bigint.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const bench = common.createBenchmark(main, {
1313
ensureFixtureLibrary();
1414

1515
const { lib, functions } = ffi.dlopen(libraryPath, {
16-
pointer_to_usize: { result: 'u64', parameters: ['pointer'] },
16+
pointer_to_usize: { return: 'u64', arguments: ['pointer'] },
1717
});
1818

1919
const fn = functions.pointer_to_usize;

benchmark/ffi/sum-buffer.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ const bench = common.createBenchmark(main, {
1414
ensureFixtureLibrary();
1515

1616
const { lib, functions } = ffi.dlopen(libraryPath, {
17-
sum_buffer: { result: 'u64', parameters: ['pointer', 'u64'] },
17+
sum_buffer: { return: 'u64', arguments: ['pointer', 'u64'] },
1818
});
1919

2020
function main({ n, size }) {

configure.py

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
valid_mips_float_abi = ('soft', 'hard')
5656
valid_intl_modes = ('none', 'small-icu', 'full-icu', 'system-icu')
5757
icu_versions = json.loads((tools_path / 'icu' / 'icu_versions.json').read_text(encoding='utf-8'))
58-
maglev_enabled_architectures = ('x64', 'arm', 'arm64', 's390x')
58+
maglev_enabled_architectures = ('x64', 'arm', 'arm64', 'ppc64', 's390x')
5959

6060
# builtins may be removed later if they have been disabled by options
6161
shareable_builtins = {'undici/undici': 'deps/undici/undici.js',
@@ -1818,7 +1818,7 @@ def configure_node_lib_files(o):
18181818
o['variables']['node_library_files'] = SearchFiles('lib', 'js')
18191819

18201820
def configure_node_cctest_sources(o):
1821-
o['variables']['node_cctest_sources'] = [ 'src/node_snapshot_stub.cc' ] + \
1821+
o['variables']['node_cctest_sources'] = [] + \
18221822
SearchFiles('test/cctest', 'cc') + \
18231823
SearchFiles('test/cctest', 'h')
18241824

@@ -1886,10 +1886,6 @@ def configure_node(o):
18861886
o['variables']['arm_fpu'] = options.arm_fpu or 'neon'
18871887

18881888
if options.node_snapshot_main is not None:
1889-
if options.shared:
1890-
# This should be possible to fix, but we will need to refactor the
1891-
# libnode target to avoid building it twice.
1892-
error('--node-snapshot-main is incompatible with --shared')
18931889
if options.without_node_snapshot:
18941890
error('--node-snapshot-main is incompatible with ' +
18951891
'--without-node-snapshot')
@@ -1900,17 +1896,15 @@ def configure_node(o):
19001896
if options.without_node_snapshot or options.node_builtin_modules_path:
19011897
o['variables']['node_use_node_snapshot'] = 'false'
19021898
else:
1903-
o['variables']['node_use_node_snapshot'] = b(
1904-
not cross_compiling and not options.shared)
1899+
o['variables']['node_use_node_snapshot'] = b(not cross_compiling)
19051900

19061901
# Do not use code cache when Node.js is built for collecting coverage of itself, this allows more
19071902
# precise coverage for the JS built-ins.
19081903
if options.without_node_code_cache or options.without_node_snapshot or options.node_builtin_modules_path or options.coverage:
19091904
o['variables']['node_use_node_code_cache'] = 'false'
19101905
else:
19111906
# TODO(refack): fix this when implementing embedded code-cache when cross-compiling.
1912-
o['variables']['node_use_node_code_cache'] = b(
1913-
not cross_compiling and not options.shared)
1907+
o['variables']['node_use_node_code_cache'] = b(not cross_compiling)
19141908

19151909
if options.write_snapshot_as_array_literals is not None:
19161910
o['variables']['node_write_snapshot_as_array_literals'] = b(options.write_snapshot_as_array_literals)
@@ -2175,7 +2169,7 @@ def configure_v8(o, configs):
21752169
o['variables']['v8_promise_internal_field_count'] = 1 # Add internal field to promises for async hooks.
21762170
o['variables']['v8_use_siphash'] = 0 if options.without_siphash else 1
21772171
o['variables']['v8_enable_maglev'] = B(not options.v8_disable_maglev and
2178-
flavor != 'zos' and
2172+
flavor not in ('aix', 'os400', 'zos') and
21792173
o['variables']['target_arch'] in maglev_enabled_architectures)
21802174
o['variables']['v8_enable_pointer_compression'] = 1 if options.enable_pointer_compression else 0
21812175
# Using the sandbox requires always allocating array buffer backing stores in the sandbox.

0 commit comments

Comments
 (0)