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

Strict Gregorian calendar interpretation #1

Merged
merged 82 commits into from Mar 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
9642532
test: increase platform timeout zlib-brotli-16gb
RafaelGSS Feb 19, 2024
079c346
doc: add zcbenz to collaborators
zcbenz Feb 20, 2024
57f9298
doc,crypto: further clarify RSA_PKCS1_PADDING support
tniessen Feb 18, 2024
2eaee28
test: skip test-http-correct-hostname on loong64
shipujin Feb 4, 2024
7851af0
lib: create global console properties at snapshot build time
joyeecheung Feb 20, 2024
3e57b93
src: compile code eagerly in snapshot builder
joyeecheung Feb 20, 2024
87855a5
lib: only build the ESM facade for builtins when they are needed
joyeecheung Feb 5, 2024
39e3d21
benchmark: rename startup.js to startup-core.js
joyeecheung Feb 5, 2024
0951e7b
lib: add assertion for user ESM execution
joyeecheung Feb 21, 2024
1263bb6
doc: add mention to GPG_TTY
RafaelGSS Feb 21, 2024
a0ac8bd
doc: reserve 123 for Electron 30
VerteDinde Feb 19, 2024
5dfff3a
doc: add Paolo to TSC members
mhdawson Feb 21, 2024
c1fa929
test: remove test-fs-stat-bigint flaky designation
lpinca Feb 22, 2024
d51a74a
test: mark test-wasi as flaky on Windows on ARM
joyeecheung Feb 22, 2024
5cd2ec8
src: implement v8 array iteration using the new callback-based API
joyeecheung Feb 13, 2024
1a8ae9d
src: use callback-based array iteration in Blob
joyeecheung Feb 13, 2024
f29d2b7
src: simplify embedder entry point execution
joyeecheung Feb 23, 2024
0992002
build: fix building js2c with GN
zcbenz Feb 21, 2024
f22802c
build: fix warning in cares under GN build
zcbenz Feb 7, 2024
b1468d2
build,tools: make addons tests work with GN
zcbenz Nov 16, 2023
f04abdb
build: do not rely on gn_helpers in GN build
zcbenz Jan 11, 2024
281c342
node-api: make napi_get_buffer_info check if passed buffer is valid
Janrupf Feb 23, 2024
0161ad0
inspector: add NodeRuntime.waitingForDebugger event
mmarchini Feb 23, 2024
a5376c5
test: split wasi tests
joyeecheung Feb 24, 2024
a492646
tools: disable automated libuv updates
RafaelGSS Feb 24, 2024
ec7a268
test: fix test-child-process-fork-net
joyeecheung Feb 23, 2024
7f3852c
test: ensure delay in recursive fs watch tests
joyeecheung Feb 23, 2024
56ced19
build: remove `librt` libs link for Android compatibility
MeowShe Feb 25, 2024
d8586db
tools: fix missing [[fallthrough]] in js2c
zcbenz Feb 25, 2024
921b883
tools: update lint-md-dependencies to rollup@4.12.0
nodejs-github-bot Feb 18, 2024
cb13e52
tools: update lint-md-dependencies to rollup@4.12.0
nodejs-github-bot Feb 25, 2024
3b96741
deps: update c-ares to 1.27.0
nodejs-github-bot Feb 25, 2024
db070ee
deps: update corepack to 0.25.2
nodejs-github-bot Feb 25, 2024
765baa7
test: fix test-bootstrap-modules for coverage generation
joyeecheung Feb 20, 2024
1353a7b
test: fix test-debugger-profile for coverage generation
joyeecheung Feb 20, 2024
13f66c2
crypto: update root certificates to NSS 3.98
nodejs-github-bot Feb 25, 2024
bac55f7
deps: update simdjson to 3.7.0
lemire Feb 25, 2024
a4dd041
test: deflake test-http2-large-write-multiple-requests
joyeecheung Feb 23, 2024
9ac98b1
lib: do not access process.noDeprecation at build time
joyeecheung Feb 26, 2024
fc0f2cf
lib,src: extract sourceMappingURL from module
unbyte Feb 6, 2024
4556445
util: add styleText API to text formatting
RafaelGSS Feb 26, 2024
0350609
deps: update ngtcp2 to 1.3.0
nodejs-github-bot Feb 26, 2024
123dc51
doc: change `ExperimentalWarnings` to `ExperimentalWarning`
akaustav Feb 26, 2024
60f09c6
src: stop the profiler and the inspector before snapshot serialization
joyeecheung Feb 20, 2024
6cb8a60
test_runner: add ref methods to mocked timers
marco-ippolito Feb 26, 2024
60ce078
http: fix `close` return value mismatch between doc and implementation
kylo5aby Feb 26, 2024
399654f
events: no stopPropagation call in cancelBubble
Oct 26, 2023
6bb7c4d
tools: update eslint to 8.57.0
nodejs-github-bot Feb 27, 2024
4cae1b9
lib: move encodingsMap to internal/util
joyeecheung Dec 4, 2023
4c46439
crypto: implement crypto.hash()
joyeecheung Jan 5, 2024
7824a79
doc: update guide link for Event Loop
shrujalshah28 Feb 27, 2024
292016c
net: fix connect crash when call destroy in lookup handler
theanarkh Feb 27, 2024
f28ccd3
doc: add website team to sharing project news
UlisesGascon Feb 27, 2024
73f150b
src: simplify direct queries of env vars in C++ land
joyeecheung Feb 27, 2024
a51efa2
stream: fix eventNames() to not return not defined events
IlyasShabi Feb 27, 2024
6c080f6
benchmark: update iterations of benchmark/assert/deepequal-map.js
lucshi Feb 28, 2024
e8de0f5
benchmark: update iterations of assert/deepequal-typedarrays.js
lucshi Feb 28, 2024
a8eaa0d
doc: update node-api/node-addon-api team link to sharing project news
UlisesGascon Feb 28, 2024
2f01f02
doc: remove redundant backquote which breaks sentence
JounQin Feb 28, 2024
8a94177
meta: move one or more collaborators to emeritus
nodejs-github-bot Feb 28, 2024
8e7da60
test: test surrogate pair filenames on windows
mertcanaltin Feb 18, 2024
f4af4b1
perf_hooks: performance milestone time origin timestamp improvement
IlyasShabi Feb 28, 2024
3ef7117
test_runner: serialize 'expected' and 'actual' in isolation
malthe Feb 29, 2024
c08b797
deps: upgrade npm to 10.5.0
npm-cli-bot Feb 29, 2024
f63e8b7
lib: fix http client socket path
theanarkh Feb 29, 2024
40565e9
lib: account for cwd access from snapshot serialization cb
addaleax Feb 29, 2024
30c9181
test: fix unreliable assumption in js-native-api/test_cannot_run_js
joyeecheung Mar 1, 2024
aac5ad9
test_runner: add `test:complete` event to reflect execution order
MoLow Mar 1, 2024
6aa1d98
tools: fix installing node with shared mode
zcbenz Mar 1, 2024
00dc6d9
test_runner: improve `--test-name-pattern` to allow matching single test
mdrobny Mar 1, 2024
d405a60
lib: return directly if udp socket close before lookup
theanarkh Mar 1, 2024
009665f
report: add `--report-exclude-network` option
Ethan-Arrowood Mar 1, 2024
01cb943
src: fix --disable-single-executable-application
joyeecheung Feb 19, 2024
17e0e3e
test: skip SEA tests when SEA generation fails
joyeecheung Feb 26, 2024
1429381
doc: clarify Corepack threat model
aduh95 Mar 1, 2024
8451990
test_runner: add support for null and date value output
malthe Mar 2, 2024
5c97f41
test: remove flaky designation
lpinca Mar 2, 2024
2e2a848
doc,module: clarify hook chain execution sequence
JakobJingleheimer Mar 2, 2024
9930f11
doc: fix actual result of example is different in events
deokjinkim Mar 2, 2024
7f2d61f
v8: implement v8.queryObjects() for memory leak regression testing
joyeecheung Mar 2, 2024
2a70831
doc: add policy for distribution
GeoffreyBooth Mar 3, 2024
0663467
deps: strict Gregorian calendar interpretation
georgemandis Mar 3, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Validating CODEOWNERS rules …
Expand Up @@ -125,7 +125,7 @@

