Weekly GitHub Report for Node: July 07, 2025 - July 14, 2025 (12:06:17)
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. Notable updates include improvements in error handling, updates to root certificates, and the addition of new methods like tls.getCACertificates()
and v8.getCppHeapStatistics()
, reflecting a trend towards increased configurability and security enhancements.
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.
-
stream.isReadable and stream.isWritable return
null
instead offalse
: This issue highlights a bug in the Node.js stream API where the functionsstream.isReadable
andstream.isWritable
returnnull
instead of a boolean value when used with certain stream types, contrary to the expected behavior as per the official documentation. The problem consistently occurs on the specified Windows platform and is expected to return a boolean value in all cases to align with the documentation.- The comments discuss whether the current behavior is a bug or a documentation issue, with suggestions to update the API to consistently return a boolean. There is a proposal to align parameter types with those used in
stream.isErrored
, and a mention of other related functions that should also return a boolean. Some functions already behave as expected, while others are internal helpers not documented in the official API. - Number of comments this week: 6
- The comments discuss whether the current behavior is a bug or a documentation issue, with suggestions to update the API to consistently return a boolean. There is a proposal to align parameter types with those used in
-
ENOENT
error when reading root ofsubst
drive on Windows: This issue describes a problem encountered on Windows when attempting to read the root of asubst
drive using Node.js, resulting in anENOENT
error indicating that the directory does not exist. The error occurs consistently and is believed to be related to a change in path normalization behavior between Node.js versions 20 and 22, which affects the handling of paths ending with a backslash.- The comments discuss the known issue with
libuv
and its impact onsubst
drives, noting that the problem is a regression introduced in Node.js version 22. Suggestions include reporting the bug to the extension vendor and identifying specific code sections that may be causing the issue. There is a request for a pull request to address the problem, but the user is not familiar with C++ and lacks the necessary tools to make changes. The issue is confirmed by other users experiencing similar problems in VS Code after updating to Node.js 22. - Number of comments this week: 4
- The comments discuss the known issue with
-
Volunteer for CI Reliability Strategic Initiative: This issue is about the need for a volunteer to lead the CI Reliability Strategic Initiative, which has been a topic of discussion in many TSC meetings and is now recognized as a strategic initiative to improve the CI situation. The lead will have the authority to form a team, raise awareness, and take necessary actions to enhance CI reliability.
- Several users express willingness to contribute time and effort to the initiative, though not as full-time leads. There is a query about funding availability, which is clarified as not being the trigger for the issue, with further details pending on the funding discussion.
- Number of comments this week: 4
-
Bug in fs promise APIs: This issue describes a bug in the Node.js file system promise APIs on macOS, where an incorrect error is thrown when attempting to use the
fs.promises.mkdtemp
method without the necessary permissions. Instead of the expected permission error, aTypeError
is thrown due to the C++ layer not returning the promise to the JavaScript layer when an error occurs.- The comments discuss whether the issue is platform-specific, with clarification that it is not. A user reports that the issue seems resolved on macOS with Node.js v22.15.0, as the expected error is now thrown. Another comment clarifies that the test results are due to a different error and suggests using a newer Node.js version for accurate testing.
- Number of comments this week: 4
-
Incorrect selection of x64 push_registers_asm.cc for host build when target is arm (Android): This issue involves a build failure when cross-compiling Node.js with V8 for Android on an ARM target, where the incorrect architecture-specific source file
push_registers_asm.cc
for x64 is selected during the host-side tool compilation, leading to errors due to the use of 64-bit registers in a 32-bit compilation context. The problem arises because the build system mistakenly compiles the x64 file with-m32
, causing multiple errors related to the availability of certain registers only in 64-bit mode.- The comments discuss the issue of incorrect file selection and suggest passing
-m32
directly toCC_host
andCXX_host
instead of usingCFLAGS_host
andCXXFLAGS_host
. Additionally, there is a recommendation to refer to Termux's patches and build scripts for Node.js, which have addressed similar issues, and a user expresses intent to try applying these patches. - Number of comments this week: 3
- The comments discuss the issue of incorrect file selection and suggest passing
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 addresses the problem of flaky garbage collection-related tests in the V8 12.2 environment, specifically concerning the
test-shadow-realm-gc-module
,test-shadow-realm-gc
, andtest-net-write-fully-async-hex-string
tests. The proposed temporary solution is to skip these tests due to their unreliability, as they are likely failing because of incorrect assumptions in the tests that have been affected by V8's new garbage collection strategy, rather than actual bugs in the code. - 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 470 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 (.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 issue highlights the current limitations of using Node.js as an embedded runtime and suggests that a C++ library or a Rust crate could address these challenges, providing a more seamless integration for projects that currently have to rely on alternatives like Deno, which may lack certain necessary features. - 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, which consistently reproduces, is linked to changes in the Node.js codebase and results in an unsupported digital envelope routines error, whereas the code functions correctly in earlier versions like v21.6.2.
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:
- Documentation Issues: The Node.js project faces several documentation challenges, including the absence of instructions for importing keys used to sign previous releases and the lack of detailed documentation for the
pattern
argument in thefs.glob
function. These gaps hinder users' ability to verify past releases and adopt new features effectively.
- Functionality and API Consistency: Node.js is dealing with inconsistencies and bugs in its APIs, such as the
context.conditions
property being inconsistently represented and thestream.isReadable
andstream.isWritable
functions returningnull
instead of a boolean. These issues affect the expected behavior and reliability of the APIs.
- Platform and Compatibility Issues: There are several platform-specific issues in Node.js, including a bug in the file system promise APIs on macOS and a misalignment in the Windows installation script. These issues lead to unexpected errors and compatibility challenges across different environments.
- Feature Enhancements and Bug Fixes: Node.js is working on enhancing features like the
path.matchesGlob
function and addressing bugs such as theutil.styleText()
function not reverting to the outer style after a nested call. These efforts aim to improve functionality and user experience.
- Module and Dependency Conflicts: A conflict arises when importing the 'node:http' module alongside 'undici', resulting in missing methods in the 'undici' globalDispatcher. This issue is specific to certain Node.js versions and does not occur in newer versions, highlighting the need for careful dependency management.
- Configuration and Environment Management: Node.js is addressing issues related to configuration management, such as the failure of the
--experimental-config-file
option to enable features during tests and the need for custom CA certificate configuration in constrained environments. These issues impact the flexibility and security of Node.js deployments.
- Error Handling and Specification Alignment: The handling of
QuotaExceededError
in Node.js needs updating to align with the WebIDL specification, which redefines it as a subclass ofDOMException
. This requires either removing it from the DOMException names table or implementing it as a subclass to ensure compliance.
- Continuous Integration and Community Involvement: The Node.js project is seeking a volunteer to lead the CI Reliability Strategic Initiative, focusing on improving the continuous integration process. This involves forming a dedicated team and increasing awareness among contributors to enhance the project's development workflow.
- Command Line Interface Enhancements: Enhancements are needed for the Node.js CLI, such as ensuring the
--print
option respects the--input-type=module
flag. This would allow for the execution of module-based code without requiring workarounds, improving the usability of the CLI.
- File System and Pattern Matching: The
fs.glob
function on Windows has issues with case-sensitive globbing and exclusion patterns, leading to discrepancies. Enhancements are proposed to make the casing behavior configurable, accommodating both case-sensitive and case-insensitive filesystems.
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: 9
Summarized Issues:
- Segmentation Fault in V8 WASM Liftoff Compiler on LoongArch64: This issue describes a segmentation fault occurring in the V8 WASM Liftoff compiler on the LoongArch64 architecture. The Node.js process crashes due to a null pointer dereference in the
MacroAssemblerBase
constructor during WebAssembly compilation, suggesting a problem specific to the LoongArch64 backend of the Liftoff JIT compiler.
- Inability to Set
protocol
Property of aURL
Object: This issue addresses the inability to set theprotocol
property of aURL
object in JavaScript when using a non-http(s) protocol. It highlights a discrepancy between the expected behavior as per the WHATWG URL specification and the actual behavior observed in different browsers, discussing implications on URL manipulation and potential specification changes.
- Review Requests from Node.js Teams: These issues involve requests for review from various Node.js teams, including the @nodejs/config, @nodejs/test_runner, Node.js security working group, and the V8 update team. The requests were originally posted by the Node.js GitHub bot in comments on related issues.
- Challenges with Loading ESM in CJS Projects: This issue discusses the challenge of ensuring that CommonJS (CJS) projects can load ECMAScript Modules (ESM) synchronously in Node.js versions 20.15.1 and above. Proposed solutions include using conditional exports or specifying Node.js versions in the exports key, but the
module-sync
feature already addresses this need.
- Discrepancy in zlib Compression Methods: This issue highlights a discrepancy in the output of two zlib compression methods,
zlib.deflateRawSync
andzlib.createDeflateRaw
withdeflate.flush
, when used with the same input. The expected behavior is for both methods to produce identical buffers ending with a specific trailer, but the actual output differs due to a missing call todeflate.end()
in thecompress2
function.
- TypeError in Node.js REPL on Variable Declaration: These issues describe a bug in the Node.js REPL where declaring a variable using
let
orvar
consistently results in aTypeError
. This regression occurs in version 24.4.0 and has been confirmed on Windows, Linux, and macOS platforms, whereas it does not occur in the previous version 24.3.0.
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: 28
Key Open Pull Requests
1. http,https: add built-in proxy support in http/https.request and Agent: This pull request introduces built-in proxy support for HTTP and HTTPS clients and agents in Node.js, allowing the default global agent to parse proxy settings from environment variables and proxy requests accordingly, with new options for custom agents to utilize this feature, and includes comprehensive testing to ensure transparent behavior through proxies.
- URL: pull/58980
- Merged: No
2. module: add registerCondition API for runtime-specific conditional exports: This pull request introduces a new public API, registerCondition
, to the Node.js module system, allowing library or runtime authors to dynamically register custom resolution conditions for module exports, such as "electron" or "bun", without modifying the Node.js core, thereby providing a scalable and extensible solution for runtime-specific conditional exports.
- URL: pull/59005
- Merged: No
3. doc: add note on process memoryUsage: This pull request adds documentation notes regarding a potential RSS memory leak in the process.memoryUsage
function of the Node.js project, as evidenced by multiple commits updating the process.md
and doc/api/process.md
files.
- URL: pull/59026
- Merged: No
Other Open Pull Requests
- WebAssembly ESM Integration Enhancements: This topic covers the addition of support for JavaScript string builtins to the WebAssembly ESM Integration, allowing seamless integration of Wasm modules with JavaScript strings. It also includes the introduction of the jsapi test suite for WebAssembly, incorporating new ESM Integration jsapi tests.
- Documentation Improvements: Several pull requests focus on enhancing Node.js documentation, including updates to
fs.glob
methods, V8 Fast API guidance, and the relocation oftty.ReadStream
constructor details. These changes aim to provide clearer explanations, updated guidance, and correct documentation placement.
- Module Resolution and Configuration: Enhancements in module resolution include support for the "electron" condition and refactoring the linkage process of
SourceTextModule
. These updates enable runtime-specific exports for Electron applications and facilitate a fully synchronous module creation process.
- Filesystem and Error Handling: Pull requests address issues in filesystem APIs and error handling, such as fixing return values and adding missing internal error codes. These changes ensure proper error propagation and alignment with documented error types.
- Testing and Linting Enhancements: Improvements in testing and linting include optimizing GitHub Actions workflows, addressing test timeouts on IBM i, and modifying crypto tests for compatibility. These updates aim to reduce computational overhead and ensure test reliability across platforms.
- Node.js Configuration and Build Fixes: Fixes in Node.js configuration include addressing the
node_use_sqlite
setting for GN builds and correcting the logic forfs.readdirSync
on Windows. These changes ensure proper configuration and prevent errors related to drive paths and SQLite functionality.
- Code Quality and Maintenance: Pull requests focus on code quality by enforcing best practices, removing unused imports, and addressing linting issues. These efforts improve code reliability, maintainability, and prevent job failures due to CVE mentions.
- API and Debugging Enhancements: New APIs for the
trace-sigint
command line option are introduced, allowing runtime debugging. Additionally, a proposal to reword API implementation requirements aims to maintain ABI stability for node-api.
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. doc: add scroll margin to links: This pull request addresses an issue where section titles were obscured by a sticky header when opening section links on the Node.js documentation site by adding a 50px scroll margin to ensure visibility, with adjustments made for smaller screens where the header is not sticky.
- URL: pull/58982
- Merged: Yes
2. esm: WebAssembly.namespaceInstance: This pull request implements the WebAssembly.namespaceInstance
function, allowing users to obtain the underlying WebAssembly.Instance
object for a WebAssembly module record module namespace, and includes updates to the internal bootstrap and documentation, although it has not been merged yet.
- URL: pull/59024
- Merged: No
3. doc: remove broken link to permission model source code: This pull request addresses the issue of a broken link in the documentation by removing the outdated link to the permission model source code, as the model has been divided into multiple files, making it impractical to link to a single source file, and aligns with the practice of not linking source code for many Node.js APIs.
- URL: pull/58972
- Merged: Yes
- Associated Commits: 16b38
Other Closed Pull Requests
- Memory Leak Fix in DNS Module: This pull request addresses a memory leak issue in the
SoaTraits::Parse
function within the DNS module. It ensures that tests and benchmarks are included, documentation is updated, and the commit message adheres to the project's guidelines.
- Test and Debugging Improvements: This pull request addresses a consistent test failure in the
test-debugger-extract-function-name
by ensuring the inspector port is set to0
. It aims to resolve the issue of the test failing when run with the Python runner with any repeat value greater than 1 and attempts to mitigate recent flakiness observed in the CI environment.
- Type Error Correction: This pull request addresses a minor type error in the Node.js library by correcting the primordial type of
ArrayBufferPrototypeGetDetached
. The changes before and after the fix are indicated, and it has been successfully merged into the project.
- Documentation Updates: This pull request involves updating the documentation by adding missing
<code>
blocks to improve clarity and formatting. It also adds a sponsorship link for RafaelGSS and a stability index to the--watch-kill-signal
flag.
- Import Attribute Checks: This pull request ensures that import attribute keys and values in the Node.js project are strictly checked to be literal string types. It adds DCHECKs as described in the commit with SHA d1941fca1f522c861b1fa6ba5df11f5c087e213c.
- Initial Commit: This pull request is an initial commit to the Node.js project, which includes the foundational setup or first set of changes. However, it was not merged into the main codebase.
- Cryptographic Algorithm Update: This pull request addresses the runtime deprecation of default output lengths for the SHAKE128 and SHAKE256 cryptographic algorithms. The current default lengths are insufficient for achieving full collision resistance, and it follows up on a previous discussion in pull request #58942.
- Crash Fixes: This pull request addresses a crash in
parallel/test-buffer-indexof.js
by modifying Boyer-Moore related functions to use bounds-safe array indexing. It also addresses an issue in the Node.js REPL by fixing a bug that caused it to crash when variable declarations were made without initialization.
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.
- doc: fix typed list formatting
- Toxicity Score: 0.55 (Defensive responses,critical feedback,tense exchange)
- This GitHub conversation involves username1 proposing a fix for a formatting issue, with username2 providing feedback that is initially constructive but becomes increasingly critical. Username1 responds defensively, leading to a tense exchange. The tone shifts from collaborative to confrontational, with both parties expressing frustration.
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 |
---|---|---|---|---|
joyeecheung | 8 | 4 | 2 | 34 |
dario-piotrowicz | 16 | 10 | 1 | 14 |
jasnell | 3 | 2 | 1 | 34 |
LiviaMedeiros | 13 | 7 | 2 | 5 |
Renegade334 | 5 | 3 | 4 | 11 |
legendecas | 6 | 4 | 0 | 10 |
juanarbol | 1 | 1 | 0 | 15 |
aduh95 | 7 | 5 | 0 | 4 |
targos | 2 | 2 | 0 | 9 |
guybedford | 8 | 4 | 0 | 1 |