Weekly GitHub Report for Node: April 14, 2025 - April 21, 2025 (12:02:50)
Weekly GitHub Report for Node
Thank you for subscribing to our weekly newsletter! Each week, we deliver a comprehensive summary of your GitHub project's latest activity right to your inbox, including an overview of your project's issues, pull requests, contributors, and commit activity.
Table of Contents
I. News
1.1 Recent Version Releases:
The current version of this repository is v23.10.0
1.2 Version Information:
On March 13, 2025, a new version of Node.js was released, introducing the --experimental-config-file
feature, which allows developers to use a JSON configuration file to streamline the use of multiple flags, enhancing the developer experience. Notable updates include the addition of the tls.getCACertificates()
function, the v8.getCppHeapStatistics()
method, and several improvements in error handling and performance optimizations across various modules.
II. Issues
2.1 Top 5 Active Issues:
We consider active issues to be issues that that have been commented on most frequently within the last week. Bot comments are omitted.
-
SQLite bind booleans: This issue addresses the challenge of binding boolean values as parameters in SQLite, where currently, booleans must be manually converted to integers (true to 1 and false to 0) to avoid errors. The proposed feature suggests an automatic conversion of boolean parameters to integers, aligning with SQLite's handling of boolean keywords, to simplify the process for developers.
- The comments discuss the potential awkwardness of the proposed API, with suggestions for alternative approaches to handle boolean conversions. There is a concern about the inconsistency of supporting boolean inputs but not outputs, and a suggestion to explore how other libraries manage this issue. Some commenters express skepticism about the proposal, noting that SQLite does not natively support booleans, and suggest considering adapter callbacks for custom transformations.
- Number of comments this week: 5
-
False positive
ERR_REQUIRE_CYCLE_MODULE
error thrown for dual package withmodule-sync
entry: This issue involves a false positiveERR_REQUIRE_CYCLE_MODULE
error that occurs when using a dual package setup withmodule-sync
entry, specifically wheneslint-plugin-jsonc
loadssynckit
and@pkgr/core
as CommonJS whileeslint-plugin-mdx
loads them as ESM. The error is consistently reproduced and is not expected, as the desired behavior is for no error to be thrown during this process.- The comments discuss a potential fix for the issue in a future release, with a specific pull request mentioned that might resolve the problem in version 22.15.0. There is also a query about whether the fix will be backported to version 20, and a response indicates that a patch release for version 20 might be possible, though it is not confirmed.
- Number of comments this week: 3
-
Add a method for retrieving the database location: This issue is about adding a method to the
DatabaseSync
object in a GitHub project to retrieve the database location, which would be useful when only theDatabaseSync
object is available. The proposed method,DatabaseSync.prototype.location
, would act as a wrapper for thesqlite3_db_filename
function and could take the database name as an argument.- The comments discuss whether promoting this pattern is advisable, considering potential issues with connection parameters and database file movements. The original poster confirms the intention is to allow applications to reopen the same database and suggests starting with a basic implementation, with the possibility of adding more features later.
- Number of comments this week: 2
-
cjs context globals are available unexpected in ESM when using
node --eval 'import("pkg")'
: This issue describes a problem where CommonJS context globals are unexpectedly available in ECMAScript Modules (ESM) when using thenode --eval 'import("pkg")'
command, specifically resulting in a "Cannot find module" error. The error occurs consistently and is related to theeslint-plugin-import-x
package, which is a dual package, and the issue is observed on a Linux platform with Node.js version v22.13.1.- The comments discuss that the issue also occurs when using
Worker
witheval
, with a slight difference in the__filename
output. A request is made for a reproduction of the issue that does not involve using npm commands or downloading code from the internet. - Number of comments this week: 2
- The comments discuss that the issue also occurs when using
-
Support
Temporal
across Node.js APIs: This issue proposes that Node.js should begin supporting theTemporal
API across relevant APIs, particularly those that currently work withDate
objects, onceTemporal
becomes available by default without a runtime flag. The proposal highlights specific APIs within thefs
module that could benefit from this support, such asStats
,utimes()
, and related functions, to provide more precise time handling and avoid ambiguity in API behavior.- The comments discuss the exclusion of
util
andassert
support from the issue's scope, noting that these are essential for debugging and should be addressed separately. The conversation also explores potential use cases forTemporal
in other Node.js subsystems, emphasizing the need for community input on further adoption ofTemporal
APIs. - Number of comments this week: 2
- The comments discuss the exclusion of
2.2 Top 5 Stale Issues:
We consider stale issues to be issues that has had no activity within the last 30 days. The team should work together to get these issues resolved and closed as soon as possible.
- Flaky GC-related tests with V8 12.2: This issue concerns flaky garbage collection-related tests in the V8 12.2 engine, specifically involving the
test-shadow-realm-gc-module
,test-shadow-realm-gc
, andtest-net-write-fully-async-hex-string
tests. The problem seems to stem from incorrect assumptions in the tests that are disrupted by V8's new garbage collection strategy, leading to a suggestion to skip these tests temporarily and find a more reliable testing method in the future. - Flaky
test-worker-arraybuffer-zerofill
with V8 12.2: This issue concerns a flaky test namedtest-worker-arraybuffer-zerofill
associated with V8 version 12.2, which has been open for over a year. The problem may be due to a real bug or broken timing assumptions that cause messages to get lost, and it is suggested to mark the test as flaky and add logs for better debugging. - Support loading dynamic addon modules (
.node
files) when embedding the Node.js shared library without needing to link withnode.def
: This issue addresses the challenge of loading dynamic addon modules (.node
files) when embedding the Node.js shared library into a different executable without the need to link withnode.def
. The proposed solution suggests modifying the delay load hook to utilize an environment variable, potentially namedNODE_LIBRARY
, to facilitate the loading process, although the security implications of this approach are still uncertain. - unable to sign with external OpenSSL engine after usage of crypto.hash: This issue involves a problem with signing using an external OpenSSL engine after utilizing the
crypto.hash
function in Node.js, specifically affecting versions v21.7.0 and v21.7.1. The error occurs consistently and is believed to be linked to recent changes in the Node.js codebase, as the same code functions correctly in version v21.6.2 and earlier. Since there were fewer than 5 open issues, all of the open issues have been listed above.
2.3 Open Issues
This section lists, groups, and then summarizes issues that were created within the last week in the repository.
Issues Opened This Week: 15
Summarized Issues:
- Module Cycle Error in Dual Package Setup: This issue involves a false positive
ERR_REQUIRE_CYCLE_MODULE
error occurring in a dual package setup withmodule-sync
entry. The error arises becauseeslint-plugin-jsonc
(a CommonJS module) andeslint-plugin-mdx
(an ESM module) loadsynckit
and@pkgr/core
differently, leading to a module cycle error when usingeslint.config.js
in an ESM environment.
- Proxy Environment Variables Support: This issue is about implementing and enhancing support for the HTTP_PROXY, HTTPS_PROXY, and NO_PROXY environment variables in Node.js. The focus is on integrating these variables with the fetch() function and HTTP(S) built-in modules, while considering compatibility with existing ecosystem integrations and aligning with curl's behavior.
- Network CDP Functionality for Sourcemaps: This issue is about implementing the
Network
(CDP) functionality in Node.js to support the loading of external sourcemaps. The current failure is due to the absence of theNetwork.loadNetworkResource
method, affecting debugging processes when sourcemaps are hosted externally or locally.
- CommonJS Context Globals in ESM: This issue describes a bug where CommonJS context globals are unexpectedly available in ECMAScript Modules (ESM) when using the
node --eval 'import("pkg")'
command. This results in a "Cannot find module" error, which occurs consistently and is linked to theeslint-plugin-import-x
package.
- Temporal API Support in Node.js: This issue proposes that Node.js should begin supporting the
Temporal
API across relevant APIs, particularly those that currently work withDate
objects. The aim is to enhance precision and clarity in handling time-related data, especially in thefs
module, while also inviting discussion on further adoption ofTemporal
APIs in other areas.
- ERR_INVALID_PACKAGE_TARGET with Relative Paths: This issue describes a problem where using a relative path that includes a parent directory reference ("../") in the
imports
section of apackage.json
file results in anERR_INVALID_PACKAGE_TARGET
error. This is unexpected because the user wants to import files from a shared directory in a monorepo setup without encountering this restriction.
- Custom ESLint Rule for Function Name Matching: This issue addresses the need for a custom ESLint rule to improve the
func-name-matching
rule. The goal is to allow it to correctly handle functions defined withinObjectDefineProperty
,ObjectDefineProperties
, andReflectDefineProperty
without defaulting their names to 'value'.
- Documentation for AsyncContextFrame: This issue raises the question of whether a specific documentation should be created for
AsyncContextFrame
, which is mentioned in the next Node.js release. It is currently referenced in the CLI documentation but lacks a dedicated explanation.
- File Descriptor 0 Not Properly Closed: This issue highlights a potential bug in the Node.js codebase where file descriptor 0 might not be properly closed when used in file streams. The problem is due to an inadequate check in the code that fails to account for file descriptor 0, suggesting that a more appropriate null-like check should be implemented.
- Node.js Installer Lockfile Issue on Windows: This issue describes a problem with the Node.js installer on Windows, where the installation process fails to complete due to a persistent lockfile. This prevents retrying, changing, or uninstalling the installation, and the process gets stuck indefinitely after closing the PowerShell window.
- styleText() Function Bug with --test Flag: This issue describes a bug in the Node.js project where the
styleText()
function incorrectly applies styling to text when the--test
flag is used. TheisTTY
check fails, resulting in the text "No TTY" being stylized despite expectations that it should not be.
- SQLite inTransaction Property Request: This issue requests the addition of an
inTransaction
property to the SQLite implementation in the project. The aim is to allow users to determine if the database handle is currently in a transaction state, similar to thebetter-sqlite3
library.
- Flaky parallel/test-runner-plan Test on Windows: This issue is about the
parallel/test-runner-plan
test being flaky on Windows x64. It intermittently fails with a JavaScript test failure due to a missing expected exception, affecting multiple pull requests and appearing consistently in recent CI runs.
- Anonymous Parameters in SQLite Queries: This issue proposes adding a feature to allow binding anonymous parameters to SQLite queries without using the stack. The current method can lead to a
RangeError: Maximum call stack size exceeded
when passing a large number of parameters.
- Segmentation Fault on x86 with Shared libuv: This issue describes a segmentation fault occurring on x86 platforms when Node.js is built with a shared libuv library. The fault occurs specifically during the execution of tests using Jest, while the problem does not occur when using static linking or on other architectures like amd64, armhf, or s390x.
2.4 Closed Issues
This section lists, groups, and then summarizes issues that were closed within the last week in the repository. This section also links the associated pull requests if applicable.
Issues Closed This Week: 15
Summarized Issues:
- HTTP/2 Server Issues: Node.js versions v23.1.0 and v23.7.0 have encountered problems with HTTP/2 server behavior. In v23.1.0, the server fails to close connections properly after
server.close()
, leading to potential resource leaks. Meanwhile, v23.7.0 has a bug where clients do not receive the expected GOAWAY frame when a server closes a session after responding with an empty body.
- Functionality and Behavior Discrepancies: Node.js versions 23.11.0 and 20.15.0 have issues with function behavior. The
AbortSignal.any()
function in 23.11.0 fails to trigger timeouts reliably, causing inconsistentfetch()
responses. In 20.15.0,utils.format()
with%s
changes date representation unexpectedly, deviating from documented behavior.
- Build and Environment Issues: Node.js faces challenges with its build system and environment settings. The build system incorrectly prioritizes a hardcoded Python path, causing errors, and running scripts in WSL Ubuntu changes terminal settings, affecting display.
- File System and Stream Module Bugs: Node.js has bugs in its file system and stream modules. The
fs.promises.watch()
function emits premature "change" events on Linux, leading to inconsistent reads. Additionally, thefinished
function fails to accessAsyncLocalStorage
values correctly during HTTP requests.
- Platform-Specific Issues: Node.js encounters platform-specific issues on IBM i systems and macOS. The
execve
system call returns an EPERM error on IBM i due to multiple threads, whileexistsSync
fails to recognize folders with colons in their names on macOS.
- Memory and Syntax Errors: Node.js experiences memory and syntax issues. Setting UV_THREADPOOL_SIZE to 128 causes unexpected memory usage increases on Windows, and v23.9.0 disallows private class and instance methods with the same name, resulting in syntax errors.
- Miscellaneous Issues: Node.js has various unresolved or minimal issues. These include a failure to upload specific files, a closed issue with no details, and a Chrome OS problem closed without resolution.
2.5 Issue Discussion Insights
This section will analyze the tone and sentiment of discussions within this project's open and closed issues that occurred within the past week. It aims to identify potentially heated exchanges and to maintain a constructive project environment.
Based on our analysis, there are no instances of toxic discussions in the project's open or closed issues from the past week.
III. Pull Requests
3.1 Open Pull Requests
This section provides a summary of pull requests that were opened in the repository over the past week. The top three pull requests with the highest number of commits are highlighted as 'key' pull requests. Other pull requests are grouped based on similar characteristics for easier analysis. Up to 25 pull requests are displayed in this section, while any remaining pull requests beyond this limit are omitted for brevity.
Pull Requests Opened This Week: 20
Key Open Pull Requests
1. test_runner: add level-based diagnostic handling for reporter: This pull request introduces level-based diagnostic handling to the test runner's reporter in the Node.js project, allowing for severity-based formatting of diagnostic messages with color-coded outputs for different levels such as 'info', 'warn', and 'error', thereby enhancing message clarity and debugging efficiency.
- URL: pull/57923
- Merged: No
- Associated Commits: 4fd22, 3c9c4, 5ef5c, 94713, c515f, e0d74, 0f145, 26365, a1590, 8636d, 88188, d009a
2. test_runner: emit test:watch:restarted event on watched file changes: This pull request introduces a test:watch:restarted
event to the test runner in watch mode, allowing the reporter to be notified when tests are restarted due to file changes, which is a step towards resolving issue nodejs/node#57206.
- URL: pull/57903
- Merged: No
3. [WIP] lib: rename functions named value
: This pull request involves renaming functions named value
in the library, adjusting linter rules or temporarily bypassing them with // eslint-disable-line func-name-matching
, and includes multiple commits such as adding a utility function internalUtil.assignFunctionName()
and several squashes to rename additional functions, as part of addressing the issue referenced at https://github.com/nodejs/node/issues/57899.
- URL: pull/57901
- Merged: No
Other Open Pull Requests
- Node.js REPL Completion Logic: This pull request addresses an issue in the Node.js REPL by disabling the completion logic when proxies and getters are involved. This change prevents unintended code evaluation that could trigger side effects, particularly with objects that have nested properties.
- Function Naming Utility: This pull request introduces an internal
assignFunctionName()
utility function to the Node.js project. It simplifies the process of assigning meaningful names to anonymous functions, improving code readability and stack trace clarity.
- V8 Tracing API Update: This pull request aims to internalize the
v8::ConvertableToTraceFormat
within traces by defining specialized trace argument classes. It facilitates the conversion of these structured trace argument classes toperfetto::TracedValue
using the Perfetto traced value protocol.
- Crypto Key Prototype Inspection: This pull request proposes a change to the Node.js project that allows for the inspection of a crypto key's prototype. It addresses a previous issue where such an operation would fail due to attempting to access an undefined property.
- Release-lint Tool Enhancement: This pull request introduces support for semver-major releases to the release-lint tool in the Node.js project. It supersedes a previous pull request and includes contributions from RafaelGSS and Antoine du Hamel.
- SafeSet Functionality Enhancement: This pull request aims to enhance the
SafeSet
functionality by allowing arrays to be safely passed tonew SafeSet()
. It improves robustness in existing post-startup calls and addresses issues related to #57876.
- TaskQueue Thread Safety: This pull request aims to enhance the thread safety of the
TaskQueue
in the Node.js project by explicitly managing the locking mechanism. It prevents potential crashes caused byuv_async_send
being invoked with anullptr
, addressing issue #56236.
- HTTP/2 Raw Header Support: This pull request introduces support for raw header arrays in the
h2Session.request()
method, aligning it with HTTP/1 APIs. It includes changes to error handling behavior to prevent session destruction on invalid header values.
- Test Runner Option Unification: This pull request aims to unify the behavior of the
--require
and--import
options in the test runner when the isolation mode is set to 'none'. It addresses issue #57728 and is currently open for discussion as a draft.
- DatabaseSync Transaction Detection: This pull request introduces an
isTransaction
getter to theDatabaseSync
class in the Node.js project. It enables the detection of whether the database is currently engaged in a transaction and addresses issue #57922.
- Node.js Watch Message Clarity: This pull request aims to enhance the clarity of messages displayed by
node --watch
to users. It explicitly indicates whether the process has terminated successfully or due to an error and states that Node.js is awaiting new file changes before restarting.
- Test Flakiness Marking and Reduction: This pull request aims to mark the test-file-write-stream4 as flaky across all platforms due to its persistent failure in CI runs. Another pull request aims to reduce the flakiness by forcing garbage collection, and it is currently open for review.
- V8 Value Conversion Utility: This pull request introduces a template utility method
FromV8Value<T>()
to streamline the conversion process from V8 values. It replaces the repetitivestatic_cast<...>(value.As<>()‑>Value())
pattern and incorporates compile-time range checks for integers.
- StyleText Color Test Fix: This pull request addresses an issue in the Node.js project by fixing a test to ensure that the color of
styleText
does not change. It is referenced in issue #57921.
- Watch Flag Filtering Logic: This pull request addresses an issue in the Node.js project where the logic for filtering out watch-related flags when using the
--watch
argument is flawed. It ensures all watch flags are properly filtered out to prevent unnecessary spawning of multiple watch processes.
- Cares_wrap Error Handling: This pull request aims to enhance error handling in the
cares_wrap
module by replacing theToLocalChecked()
andCheck()
calls. It is detailed in the commit linked at https://github.com/nodejs/node/commit/7fd47a76bcf0b878d9ca060fd2ca5cebf8473eab.
3.2 Closed Pull Requests
This section provides a summary of pull requests that were closed in the repository over the past week. The top three pull requests with the highest number of commits are highlighted as 'key' pull requests. Other pull requests are grouped based on similar characteristics for easier analysis. Up to 25 pull requests are displayed in this section, while any remaining pull requests beyond this limit are omitted for brevity.
Pull Requests Closed This Week: 49
Key Closed Pull Requests
1. worker: add worker.getHeapStatistics(): This pull request introduces the worker.getHeapStatistics()
function to the Node.js project, allowing the parent thread to monitor the heap usage of a worker, and it was successfully merged on April 17, 2025.
- URL: pull/57888
- Merged: 2025-04-17T10:30:59Z
- Associated Commits: 94ec4, 85207, c73d1, 599fb, d2193, 8b126, 09741, 76d40, 47bd9, ea24e, 82174, 82364, ab5f9, a3e20, 99c6b, c7ab2, e40a2, 645d9, df57f
2. http2: fix graceful session close: This pull request addresses an issue in the Node.js HTTP/2 module where the session.close()
method was prematurely destroying sessions when response.end()
was called with an empty payload while active HTTP/2 streams still existed, ensuring that sessions are now closed gracefully only after all streams complete and clients receive the GOAWAY frame as per the HTTP/2 specification, along with updates to related tests and code optimizations to reduce overhead during session closure.
- URL: pull/57808
- Merged: 2025-04-19T16:36:03Z
3. util: fix formatting of objects with built-in Symbol.toPrimitive: This pull request addresses the issue of formatting objects with a built-in Symbol.toPrimitive
by allowing them to utilize the inspect
function, similar to the built-in toString
method, ensuring consistent output for built-in objects like Symbol and Date, and includes several commits for adding tests, handling specific cases, and providing comments.
- URL: pull/57832
- Merged: 2025-04-17T13:35:57Z
Other Closed Pull Requests
- Float16Array Support in Node.js: This topic covers the introduction of
Float16Array
support in Node.js, including updates to loose deep equality checks and the addition of a utility functiontypes.isFloat16Array()
. The pull requests also address preventing the use ofFloat16Array
with thegetRandomValues()
function in the crypto module.
- CodeQL Analysis Tool Addition: The addition of a nightly CodeQL analysis tool to the Node.js project is coordinated with the Node.js Security Working Group. This enhancement aims to improve security analysis and was successfully merged.
- Async Hooks and Context Management: Enhancements in async hooks include a new variant of the
node::AsyncHooksGetExecutionAsyncId
function and preserving the AsyncLocalStorage context in thefinished()
function of the stream module. These changes provide more flexibility and ensure proper context management.
- HTTP/2 Server Enhancements: The HTTP/2 server in Node.js has been enhanced with session tracking and a mechanism for graceful server shutdown. These improvements ensure active sessions are properly closed and prevent new requests on existing connections during shutdown.
- Deep Equal Comparison Improvements: Improvements in deep equal comparison address issues with objects having a property named "constructor" and optimize performance for constructor name lookup in the
util.inspect()
function. These changes enhance the accuracy and efficiency of deep equality checks.
- Documentation Updates: Updates to the Node.js documentation include clarifying the planned removal of Corepack in future versions and adding missing TypeScript formats for
load
hooks. These updates ensure users are informed about upcoming changes and maintain accurate documentation.
- Build and Workflow Enhancements: Enhancements in the build process include removing redundant flags for V8 and updating the usage of
std::vector<v8::Local<T>>
tov8::LocalVector<T>
. Workflow improvements address issues with GitHub Actions and enhance the release-lint tool for semver-major releases.
- Error Handling and Messaging: Improvements in error handling include enhancing error messages for invalid child stdio types in the
spawn_sync
function. These changes aim to provide more informative messages to improve user experience during debugging.
- Miscellaneous Fixes and Enhancements: Various fixes include addressing issues with
AbortSignal.any()
, Unicode line separators in the readline module, and file descriptor handling in file streams. These fixes ensure proper functionality and prevent resource leaks.
3.3 Pull Request Discussion Insights
This section will analyze the tone and sentiment of discussions within this project's open and closed pull requests that occurred within the past week. It aims to identify potentially heated exchanges and to maintain a constructive project environment.
Based on our analysis, there are no instances of toxic discussions in the project's open or closed pull requests from the past week.
IV. Contributors
4.1 Contributors
Active Contributors:
We consider an active contributor in this project to be any contributor who has made at least 1 commit, opened at least 1 issue, created at least 1 pull request, or made more than 2 comments in the last month.
If there are more than 10 active contributors, the list is truncated to the top 10 based on contribution metrics for better clarity.
Contributor | Commits | Pull Requests | Issues | Comments |
---|---|---|---|---|
aduh95 | 58 | 5 | 0 | 40 |
jasnell | 34 | 2 | 0 | 64 |
dario-piotrowicz | 45 | 10 | 2 | 8 |
targos | 41 | 5 | 0 | 11 |
mcollina | 24 | 2 | 3 | 25 |
mertcanaltin | 32 | 4 | 0 | 14 |
LiviaMedeiros | 25 | 7 | 3 | 15 |
BridgeAR | 20 | 5 | 0 | 24 |
anonrig | 9 | 1 | 0 | 31 |
cjihrig | 9 | 1 | 0 | 25 |