# Startup

/benchmark/misc/startup.js @nodejs/startup
/benchmark/misc/startup-* @nodejs/startup
/lib/internal/bootstrap/* @nodejs/startup
/src/node_builtins* @nodejs/startup
/src/node_realm* @nodejs/startup @nodejs/realm
Expand Down
21 changes: 12 additions & 9 deletions .github/workflows/tools.yml
Expand Up @@ -27,7 +27,7 @@ on:
- googletest
- histogram
- icu
- libuv
# - libuv
- lint-md-dependencies
- llhttp
- minimatch
Expand Down Expand Up @@ -174,14 +174,17 @@ jobs:
cat temp-output
tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true
rm temp-output
- id: libuv
subsystem: deps
label: dependencies
run: |
./tools/dep_updaters/update-libuv.sh > temp-output
cat temp-output
tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true
rm temp-output
# libuv update was disabled because of Feb 14, 2024 security releas
# modified the bundled version of libuv, we cannot automatically update
# libuv without potentially undoing those changes.
# - id: libuv
# subsystem: deps
# label: dependencies
# run: |
# ./tools/dep_updaters/update-libuv.sh > temp-output
# cat temp-output
# tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true
# rm temp-output
- id: lint-md-dependencies
subsystem: tools
label: tools
Expand Down
48 changes: 32 additions & 16 deletions Makefile
Expand Up @@ -187,11 +187,11 @@ config.gypi: configure configure.py src/node_version.h

.PHONY: install
install: all ## Installs node into $PREFIX (default=/usr/local).
$(PYTHON) tools/install.py $@ '$(DESTDIR)' '$(PREFIX)'
$(PYTHON) tools/install.py $@ --dest-dir '$(DESTDIR)' --prefix '$(PREFIX)'

.PHONY: uninstall
uninstall: ## Uninstalls node from $PREFIX (default=/usr/local).
$(PYTHON) tools/install.py $@ '$(DESTDIR)' '$(PREFIX)'
$(PYTHON) tools/install.py $@ --dest-dir '$(DESTDIR)' --prefix '$(PREFIX)'

.PHONY: clean
.NOTPARALLEL: clean
Expand Down Expand Up @@ -379,6 +379,28 @@ test/addons/.docbuildstamp: $(DOCBUILDSTAMP_PREREQS) tools/doc/node_modules
[ $$? -eq 0 ] && touch $@; \
fi

# All files that will be included in headers tarball should be listed as deps
# for generating headers. The list is manually synchronized with install.py.
ADDONS_HEADERS_PREREQS := tools/install.py \
config.gypi common.gypi \
$(wildcard deps/openssl/config/*.h) \
$(wildcard deps/openssl/openssl/include/openssl/*.h) \
$(wildcard deps/uv/include/*.h) \
$(wildcard deps/uv/include/*/*.h) \
$(wildcard deps/v8/include/*.h) \
$(wildcard deps/v8/include/*/*.h) \
deps/zlib/zconf.h deps/zlib/zlib.h \
src/node.h src/node_api.h src/js_native_api.h src/js_native_api_types.h \
src/node_api_types.h src/node_buffer.h src/node_object_wrap.h \
src/node_version.h

