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_MODULEerror thrown for dual package withmodule-syncentry: This issue involves a false positiveERR_REQUIRE_CYCLE_MODULEerror that occurs when using a dual package setup withmodule-syncentry, specifically wheneslint-plugin-jsoncloadssynckitand@pkgr/coreas CommonJS whileeslint-plugin-mdxloads 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
DatabaseSyncobject in a GitHub project to retrieve the database location, which would be useful when only theDatabaseSyncobject is available. The proposed method,DatabaseSync.prototype.location, would act as a wrapper for thesqlite3_db_filenamefunction 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-xpackage, 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 
Workerwitheval, with a slight difference in the__filenameoutput. 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
Temporalacross Node.js APIs: This issue proposes that Node.js should begin supporting theTemporalAPI across relevant APIs, particularly those that currently work withDateobjects, onceTemporalbecomes available by default without a runtime flag. The proposal highlights specific APIs within thefsmodule 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 
utilandassertsupport from the issue's scope, noting that these are essential for debugging and should be addressed separately. The conversation also explores potential use cases forTemporalin other Node.js subsystems, emphasizing the need for community input on further adoption ofTemporalAPIs. - 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-stringtests. 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-zerofillwith V8 12.2: This issue concerns a flaky test namedtest-worker-arraybuffer-zerofillassociated 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 (
.nodefiles) when embedding the Node.js shared library without needing to link withnode.def: This issue addresses the challenge of loading dynamic addon modules (.nodefiles) 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.hashfunction 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_MODULEerror occurring in a dual package setup withmodule-syncentry. The error arises becauseeslint-plugin-jsonc(a CommonJS module) andeslint-plugin-mdx(an ESM module) loadsynckitand@pkgr/coredifferently, leading to a module cycle error when usingeslint.config.jsin 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.loadNetworkResourcemethod, 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-xpackage. 
- Temporal API Support in Node.js: This issue proposes that Node.js should begin supporting the 
TemporalAPI across relevant APIs, particularly those that currently work withDateobjects. The aim is to enhance precision and clarity in handling time-related data, especially in thefsmodule, while also inviting discussion on further adoption ofTemporalAPIs 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 
importssection of apackage.jsonfile results in anERR_INVALID_PACKAGE_TARGETerror. 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-matchingrule. The goal is to allow it to correctly handle functions defined withinObjectDefineProperty,ObjectDefineProperties, andReflectDefinePropertywithout 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--testflag is used. TheisTTYcheck 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 
inTransactionproperty 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-sqlite3library. 
- Flaky parallel/test-runner-plan Test on Windows: This issue is about the 
parallel/test-runner-plantest 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 exceededwhen 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%schanges 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, thefinishedfunction fails to accessAsyncLocalStoragevalues correctly during HTTP requests. 
- Platform-Specific Issues: Node.js encounters platform-specific issues on IBM i systems and macOS. The 
execvesystem call returns an EPERM error on IBM i due to multiple threads, whileexistsSyncfails 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::ConvertableToTraceFormatwithin traces by defining specialized trace argument classes. It facilitates the conversion of these structured trace argument classes toperfetto::TracedValueusing 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 
SafeSetfunctionality 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 
TaskQueuein the Node.js project by explicitly managing the locking mechanism. It prevents potential crashes caused byuv_async_sendbeing 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 
--requireand--importoptions 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 
isTransactiongetter to theDatabaseSyncclass 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 --watchto 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 
styleTextdoes 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 
--watchargument 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_wrapmodule 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 
Float16Arraysupport 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 ofFloat16Arraywith 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::AsyncHooksGetExecutionAsyncIdfunction 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 
loadhooks. 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_syncfunction. 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 |