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

v22.8.0 proposal #54560

Merged
merged 90 commits into from
Sep 3, 2024
Merged

v22.8.0 proposal #54560

merged 90 commits into from
Sep 3, 2024

Conversation

RafaelGSS
Copy link
Member

@RafaelGSS RafaelGSS commented Aug 25, 2024

2024-09-03, Version 22.8.0 (Current), @RafaelGSS

New JS API for compile cache

This release adds a new API module.enableCompileCache() that can be used to enable on-disk code caching of all modules loaded after this API is called.
Previously this could only be enabled by the NODE_COMPILE_CACHE environment variable, so it could only set by end-users.
This API allows tooling and library authors to enable caching of their own code.
This is a built-in alternative to the v8-compile-cache/v8-compile-cache-lib packages,
but have better performance and supports ESM.

Thanks to Joyee Cheung for working on this.

New option for vm.createContext() to create a context with a freezable globalThis

Node.js implements a flavor of vm.createContext() and friends that creates a context without contextifying its global
object when vm.constants.DONT_CONTEXTIFY is used. This is suitable when users want to freeze the context
(impossible when the global is contextified i.e. has interceptors installed) or speed up the global access if they
don't need the interceptor behavior.

Thanks to Joyee Cheung for working on this.

Support for coverage thresholds

Node.js now supports requiring code coverage to meet a specific threshold before the process exits successfully.
To use this feature, you need to enable the --experimental-test-coverage flag.

You can set thresholds for the following types of coverage:

  • Branch coverage: Use --test-coverage-branches=<threshold>
  • Function coverage: Use --test-coverage-functions=<threshold>
  • Line coverage: Use --test-coverage-lines=<threshold>

<threshold> should be an integer between 0 and 100. If an invalid value is provided, a TypeError will be thrown.

If the code coverage fails to meet the specified thresholds for any category, the process will exit with code 1.

For instance, to enforce a minimum of 80% line coverage and 60% branch coverage, you can run:

$ node --experimental-test-coverage --test-coverage-lines=80 --test-coverage-branches=60 example.js

Thanks Aviv Keller for working on this.

Other Notable Changes

  • [1f2cc2fa47] - (SEMVER-MINOR) src,lib: add performance.uvMetricsInfo (Rafael Gonzaga) #54413
  • [1e01bdc0d0] - (SEMVER-MINOR) net: exclude ipv6 loopback addresses from server.listen (Giovanni Bucci) #54264
  • [97fa075c2e] - (SEMVER-MINOR) test_runner: support running tests in process (Colin Ihrig) #53927
  • [858b583c88] - (SEMVER-MINOR) test_runner: defer inheriting hooks until run() (Colin Ihrig) #53927