ADDONS_HEADERS_DIR = out/$(BUILDTYPE)/addons_headers

# Generate node headers which will be used for building addons.
test/addons/.headersbuildstamp: $(ADDONS_HEADERS_PREREQS)
$(PYTHON) tools/install.py install --headers-only --dest-dir '$(ADDONS_HEADERS_DIR)' --prefix '/'
@touch $@

ADDONS_BINDING_GYPS := \
$(filter-out test/addons/??_*/binding.gyp, \
$(wildcard test/addons/*/binding.gyp))
Expand All @@ -387,16 +409,11 @@ ADDONS_BINDING_SOURCES := \
$(filter-out test/addons/??_*/*.cc, $(wildcard test/addons/*/*.cc)) \
$(filter-out test/addons/??_*/*.h, $(wildcard test/addons/*/*.h))

ADDONS_PREREQS := config.gypi \
deps/npm/node_modules/node-gyp/package.json tools/build-addons.mjs \
deps/uv/include/*.h deps/v8/include/*.h \
src/node.h src/node_buffer.h src/node_object_wrap.h src/node_version.h
ADDONS_PREREQS := test/addons/.headersbuildstamp \
deps/npm/node_modules/node-gyp/package.json tools/build_addons.py

define run_build_addons
env npm_config_loglevel=$(LOGLEVEL) npm_config_nodedir="$$PWD" \
npm_config_python="$(PYTHON)" $(NODE) "$$PWD/tools/build-addons.mjs" \
"$$PWD/deps/npm/node_modules/node-gyp/bin/node-gyp.js" \
$1
env $(PYTHON) "$$PWD/tools/build_addons.py" --loglevel=$(LOGLEVEL) --headers-dir "$(ADDONS_HEADERS_DIR)" $1
touch $2
endef

Expand Down Expand Up @@ -429,8 +446,7 @@ JS_NATIVE_API_BINDING_SOURCES := \
# Implicitly depends on $(NODE_EXE), see the build-js-native-api-tests rule for rationale.
test/js-native-api/.buildstamp: $(ADDONS_PREREQS) \
$(JS_NATIVE_API_BINDING_GYPS) $(JS_NATIVE_API_BINDING_SOURCES) \
src/node_api.h src/node_api_types.h src/js_native_api.h \
src/js_native_api_types.h src/js_native_api_v8.h src/js_native_api_v8_internals.h
src/js_native_api_v8.h src/js_native_api_v8_internals.h
@$(call run_build_addons,"$$PWD/test/js-native-api",$@)

.PHONY: build-js-native-api-tests
Expand All @@ -454,8 +470,7 @@ NODE_API_BINDING_SOURCES := \
# Implicitly depends on $(NODE_EXE), see the build-node-api-tests rule for rationale.
test/node-api/.buildstamp: $(ADDONS_PREREQS) \
$(NODE_API_BINDING_GYPS) $(NODE_API_BINDING_SOURCES) \
src/node_api.h src/node_api_types.h src/js_native_api.h \
src/js_native_api_types.h src/js_native_api_v8.h src/js_native_api_v8_internals.h
src/js_native_api_v8.h src/js_native_api_v8_internals.h
@$(call run_build_addons,"$$PWD/test/node-api",$@)

.PHONY: build-node-api-tests
Expand Down Expand Up @@ -660,9 +675,10 @@ test-addons: test-build test-js-native-api test-node-api
.PHONY: test-addons-clean
.NOTPARALLEL: test-addons-clean
test-addons-clean:
$(RM) -r "$(ADDONS_HEADERS_DIR)"
$(RM) -r test/addons/??_*/
$(RM) -r test/addons/*/build
$(RM) test/addons/.buildstamp test/addons/.docbuildstamp
$(RM) test/addons/.buildstamp test/addons/.docbuildstamp test/addons/.headersbuildstamp
$(MAKE) test-js-native-api-clean
$(MAKE) test-node-api-clean

Expand Down Expand Up @@ -1216,7 +1232,7 @@ $(TARBALL)-headers: release-only
--tag=$(TAG) \
--release-urlbase=$(RELEASE_URLBASE) \
$(CONFIG_FLAGS) $(BUILD_RELEASE_FLAGS)
HEADERS_ONLY=1 $(PYTHON) tools/install.py install '$(TARNAME)' '/'
$(PYTHON) tools/install.py install --headers-only --dest-dir '$(TARNAME)' --prefix '/'
find $(TARNAME)/ -type l | xargs $(RM)
tar -cf $(TARNAME)-headers.tar $(TARNAME)
$(RM) -r $(TARNAME)
Expand Down
12 changes: 8 additions & 4 deletions README.md
Expand Up @@ -196,6 +196,8 @@ For information about the governance of the Node.js project, see
**Robert Nagy** <<ronagy@icloud.com>>
* [ruyadorno](https://github.com/ruyadorno) -
**Ruy Adorno** <<ruyadorno@google.com>> (he/him)
* [ShogunPanda](https://github.com/ShogunPanda) -
**Paolo Insogna** <<paolo@cowtech.it>> (he/him)
* [targos](https://github.com/targos) -
**Michaël Zasso** <<targos@protonmail.com>> (he/him)
* [tniessen](https://github.com/tniessen) -
Expand Down Expand Up @@ -333,8 +335,6 @@ For information about the governance of the Node.js project, see
**Debadree Chatterjee** <<debadree333@gmail.com>> (he/him)
* [deokjinkim](https://github.com/deokjinkim) -
**Deokjin Kim** <<deokjin81.kim@gmail.com>> (he/him)
* [devnexen](https://github.com/devnexen) -
**David Carlier** <<devnexen@gmail.com>>
* [devsnek](https://github.com/devsnek) -
**Gus Caplan** <<me@gus.host>> (they/them)
* [edsadr](https://github.com/edsadr) -
Expand Down Expand Up @@ -413,8 +413,6 @@ For information about the governance of the Node.js project, see
**Mestery** <<mestery@protonmail.com>> (he/him)
* [mhdawson](https://github.com/mhdawson) -
**Michael Dawson** <<midawson@redhat.com>> (he/him)
* [miladfarca](https://github.com/miladfarca) -
**Milad Fa** <<mfarazma@redhat.com>> (he/him)
* [mildsunrise](https://github.com/mildsunrise) -
**Alba Mendez** <<me@alba.sh>> (she/her)
* [MoLow](https://github.com/MoLow) -
Expand Down Expand Up @@ -481,6 +479,8 @@ For information about the governance of the Node.js project, see
**Yash Ladha** <<yash@yashladha.in>> (he/him)
* [ZYSzys](https://github.com/ZYSzys) -
**Yongsheng Zhang** <<zyszys98@gmail.com>> (he/him)
* [zcbenz](https://github.com/zcbenz) -
**Cheng Zhao** <zcbenz@gmail.com> (he/him)

<details>

Expand Down Expand Up @@ -521,6 +521,8 @@ For information about the governance of the Node.js project, see
**David Cai** <<davidcai1993@yahoo.com>> (he/him)
* [davisjam](https://github.com/davisjam) -
**Jamie Davis** <<davisjam@vt.edu>> (he/him)
* [devnexen](https://github.com/devnexen) -
**David Carlier** <<devnexen@gmail.com>>
* [digitalinfinity](https://github.com/digitalinfinity) -
**Hitesh Kanwathirtha** <<digitalinfinity@gmail.com>> (he/him)
* [dmabupt](https://github.com/dmabupt) -
Expand Down Expand Up @@ -603,6 +605,8 @@ For information about the governance of the Node.js project, see
**Nicu Micleușanu** <<micnic90@gmail.com>> (he/him)
* [mikeal](https://github.com/mikeal) -
**Mikeal Rogers** <<mikeal.rogers@gmail.com>>
* [miladfarca](https://github.com/miladfarca) -
**Milad Fa** <<mfarazma@redhat.com>> (he/him)
* [misterdjules](https://github.com/misterdjules) -
**Julien Gilli** <<jgilli@netflix.com>>
* [mmarchini](https://github.com/mmarchini) -
Expand Down
7 changes: 7 additions & 0 deletions SECURITY.md
Expand Up @@ -201,6 +201,13 @@ the community they pose.
that artifact is large enough to impact performance or
cause the runtime to run out of resources.

#### Vulnerabilities affecting software downloaded by Corepack

* Corepack defaults to downloading the latest version of the software requested
by the user, or a specific version requested by the user. For this reason,
Node.js releases won't be affected by such vulnerabilities, users are
responsible to keep the software they use through Corepack up-to-date.

## Assessing experimental features reports

Experimental features are eligible to reports as any other stable feature of
Expand Down
2 changes: 1 addition & 1 deletion benchmark/assert/deepequal-map.js
Expand Up @@ -5,7 +5,7 @@ const { deepEqual, deepStrictEqual, notDeepEqual, notDeepStrictEqual } =
require('assert');

const bench = common.createBenchmark(main, {
n: [5e2],
n: [5e3],
len: [5e2],
strict: [0, 1],
method: [
Expand Down
2 changes: 1 addition & 1 deletion benchmark/assert/deepequal-typedarrays.js
Expand Up @@ -9,7 +9,7 @@ const bench = common.createBenchmark(main, {
'Float32Array',
'Uint32Array',
],
n: [5e2],
n: [25000],
strict: [0, 1],
method: [
'deepEqual',
Expand Down
42 changes: 42 additions & 0 deletions benchmark/crypto/oneshot-hash.js
@@ -0,0 +1,42 @@
'use strict';

const common = require('../common.js');
const { createHash, hash } = require('crypto');
const path = require('path');
const filepath = path.resolve(__dirname, '../../test/fixtures/snapshot/typescript.js');
const fs = require('fs');
const assert = require('assert');

const bench = common.createBenchmark(main, {
length: [1000, 100_000],
method: ['md5', 'sha1', 'sha256'],
type: ['string', 'buffer'],
n: [100_000, 1000],
}, {
combinationFilter: ({ length, n }) => {
return length * n <= 100_000 * 1000;
},
});

function main({ length, type, method, n }) {
let data = fs.readFileSync(filepath);
if (type === 'string') {
data = data.toString().slice(0, length);
} else {
data = Uint8Array.prototype.slice.call(data, 0, length);
}

const oneshotHash = hash ?
(method, input) => hash(method, input, 'hex') :
(method, input) => createHash(method).update(input).digest('hex');
const array = [];
for (let i = 0; i < n; i++) {
array.push(null);
}
bench.start();
for (let i = 0; i < n; i++) {
array[i] = oneshotHash(method, data);
}
bench.end(n);
assert.strictEqual(typeof array[n - 1], 'string');
}
File renamed without changes.
45 changes: 45 additions & 0 deletions benchmark/perf_hooks/time-origin.js
@@ -0,0 +1,45 @@
'use strict';

const assert = require('assert');
const common = require('../common.js');

const bench = common.createBenchmark(main, {
n: [1e6],
method: ['timeOrigin', 'toJSON'],
});

function main({ method, n }) {
switch (method) {
case 'timeOrigin':
benchTimeOrigin(n);
break;
case 'toJSON':
benchToJSON(n);
break;
default:
throw new Error(`Unsupported method ${method}`);
}
}

function benchTimeOrigin(n) {
const arr = [];
for (let i = 0; i < n; ++i) {
arr.push(performance.timeOrigin);
}

bench.start();
for (let i = 0; i < n; i++) {
arr[i] = performance.timeOrigin;
}
bench.end(n);

assert.strictEqual(arr.length, n);
}

function benchToJSON(n) {
bench.start();
for (let i = 0; i < n; i++) {
performance.toJSON();
}
bench.end(n);
}