Weekly GitHub Report for Node: June 16, 2025 - June 23, 2025 (12:01:25)
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:
The version released on March 13, 2025, introduces the --experimental-config-file
feature, allowing developers to use a JSON configuration file to streamline the use of multiple flags, enhancing the developer experience and potentially increasing adoption. Notable updates include improvements in error handling, updates to root certificates, and the addition of new methods such as tls.getCACertificates()
and v8.getCppHeapStatistics()
, reflecting a trend towards enhancing security, performance, and developer convenience.
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.
-
Enabling Rust support for Temporal: This issue discusses the need to enable Rust support for the Temporal feature in Node.js, which is currently being implemented in V8 using Rust-based libraries. The challenge lies in managing the Rust dependencies, as Node.js vendors V8 and may need to adjust its build system to handle these dependencies without incorporating all of Chrome's additional Rust dependencies.
- The comments discuss existing discussions on Temporal support, the need to manage Rust dependencies without pulling in unnecessary files, and the challenges of using the latest stable Rust toolchain. There are suggestions for automating the process of copying relevant Rust crates, and experiments are conducted to build the Temporal feature, with some success in creating a static library. The conversation concludes with a discussion on the necessary steps to integrate the build process into Node.js's system.
- Number of comments this week: 16
-
Crash at
uv_write2
withAssertion failed
on Darwin: This issue reports a crash occurring in theuv_write2
function on the Darwin platform, with an assertion failure indicating a mismatch in the write queue size. The problem is intermittent, occurring every 1-5 days, and seems to have been introduced after upgrading from Node.js version 23 to 24.- The comments discuss the difficulty in reproducing the issue due to its flaky nature and the complexity of the code. Suggestions include providing a minimal reproducible example and adding detailed logging to help diagnose the problem. There is a mention of a potential race condition and a proposed code change to prevent the crash, although it is acknowledged that this might not address the underlying issue.
- Number of comments this week: 9
-
Build Error on riscv64: This issue involves a build error encountered on the riscv64 architecture when attempting to compile the Node.js project from source using the trunk version of the repository. The error appears consistently on the Debian Trixie platform and is suspected to be related to the V8 engine, although the exact cause is unclear.
- The comments discuss the versions of GCC and Clang being used, with suggestions to try different compiler versions to resolve the issue. The original poster attempts to use GCC 12, but the problem persists, indicating that the issue might not be related to the compiler version. The issue is also noted to be a duplicate of another existing issue.
- Number of comments this week: 6
-
Extend --env-file with support for INI sections: This issue discusses the need to extend NodeJS's
--env-file
functionality to support INI file sections, allowing users to specify which sections' variables should be loaded intoNODE_ENV
. The proposed feature aims to prevent unwanted overrides of default configurations by enabling selective loading of environment variables from specified sections within an INI file.- The comments discuss alternative solutions, such as using multiple files, but highlight the impracticality of this approach for large configurations. There is a general openness to the proposed feature, with one contributor attempting an implementation using a
#
syntax for section specification, while expressing concerns about the implicit nature of this syntax compared to a potential--env-sec
flag. - Number of comments this week: 4
- The comments discuss alternative solutions, such as using multiple files, but highlight the impracticality of this approach for large configurations. There is a general openness to the proposed feature, with one contributor attempting an implementation using a
-
Conflict between
child_process
API guidance and DEP0190: This issue highlights a conflict between the guidance provided in the Node.jschild_process
API documentation and the deprecation notice DEP0190, which discourages the use ofspawn
withshell: true
. The user points out that this inconsistency creates confusion for developers, especially non-experts, and suggests removing the recommendation to usespawn
withshell: true
from the documentation.- The comments discuss the issue's validity and suggest submitting a pull request to address it. A user agrees to make the changes, but another raises a concern about the lack of a
stdio
option inexec
, questioning its suitability as a replacement. The conversation ends with a suggestion to consider adding thestdio
option to theexec
API. - Number of comments this week: 4
- The comments discuss the issue's validity and suggest submitting a pull request to address it. A user agrees to make the changes, but another raises a concern about the lack of a
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
. The problem seems to stem from incorrect assumptions in the tests that are disrupted by V8's new garbage collection strategy, leading to the suggestion of skipping these tests until a more reliable testing method is developed. - Flaky
test-worker-arraybuffer-zerofill
with V8 12.2: This issue pertains to a flaky test namedtest-worker-arraybuffer-zerofill
associated with V8 version 12.2, which has been open for over 449 days. The test intermittently fails, possibly due to a real bug or broken timing assumptions, and it has been suggested to mark it 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, specifically.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. - Please make Node.js embeddable (e.g. libnode): This issue is about the request to make Node.js embeddable by creating a
libnode
library that would allow Node.js capabilities to be exported and enable N-API access to the host context, which would be particularly beneficial for projects that want to integrate Node.js within other environments, such as a Rust-based host process. The current lack of an easily embeddable Node.js runtime has led projects to seek incomplete solutions, like using Deno, which lacks certain features, thus necessitating a more robust and integrated approach to embedding Node.js. - unable to sign with external OpenSSL engine after usage of crypto.hash: This issue describes a problem where users are unable to sign with an external OpenSSL engine after using the
crypto.hash
function in Node.js version 21.7.1 on a Linux platform. The error, which is consistently reproducible, appears to be related to changes introduced in recent Node.js updates, as the code functions correctly in version 21.6.2 and earlier but fails in versions 21.7.0 and 21.7.1, resulting in an "unsupported" error from the digital envelope routines.
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: 20
Summarized Issues:
- UTF-16 BOM Handling in JavaScript: This issue involves a bug where reading UTF-16 encoded text with a Byte Order Mark (BOM) from a Blob in JavaScript results in an unexpected BOM character at the beginning of the string. This behavior is inconsistent across different environments such as Firefox, Chromium, Safari, Bun, Deno, and Node.
- Node.js Crashes and Deadlocks: Several issues describe crashes and deadlocks in Node.js, including a crash in the
uv_write2
function on Darwin due to a write queue size mismatch, and a thread deadlock when usingnapi_call_threadsafe_function
with a full queue. These problems cause unexpected program stops and require careful management of queue sizes and function calls.
- Node.js Feature Proposals: Proposals include extending the
--env-file
feature to support INI file sections and enabling Rust support for ECMAScript Temporal in V8. These enhancements aim to improve configuration management and facilitate integration with Rust-based libraries.
- Node.js Documentation and Deprecation Warnings: Issues highlight conflicts in Node.js documentation, such as the deprecated use of
spawn
withshell: true
in thechild_process
API, leading to confusion. Users face challenges in safely utilizing APIs due to outdated guidance and lack of alternative solutions.
- Build and Compilation Issues: Various issues describe build errors on different platforms, including a build error on riscv64 architecture related to V8's macro assembler and a Windows build failure with small-icu configuration. These errors persist despite attempts to resolve them, indicating potential bugs in compilers or build systems.
- File System and Path Handling Bugs: Bugs in file system operations include
fsPromise.writeFile
failing to handle stream errors andfs.promises.mkdtemp
throwing incorrect errors on Darwin. Additionally, path handling issues arise on Windows with non-ASCII paths and special characters, causing errors in locating files.
- Node.js Version-Specific Bugs: Specific bugs in Node.js version 24.2.0 include
fs.rmSync
crashing on Windows with Chinese character extensions and aTypeError
infs.promises.mkdtemp
on Darwin. These issues highlight regressions and unexpected behavior in the latest Node.js release.
- Network and Connection Errors: A sporadic error during file uploads between Windows and Linux using Node.js results in a "write ECONNRESET" error and a 408 status code. This issue raises questions about TCP connection resets and seeks clarification on whether it is expected behavior or a Node application issue.
- Node.js Project Contributions and Collaborations: The nomination of @IlyasShabi as a collaborator for the Node.js project is based on their significant contributions and active involvement. This recognition highlights the importance of community engagement and collaboration in open-source projects.
- Node.js Logo and Socio-Political Concerns: Concerns are raised about the recent update to the Node.js logo incorporating rainbow colors, suggesting that such changes align the project with socio-political movements. The issue argues for maintaining neutrality to be more inclusive of diverse user perspectives.
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: 4
Summarized Issues:
- Node.js URLSearchParams Deletion Bug: This issue describes a bug in Node.js where deleting search parameters during iteration over a
URLSearchParams
object causes skipping of certain keys. The expected behavior is to delete all parameters, and a suggested workaround is to collect elements into an array before iteration.
- Node.js File System Module Floating-Point Error: A bug in the Node.js file system module causes non-bigint
stat
operations to produce results slightly larger than expected due to a floating-point calculation error. This issue is reproducible on specific machines and affects certain tests, but does not occur with thebigint
option or in other languages.
- Node.js STARTTLS Upgrade Crash: Attempting to upgrade a PLAINTEXT socket to TLS using STARTTLS in a Node.js application results in a crash due to an assertion failure. The issue was resolved by ensuring that
socket.setEncoding()
is not called before the upgrade.
- Node.js macOS Compatibility Issue: Node.js version 24.2.0 fails to run on macOS Catalina 10.15.7 due to an incompatible libc++ symbol, resulting in a crash. This highlights the need for clearer communication regarding the minimum supported macOS version for Node.js installations.
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: 27
Key Open Pull Requests
1. sqlite: fix aggregate step function undefined handling: This pull request addresses an issue in the node:sqlite
module where the aggregate step function incorrectly resets the accumulator to null when it returns undefined, proposing a fix to preserve the accumulator value in such cases, thereby aligning the behavior with expected semantics and including additional test coverage to ensure proper handling of undefined and null return values.
- URL: pull/58780
- Merged: No
2. doc: clarify http.request supports headers as array: This pull request updates the documentation for the http.request()
function in the Node.js project to clarify that the headers
option can be provided as an array of key-value pairs, aligning it with the behavior of response.writeHead()
, and includes additional improvements such as addressing markdown linting issues and updating link formatting for consistency.
- URL: pull/58769
- Merged: No
3. Check var_type_feedback before dereference: This pull request addresses the issue of potential null dereference by ensuring that var_type_feedback
is checked before being dereferenced in the Node.js codebase, as indicated by the two commits associated with this change.
- URL: pull/58731
- Merged: No
Other Open Pull Requests
- Removal of globalPreload support: This pull request proposes the removal of globalPreload support from the Node.js library, addressing a previously unresolved task by eliminating the now-unnecessary warning due to the stabilization of the loader, and includes updates to remove deprecated tests related to globalPreload.
- Backporting V8 commits for RISC-V architecture: This pull request addresses a crash issue encountered while building Adguard Home using webpack by backporting two V8 commits to fix a check failure in the
bind_to
function for the RISC-V architecture, and it needs to be backported to Node.js version 24.x.
- Removal of dead code in getErrMessage utility: This pull request aims to remove dead code from the
getErrMessage
utility in the Node.js project, specifically eliminating the uninitializedcode
variable and its associated handling, which became obsolete following a previous commit.
- Fixing test runner's TAP reporter issue: This pull request addresses an issue in the test runner's TAP reporter by ensuring that Date objects are serialized to clean ISO strings in YAML output, preventing the enumeration of their methods and properties, which previously resulted in verbose and cluttered output, and includes comprehensive testing to verify the fix.
- Modification of validateInternalField function: This pull request proposes changes to the Node.js library by modifying the
validateInternalField()
function to throw anERR_INVALID_THIS
error instead ofERR_INVALID_ARG_TYPE
, and renaming the function tovalidateThisInternalField
for better clarity, as detailed in the commits linked in the pull request.
- Introduction of --watch-kill-signal flag: This pull request introduces a new
--watch-kill-signal
flag to the Node.js project, allowing users to customize the signal sent to processes during restarts in watch mode, as detailed in the commit and documentation updates provided.
- Fixing N-API deadlock issue: This pull request addresses issue #58723 by fixing a deadlock problem in the N-API when multiple push events occur, through the addition of a
waiting_task_size
to track pending push events and optimizing the comparison process by checkingmax_queue_size
beforequeue.size
for improved performance.
- Adding signal option to readableWebStream: This pull request proposes adding a
signal
option to thefilehandle.readableWebStream()
method in Node.js, enabling the ability to abort streams created by this method, similar to the existing functionality infilehandle.createReadStream([options])
.
- Modification of tools/test.py for feature/n-failures: This pull request, authored by Felix Ezama-Vaughan, addresses issue #57996 by modifying the
tools/test.py
file with 94 lines added and 6 lines removed, as part of the feature branchfeature/n-failures
, and is currently open for review on the Node.js GitHub repository.
- Documentation update for spawning files on Windows: This pull request updates the documentation section on "Spawning
.bat
and.cmd
files on Windows" by removing the suggestion to usespawn
in accordance with DEP0190, addressing issue #58735 and referencing the latest Node.js API documentation.
- Backporting WebAssembly.Global unwrapping: This pull request is a backport to version 22.x of the Node.js project, aiming to implement the unwrapping of WebAssembly.Global within Wasm namespaces, originally introduced in pull request #57525.
- Experimental feature for SQLite module: This pull request introduces an experimental feature to the SQLite module by adding a tagged template functionality, which includes two new functions,
processSqlTemplate()
for string interpolation logic andcreateSqlTag()
as a higher-order function to facilitate SQL statement preparation, aiming to gather early feedback and evolve the API design based on community input.
- Cherry-picking V8 commit for resource management: This pull request involves cherry-picking a specific commit (1d7159580156) from the V8 project to address an issue with explicit resource management by clearing the isolate internal exception before rejecting a promise, as part of a bug fix (Bug: 418103036) reviewed and approved by Shu-yu Guo, and is currently open on the Node.js GitHub repository.
- Fixing disposal of context variables in V8: This pull request involves cherry-picking a specific commit (3d750c2aa9ef) from the V8 project to address a bug related to explicit resource management by fixing the disposal of context variables when
using
orawait_using
is referenced by a closure, as part of the Node.js project version 24.x.
- Updating nodedownload module for Python 3.14: This pull request aims to update the nodedownload module to ensure compatibility with Python 3.14 by addressing the removal of the deprecated FancyURLopener and URLopener classes, which have been obsolete since Python 3.3, thereby resolving issue #58740 on the Node.js GitHub repository.
- Disabling failing coverage jobs: This pull request proposes to disable certain failing coverage jobs in the Node.js project, as they have been consistently failing without a resolution, rendering them ineffective and wasteful.
- Improving test reliability for large buffer allocations: This pull request aims to improve the reliability of a test related to large buffer allocations in Node.js by adding a condition to skip the test when buffer allocation fails, using the error message as a criterion.
- Fixing riscv64 build error with GCC: This pull request addresses a build error on the riscv64 architecture using the GCC compiler by cherry-picking a specific commit (0ce2edb7adfd) from the V8 project, which fixes an invalid template specialization, and it is intended to be included in the v24.x release of Node.js, while also noting a potential conflict with another pull request (#58746) that will be resolved after this one is merged.
- Enhancing REPL tab completion for computed properties: This pull request aims to enhance the tab completion functionality for computed properties in the Node.js REPL by substituting unreliable and error-prone Regex checks with a more dependable AST-based analysis, as a follow-up to a previous pull request.
- Documentation update for child_process.md: This pull request proposes a documentation update to the
child_process.md
file by adding a comma after the word "blocks" to enhance clarity and readability, ensuring the sentence is grammatically correct and preventing any misinterpretation, without affecting any functional code.
- Correcting typo in configure script help text: This pull request addresses a minor documentation issue by correcting a typo from "Stoage" to "Storage" in the help text for the
--without-sqlite
option within the configure script, ensuring that developers receive accurate information regarding the build configuration options related to the Web Storage API.
- Reserving NMV 139 for Electron 38: This pull request reserves NMV 139 for Electron 38 in the documentation of the Node.js project, as indicated by the commit message and the associated URL.
- Enhancing --env-file functionality: This pull request proposes an enhancement to the Node.js project by extending the
--env-file
functionality to accept sections, addressing issue #58729, and includes a commit with the necessary code changes.
- Fixing Stability 1.x links in documentation: This pull request addresses a minor UI issue by fixing the
Stability 1.x
links in the documentation to include decimal digits in the hyperlinks and optimizes the code by moving a regex outside of thepreprocessElements
function to avoid unnecessary rebuilding, potentially improving the documentation build performance.
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: 14
Key Closed Pull Requests
1. repl: fix tab completion not working with computer string properties: This pull request addresses an issue in the Node.js REPL where tab completion was not functioning correctly for computed properties accessed via string keys, by providing a fix that improves the accuracy of completions for such cases, although it does not fully resolve all related scenarios, and includes tests to ensure the changes work as intended.
- URL: pull/58709
- Merged: Yes
2. test: skip the test if the buffer allocation fails: This pull request addresses the issue of buffer allocation failures in tests by introducing a condition to skip the test based on the error message, ensuring that tests do not fail unnecessarily due to allocation issues, and includes updates to the test file test/pummel/test-string-decoder-large-buffer.js
with contributions from Livia Medeiros.
- URL: pull/58738
- Merged: Yes
3. doc: add islandryu to collaborators: This pull request adds a new collaborator, islandryu, to the Node.js project documentation, addressing issue #58559, and has been successfully merged into the main branch.
- URL: pull/58714
- Merged: Yes
- Associated Commits: e93b2
Other Closed Pull Requests
- Test Runner Modifications: This pull request involves modifying the test runner to prefer using
Atomics
primordials, as extracted from a previous pull request. It has been reviewed by multiple contributors before being successfully merged into the Node.js project.
- File System Module Optimization: This pull request addresses the optimization of the file system module by precomputing time coefficient constants to avoid runtime computation. It was part of resolving issue #58726 in the Node.js project and has been successfully merged.
- Documentation Updates: This pull request adds a documentation entry to the Node.js project history, specifically highlighting the support for TypeScript in hooks. It has been successfully merged into the main codebase.
- Flaky Test Fixes: This pull request addresses the issue of flaky tests in the Node.js project by modifying the test for large buffer allocations. It uses error messages as an additional condition to skip the test when buffer allocation fails, thereby improving test reliability.
- Web Storage Feature Update: This pull request unflags the
--experimental-webstorage
option, making Web Storage (localStorage and sessionStorage) available by default in Node.js v25. It changes theexperimental_webstorage
default to true, removes the experimental warning, updates documentation and tests to reflect its stable status, and ensures backward compatibility with the option to disable it using--no-experimental-webstorage
.
- Documentation Corrections: This pull request addresses a documentation error by correcting the RFC number related to the deprecation of priority signaling in HTTP/2 from 1993 to the correct RFC 9113.
- Permission Model Enhancements: This pull request enhances the permission model in the Node.js project by passing resource information during permission checks for spawning processes. It specifically improves error messages when the
--allow-child-process
flag is not used, as detailed in the commit by RafaelGSS.
- Test and Comment Corrections: This pull request corrects a misleading comment in a test file by clarifying that WebAssembly SIMD support is determined by the available instructions on the architecture. It specifically notes that it is not supported on IBM Power8, rather than being dependent on the operating system version such as RHEL 8 on ppc64le.
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 |
---|---|---|---|---|
dario-piotrowicz | 28 | 9 | 0 | 31 |
jasnell | 11 | 3 | 2 | 41 |
targos | 4 | 2 | 0 | 12 |
marco-ippolito | 8 | 3 | 2 | 4 |
IlyasShabi | 3 | 1 | 0 | 13 |
LiviaMedeiros | 5 | 3 | 2 | 6 |
juanarbol | 0 | 0 | 0 | 15 |
lpinca | 6 | 3 | 0 | 4 |
aduh95 | 7 | 3 | 0 | 2 |
anonrig | 0 | 0 | 0 | 12 |