Commits

  • [94985df9d6] - benchmark: fix benchmark for file path and URL conversion (Early Riser) #54190
  • [ac178b094b] - buffer: truncate instead of throw when writing beyond buffer (Robert Nagy) #54524
  • [afd8c1eb4f] - buffer: allow invalid encoding in from (Robert Nagy) #54533
  • [6f0cf35cd3] - build: reclaim disk space on macOS GHA runner (jakecastelli) #54658
  • [467ac3aec4] - build: don't clean obj.target directory if it doesn't exist (Joyee Cheung) #54337
  • [71fdf961df] - build: update required python version to 3.8 (Aviv Keller) #54358
  • [73604cf1c5] - deps: update nghttp2 to 1.63.0 (Node.js GitHub Bot) #54589
  • [b00c087285] - deps: V8: cherry-pick e74d0f437fcd (Joyee Cheung) #54279
  • [33a6b3c7a9] - deps: backport ICU-22787 to fix ClangCL on Windows (Stefan Stojanovic) #54502
  • [fe56949cbb] - deps: update c-ares to v1.33.1 (Node.js GitHub Bot) #54549
  • [290f6ce619] - deps: update amaro to 0.1.8 (Node.js GitHub Bot) #54520
  • [b5843568b4] - deps: update amaro to 0.1.7 (Node.js GitHub Bot) #54473
  • [9c709209b4] - deps: update undici to 6.19.8 (Node.js GitHub Bot) #54456
  • [a5ce24181b] - deps: sqlite: fix Windows compilation (Colin Ihrig) #54433
  • [3caf29ea88] - deps: update sqlite to 3.46.1 (Node.js GitHub Bot) #54433
  • [68758d4b08] - doc: add support me link for anonrig (Yagiz Nizipli) #54611
  • [f5c5529266] - doc: add alert on REPL from TCP socket (Rafael Gonzaga) #54594
  • [bf824483cd] - doc: fix typo in styleText description (Rafael Gonzaga) #54616
  • [825d933fd4] - doc: add getHeapStatistics() property descriptions (Benji Marinacci) #54584
  • [80e5150160] - doc: fix module compile cache description (沈鸿飞) #54625
  • [7fd033fe56] - doc: run license-builder (github-actions[bot]) #54562
  • [c499913732] - doc: fix information about including coverage files (Aviv Keller) #54527
  • [c3dc83befc] - doc: support collaborators - talk amplification (Michael Dawson) #54508
  • [fc57beaad3] - doc: add note about shasum generation failure (Marco Ippolito) #54487
  • [1800a58f49] - doc: update websocket flag description to reflect stable API status (Yelim Koo) #54482
  • [61affd77a7] - doc: fix capitalization in module.md (shallow-beach) #54488
  • [25419915c7] - doc: add esm examples to node:https (Alfredo González) #54399
  • [83b5efeb54] - doc: reserve ABI 130 for Electron 33 (Calvin) #54383
  • [6ccbd32ae8] - doc, meta: add missing , to BUILDING.md (Aviv Keller) #54409
  • [fc08a9b0cd] - fs: refactor handleTimestampsAndMode to remove redundant call (HEESEUNG) #54369
  • [4a664b5fcb] - lib: respect terminal capabilities on styleText (Rafael Gonzaga) #54389
  • [a9ce2b6a28] - lib: fix emit warning for debuglog.time when disabled (Vinicius Lourenço) #54275
  • [b5a23c9783] - meta: remind users to use a supported version in bug reports (Aviv Keller) #54481
  • [0d7171d8e9] - meta: add more labels to dep-updaters (Aviv Keller) #54454
  • [c4996c189f] - meta: run coverage-windows when vcbuild.bat updated (Aviv Keller) #54412
  • [3cf645768e] - module: use amaro default transform values (Marco Ippolito) #54517
  • [336496b90e] - module: add sourceURL magic comment hinting generated source (Chengzhong Wu) #54402
  • [04f83b50ad] - Revert "net: validate host name for server listen" (jakecastelli) #54554
  • [1e01bdc0d0] - (SEMVER-MINOR) net: exclude ipv6 loopback addresses from server.listen (Giovanni Bucci) #54264
  • [3cd10a3f40] - node-api: remove RefBase and CallbackWrapper (Vladimir Morozov) #53590
  • [72c554abab] - sqlite: return results with null prototype (Michaël Zasso) #54350
  • [e071651bb2] - src: disable fast methods for buffer.write (Michaël Zasso) #54565
  • [f8cbbc685a] - src: use v8::Isolate::GetDefaultLocale() to compute navigator.language (Joyee Cheung) #54279
  • [4baf4637eb] - (SEMVER-MINOR) src: add JS APIs for compile cache and NODE_DISABLE_COMPILE_CACHE (Joyee Cheung) #54501
  • [101e299656] - src: move more crypto_dh.cc code to ncrypto (James M Snell) #54459
  • [e6e1f4e8bd] - src: remove redundant AESCipherMode (Tobias Nießen) #54438
  • [1ff3f63f5e] - src: handle errors correctly in permission.cc (Michaël Zasso) #54541
  • [4938188682] - src: return v8::Object from error constructors (Michaël Zasso) #54541
  • [4578e9485b] - src: use better return types in KVStore (Michaël Zasso) #54539
  • [7d9e994791] - src: change SetEncodedValue to return Maybe<void> (Tobias Nießen) #54443
  • [eef303028f] - src: remove cached data tag from snapshot metadata (Joyee Cheung) #54122
  • [3a74c400d5] - src: improve buffer.transcode performance (Yagiz Nizipli) #54153
  • [909c5320fd] - src: move more crypto code to ncrypto (James M Snell) #54320
  • [9ba75faf5f] - (SEMVER-MINOR) src,lib: add performance.uvMetricsInfo (Rafael Gonzaga) #54413
  • [fffc300c6d] - stream: change stream to use index instead of for...of (Wiyeong Seo) #54474
  • [a4a6ef8d29] - test: fix test-tls-client-auth test for OpenSSL32 (Michael Dawson) #54610
  • [76345a5d7c] - test: update TLS test for OpenSSL 3.2 (Richard Lau) #54612
  • [522d5a359d] - test: run V8 Fast API tests in release mode too (Michaël Zasso) #54570
  • [edbecf5209] - test: increase key size for ca2-cert.pem (Michael Dawson) #54599
  • [bc976cfc93] - test: update test-abortsignal-cloneable to use node:test (James M Snell) #54581
  • [9f1ce732a8] - test: update test-assert-typedarray-deepequal to use node:test (James M Snell) #54585
  • [c74f2aeb92] - test: update test-assert to use node:test (James M Snell) #54585
  • [a0be95e4cc] - test: merge ongc and gcutil into gc.js (tannal) #54355
  • [c10aff665e] - test: move a couple of tests over to using node:test (James M Snell) #54582
  • [dbbc790949] - test: update test-aborted-util to use node:test (James M Snell) #54578
  • [64442fce6b] - test: refactor test-abortcontroller to use node:test (James M Snell) #54574
  • [72345dee1c] - test: fix embedding test for Windows (Vladimir Morozov) #53659
  • [846e2b2896] - test: refactor test_runner tests to change default reporter (Colin Ihrig) #54547
  • [b5eb24c86a] - test: force spec reporter in test-runner-watch-mode.mjs (Colin Ihrig) #54538
  • [66ae9f4c0a] - test: use valid hostnames (Luigi Pinca) #54556
  • [02d664b75f] - test: fix improper path to URL conversion (Antoine du Hamel) #54509
  • [8a4f8a9eff] - test: add tests for runner coverage with different stdout column widths (Pietro Marchini) #54494
  • [b0ed8dbb2f] - test: prevent V8 from writing into the system's tmpdir (Michaël Zasso) #54395
  • [5ee234a5a6] - test,crypto: update WebCryptoAPI WPT (Filip Skokan) #54593
  • [a4bebf8559] - test_runner: ensure test watcher picks up new test files (Pietro Marchini) #54225
  • [d4310fe9c1] - (SEMVER-MINOR) test_runner: add support for coverage thresholds (Aviv Keller) #54429
  • [0cf78aa24b] - test_runner: refactor mock_loader (Antoine du Hamel) #54223
  • [97fa075c2e] - (SEMVER-MINOR) test_runner: support running tests in process (Colin Ihrig) #53927
  • [858b583c88] - (SEMVER-MINOR) test_runner: defer inheriting hooks until run() (Colin Ihrig) #53927
  • [45b0250692] - test_runner: account for newline in source maps (Colin Ihrig) #54444
  • [1c29e74d30] - test_runner: make mock.module's specifier consistent with import() (Antoine du Hamel) #54416
  • [cbe30a02a3] - test_runner: finish build phase before running tests (Colin Ihrig) #54423
  • [8a4b26f00c] - timers: fix validation (Paolo Insogna) #54404
  • [38798140c4] - tools: remove unused python files (Aviv Keller) #53928
  • [da6c61def8] - tools: add swc license (Marco Ippolito) #54462
  • [16d4c437e1] - typings: provide internal types for wasi bindings (Andrew Moon) #54119
  • [fe5666f006] - vm: return all own names and symbols in property enumerator interceptor (Chengzhong Wu) #54522
  • [db80eac496] - (SEMVER-MINOR) vm: introduce vanilla contexts via vm.constants.DONT_CONTEXTIFY (Joyee Cheung) #54394
  • [8ffdd1e2b2] - zlib: simplify validators (Yagiz Nizipli) #54442

clavin and others added 11 commits August 24, 2024 19:17
Backport-PR-URL: #54455
PR-URL: #54383
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Moshe Atlow <[email protected]>
Reviewed-By: Jake Yuesong Li <[email protected]>
PR-URL: #54399
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Trivikram Kamat <[email protected]>
PR-URL: #54409
Reviewed-By: Antoine du Hamel <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
PR-URL: #54412
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Marco Ippolito <[email protected]>
This commit updates the test runner to wait for suites to finish
building before starting any tests. This is necessary when test
filtering is enabled, as suites may transition from filtered to
not filtered depending on what is inside of them.

Fixes: #54084
Fixes: #54154
PR-URL: #54423
Reviewed-By: Benjamin Gruenbaum <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Moshe Atlow <[email protected]>
Reviewed-By: Jake Yuesong Li <[email protected]>
PR-URL: #54153
Reviewed-By: Daniel Lemire <[email protected]>
Reviewed-By: Benjamin Gruenbaum <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Minwoo Jung <[email protected]>
Reviewed-By: James M Snell <[email protected]>
The previous implementation was trying to follow both `require` and
`import` conventions. It is not practical to try to follow both,
and aligning with `import()` seems to be what makes the most sense.

PR-URL: #54416
Reviewed-By: Benjamin Gruenbaum <[email protected]>
Reviewed-By: Moshe Atlow <[email protected]>
Source map is not necessary in strip-only mode. However, to map the
source file in debuggers to the original TypeScript source, add a
sourceURL magic comment to hint that it is a generated source.

PR-URL: #54402
Reviewed-By: Antoine du Hamel <[email protected]>
Reviewed-By: Kohei Ueno <[email protected]>
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
This commit updates the source mapping logic in the test runner
to account for newline characters that are not included in line
length calculations.

Co-authored-by: Simon Chan <[email protected]>
Fixes: #54240
PR-URL: #54444
Reviewed-By: Jake Yuesong Li <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Benjamin Gruenbaum <[email protected]>
Reviewed-By: Moshe Atlow <[email protected]>
This commit updates the way the test runner computes inherited
hooks. Instead of computing them when the Test/Suite is
constructed, they are now computed just prior to running the
Test/Suite. The reason is because when multiple test files are
run in the same process, it is possible for the inherited hooks
to change as more files are loaded.

PR-URL: #53927
Fixes: #51548
Reviewed-By: Benjamin Gruenbaum <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
@RafaelGSS RafaelGSS added the release Issues and PRs related to Node.js releases. label Aug 25, 2024
@nodejs-github-bot
Copy link
Collaborator

Review requested:

  • @nodejs/actions
  • @nodejs/security-wg
  • @nodejs/tsc
  • @nodejs/typescript
  • @nodejs/v8-update

@nodejs-github-bot nodejs-github-bot added build Issues and PRs related to build files or the CI. dependencies Pull requests that update a dependency file. doc Issues and PRs related to the documentations. meta Issues and PRs related to the general management of the project. needs-ci PRs that need a full CI run. sqlite Issues and PRs related to the SQLite subsystem. strip-types Issues or PRs related to strip-types support v22.x v22.x Issues that can be reproduced on v22.x or PRs targeting the v22.x-staging branch. labels Aug 25, 2024
RafaelGSS added a commit that referenced this pull request Aug 25, 2024
Notable changes:

net:
  * (SEMVER-MINOR) exclude ipv6 loopback addresses from server.listen (Giovanni Bucci) #54264
test_runner:
  * (SEMVER-MINOR) add support for coverage thresholds (Aviv Keller) #54429
  * (SEMVER-MINOR) support running tests in process (Colin Ihrig) #53927
  * (SEMVER-MINOR) defer inheriting hooks until run() (Colin Ihrig) #53927

PR-URL: #54560
@RafaelGSS RafaelGSS removed doc Issues and PRs related to the documentations. build Issues and PRs related to build files or the CI. meta Issues and PRs related to the general management of the project. dependencies Pull requests that update a dependency file. v22.x v22.x Issues that can be reproduced on v22.x or PRs targeting the v22.x-staging branch. sqlite Issues and PRs related to the SQLite subsystem. strip-types Issues or PRs related to strip-types support labels Aug 25, 2024
@github-actions github-actions bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Sep 1, 2024
@nodejs-github-bot

This comment was marked as outdated.

@nodejs-github-bot
Copy link
Collaborator

@nodejs-github-bot
Copy link
Collaborator

@RedYetiDev
Copy link
Member

Nit: "Support to coverage thresholds" -> "Support for coverage thresholds"

@Roemerb
Copy link

Roemerb commented Sep 2, 2024

Is 22.8.0 still expected to go out today? We are awaiting it as (hopefully) a fix for #54518 (comment)

@RafaelGSS
Copy link
Member Author

Is 22.8.0 still expected to go out today? We are awaiting it as (hopefully) a fix for #54518 (comment)

Yes. We're doing our best. Currently, waiting for CI to finish.

@nodejs-github-bot
Copy link
Collaborator

@nodejs-github-bot
Copy link
Collaborator

RafaelGSS added a commit that referenced this pull request Sep 2, 2024
Notable changes:

net:
  * (SEMVER-MINOR) exclude ipv6 loopback addresses from server.listen (Giovanni Bucci) #54264
src:
  * (SEMVER-MINOR) add JS APIs for compile cache and NODE_DISABLE_COMPILE_CACHE (Joyee Cheung) #54501
src,lib:
  * (SEMVER-MINOR) add performance.uvMetricsInfo (Rafael Gonzaga) #54413
test_runner:
  * (SEMVER-MINOR) add support for coverage thresholds (Aviv Keller) #54429
  * (SEMVER-MINOR) support running tests in process (Colin Ihrig) #53927
  * (SEMVER-MINOR) defer inheriting hooks until run() (Colin Ihrig) #53927
vm:
  * (SEMVER-MINOR) introduce vanilla contexts via vm.constants.DONT_CONTEXTIFY (Joyee Cheung) #54394

PR-URL: #54560
@RafaelGSS RafaelGSS added the request-ci Add this label to start a Jenkins CI on a PR. label Sep 2, 2024
@github-actions github-actions bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Sep 2, 2024
@nodejs-github-bot
Copy link
Collaborator

@RafaelGSS
Copy link
Member Author

Unlikely to be released today (02/09). CI still running.

Notable changes:

net:
  * (SEMVER-MINOR) exclude ipv6 loopback addresses from server.listen (Giovanni Bucci) #54264
src:
  * (SEMVER-MINOR) add JS APIs for compile cache and NODE_DISABLE_COMPILE_CACHE (Joyee Cheung) #54501
src,lib:
  * (SEMVER-MINOR) add performance.uvMetricsInfo (Rafael Gonzaga) #54413
test_runner:
  * (SEMVER-MINOR) add support for coverage thresholds (Aviv Keller) #54429
  * (SEMVER-MINOR) support running tests in process (Colin Ihrig) #53927
  * (SEMVER-MINOR) defer inheriting hooks until run() (Colin Ihrig) #53927
vm:
  * (SEMVER-MINOR) introduce vanilla contexts via vm.constants.DONT_CONTEXTIFY (Joyee Cheung) #54394

PR-URL: #54560
@nodegin
Copy link

nodegin commented Sep 3, 2024

Hopefully this can be landed today (3/9)
The buffer error have been preventing us from deploying for a week.

@RafaelGSS RafaelGSS merged commit 78ee90e into v22.x Sep 3, 2024
22 of 23 checks passed
@RafaelGSS RafaelGSS deleted the v22.8.0-proposal branch September 3, 2024 13:41
RafaelGSS added a commit that referenced this pull request Sep 3, 2024
RafaelGSS added a commit that referenced this pull request Sep 3, 2024
Notable changes:

net:
  * (SEMVER-MINOR) exclude ipv6 loopback addresses from server.listen (Giovanni Bucci) #54264
src:
  * (SEMVER-MINOR) add JS APIs for compile cache and NODE_DISABLE_COMPILE_CACHE (Joyee Cheung) #54501
src,lib:
  * (SEMVER-MINOR) add performance.uvMetricsInfo (Rafael Gonzaga) #54413
test_runner:
  * (SEMVER-MINOR) add support for coverage thresholds (Aviv Keller) #54429
  * (SEMVER-MINOR) support running tests in process (Colin Ihrig) #53927
  * (SEMVER-MINOR) defer inheriting hooks until run() (Colin Ihrig) #53927
vm:
  * (SEMVER-MINOR) introduce vanilla contexts via vm.constants.DONT_CONTEXTIFY (Joyee Cheung) #54394

PR-URL: #54560
RafaelGSS added a commit to RafaelGSS/nodejs.org that referenced this pull request Sep 3, 2024
RafaelGSS added a commit to nodejs/nodejs.org that referenced this pull request Sep 3, 2024
joeeames pushed a commit to joeeames/nodejs.org that referenced this pull request Sep 24, 2024
louwers pushed a commit to louwers/node that referenced this pull request Nov 2, 2024
Notable changes:

net:
  * (SEMVER-MINOR) exclude ipv6 loopback addresses from server.listen (Giovanni Bucci) nodejs#54264
src:
  * (SEMVER-MINOR) add JS APIs for compile cache and NODE_DISABLE_COMPILE_CACHE (Joyee Cheung) nodejs#54501
src,lib:
  * (SEMVER-MINOR) add performance.uvMetricsInfo (Rafael Gonzaga) nodejs#54413
test_runner:
  * (SEMVER-MINOR) add support for coverage thresholds (Aviv Keller) nodejs#54429
  * (SEMVER-MINOR) support running tests in process (Colin Ihrig) nodejs#53927
  * (SEMVER-MINOR) defer inheriting hooks until run() (Colin Ihrig) nodejs#53927
vm:
  * (SEMVER-MINOR) introduce vanilla contexts via vm.constants.DONT_CONTEXTIFY (Joyee Cheung) nodejs#54394

PR-URL: nodejs#54560
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs-ci PRs that need a full CI run. release Issues and PRs related to Node.js releases. v22.x v22.x Issues that can be reproduced on v22.x or PRs targeting the v22.x-staging branch.
Projects
None yet
Development

Successfully merging this pull request may close these issues.