Weekly GitHub Report for Node: July 21, 2025 - July 28, 2025 (12:05:19)
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:
Released on March 13, 2025, this version introduces the --experimental-config-file
feature, allowing developers to use JSON configuration files to simplify flag management for the test runner and related features, enhancing developer experience. Additionally, it includes updates to root certificates, new TLS and V8 methods, improved error handling, and various documentation and tooling 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.
-
process.constrainedMemory() should map UINT64_MAX to 0, per node documentation: This issue addresses a discrepancy in the behavior of the
process.constrainedMemory()
function in Node.js, where it currently returns a very large number (UINT64_MAX
) instead of 0 when no memory constraint is set, contrary to the Node.js documentation. The reporter suggests that the function should mapUINT64_MAX
to 0 to correctly indicate the absence of a memory constraint, aligning with the documented expected behavior.- The discussion centers on whether changing the return value to 0 would cause a breaking change, with some participants advocating for consistency with Node.js conventions and others cautioning against breaking existing behavior. Alternatives such as updating the documentation instead of changing the code were proposed, and the conversation included clarifications about platform differences and the semantic implications of the return values.
- Number of comments this week: 14
-
availableParallelism() is still incompatible with docker --cpus: This issue reports that the Node.js function
os.availableParallelism()
does not correctly reflect the CPU limits set by Docker's--cpus
flag when the value is less than one, instead defaulting to the host's total CPU count rather than the container's restricted CPU allocation. The expected behavior is foravailableParallelism()
to either round up to one CPU or return a fractional value corresponding to the Docker CPU quota, but currently it ignores these limits, undermining the purpose of the function in containerized environments.- The comments discuss whether a recent libuv patch caused this behavior, with some participants noting that the issue might predate the patch and could be related to how Docker exposes CPU limits via cgroups. There is uncertainty about Docker's handling of CPU weights and shares, and suggestions to investigate cgroup files affected by
--cpus
to potentially file a libuv issue for a fix. - Number of comments this week: 11
- The comments discuss whether a recent libuv patch caused this behavior, with some participants noting that the issue might predate the patch and could be related to how Docker exposes CPU limits via cgroups. There is uncertainty about Docker's handling of CPU weights and shares, and suggestions to investigate cgroup files affected by
-
Deprecation warning in GitHub workflows: This issue addresses a deprecation warning encountered in some GitHub workflows that use the
gr2m/create-or-update-pull-request-action
to open or update pull requests, which will be removed by September 4, 2025. It also discusses the inconsistency in usage between this action and the alternativepeter-evans/create-pull-request
action across workflows, raising the question of whether the project should standardize on one action and how to handle the differing behaviors, especially regarding rebasing and PR management.- The comments focus on the need to choose a single pull request action for consistency, noting differences such as automatic rebasing behavior and configuration options. Participants highlight that the core issue may be related to PR management and triage rather than the actions themselves, with suggestions to better handle PR updates and references to documentation explaining the design decisions behind the rebasing behavior of the
peter-evans
action. - Number of comments this week: 6
- The comments focus on the need to choose a single pull request action for consistency, noting differences such as automatic rebasing behavior and configuration options. Participants highlight that the core issue may be related to PR management and triage rather than the actions themselves, with suggestions to better handle PR updates and references to documentation explaining the design decisions behind the rebasing behavior of the
-
wpt/test-web-locks
is flaky: This issue reports that thewpt/test-web-locks
test suite is flaky, frequently failing on multiple Linux architectures due to missing expected properties and interface objects related to the LockManager and Lock interfaces. The failures include uncaught rejections and assertion errors indicating that the LockManager and Lock interfaces are not present as expected, causing repeated test failures in continuous integration runs.- The comments acknowledge the flakiness observed in recent pull requests and propose marking the test as flaky while investigating the root cause. Additional diagnostic output from CI logs highlights that some test failures occur due to expected rejections being treated as errors, suggesting a need to adjust test expectations or handling of these cases.
- Number of comments this week: 2
-
fs.cpSync with dereference: true does not dereference (regression in 22.17): This issue reports a regression in Node.js version 22.17 where the
fs.cpSync
function with the option{dereference: true}
no longer dereferences symbolic links as expected, instead copying the symlink itself to the destination. This behavior differs from previous versions where the target of the symlink would be copied, and the problem appears consistently without any special conditions.- The comments confirm the issue as a known regression related to a recent migration of
cpSync
into native code, with one user acknowledging the bug and another confirming it affects their project, offering assistance to help resolve it. - Number of comments this week: 2
- The comments confirm the issue as a known regression related to a recent migration 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 addresses flaky garbage collection (GC)-related tests that have become unreliable with the update to V8 version 12.2, specifically mentioning tests like
test-shadow-realm-gc-module
,test-shadow-realm-gc
, andtest-net-write-fully-async-hex-string
. The proposed approach is to skip these tests temporarily because their failures are likely due to changes in V8's GC strategy rather than actual bugs, with a suggestion to find a more robust testing method in the future. - Flaky
test-worker-arraybuffer-zerofill
with V8 12.2: This issue concerns the flaky behavior of thetest-worker-arraybuffer-zerofill
test when running with V8 version 12.2, where the test intermittently fails due to a timeout after approximately 300 seconds. The problem may stem from either a genuine bug or broken timing assumptions causing lost messages, and the current approach is to mark the test as flaky while adding additional logging to aid in 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 Node.js addon modules (.node
files) on Windows when Node.js is embedded as a shared library, specifically without requiring the embedding executable to link with thenode.def
file to reexport necessary symbols. The proposed feature suggests modifying the delay load hook to use an environment variable to locate the Node.js shared library dynamically, thereby enabling addon modules to load correctly without the current linking dependency, though potential security concerns with this approach remain to be evaluated. - Please make Node.js embeddable (e.g. libnode): This issue requests the creation of a dedicated embeddable version of Node.js, such as a
libnode
library, to allow projects to integrate the Node.js runtime and standard library directly within other host environments. The feature aims to address the current difficulty in embedding Node.js, which forces developers to rely on incomplete alternatives like Deno, and would particularly benefit use cases involving embedding Node.js in Rust-based applications. - unable to sign with external OpenSSL engine after usage of crypto.hash: This issue describes a problem where signing data with an external OpenSSL engine (specifically the gost-engine) fails after using the crypto.hash function in Node.js version 21.7.1 on a Linux Debian system. The user reports that while the signature calculation works correctly before invoking crypto.createHash, attempting to sign with the gost engine afterward results in an "unsupported" error from the digital envelope routines, a regression introduced in versions 21.7.0 and 21.7.1.
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: 14
Summarized Issues:
- Test Flakiness on Linux Architectures: Multiple test suites including
wpt/test-web-locks
andwasi/test-wasi
exhibit flaky behavior on Linux platforms, causing repeated failures due to missing interface properties and runtime errors. These instabilities affect continuous integration reliability and are observed across different architectures such as ARM64 and multiple Linux distributions. - issues/59142, issues/59146
- Test Failures Due to Resource Conflicts and Caching: Tests such as
parallel/test-config-file
intermittently fail because the inspector cannot start on the default port due to address conflicts, and experimental test module mocks do not reset properly between tests, causing cached modules to persist unexpectedly. These issues lead to race conditions and incorrect test results unless manual workarounds are applied. - issues/59152, issues/59163
- File System API Inconsistencies and Errors: The
fs.FileHandler
emits misleading errors after file handle transfers between worker threads, and thefs.cpSync
function regressed by no longer dereferencing symbolic links as expected. Additionally,fs.globSync
returns incorrect results for filenames with non-UTF8 byte sequences, indicating a need for improved encoding handling. - issues/59155, issues/59168, issues/59202
- Networking and Server Timeout Issues: The default
httpServer.keepAliveTimeout
is set too low at 5 seconds, causing subtle long-connection failures in production environments. This timeout setting is below industry standards and may require increasing or better warnings and documentation to prevent silent disconnections. - issues/59193
- System Resource Reporting Errors: The
os.availableParallelism()
function does not correctly report CPU limits set by Docker when the limit is less than one, instead returning the host's total CPU count. Similarly,process.constrainedMemory()
incorrectly returns a large UINT64_MAX value instead of zero when no memory constraint is set on Linux, contradicting documentation. - issues/59200, issues/59227
- Child Process and Security Warnings on Windows: Using
child_process.spawnSync
withshell: true
to run npm commands on Windows triggers anEINVAL
error and a security warning in Node.js v24.1.0, complicating safe command execution without deprecation warnings or security concerns. - issues/59210
- GitHub Workflow and Action Deprecation Issues: The
gr2m/create-or-update-pull-request-action
triggers deprecation warnings and differs from the alternativepeter-evans/create-pull-request
action, necessitating standardization before the deprecated API removal in 2025. Additionally, a GitHub workflow for updating root certificates fails due to missing files after Mozilla's migration from Mercurial to GitHub, causing 404 errors. - issues/59211, issues/59212
- Performance and Latency Concerns in Cluster Mode on Windows: High-concurrency file uploads using Node.js cluster mode on Windows experience unexpectedly high latency, likely due to inefficient disk I/O and inter-process communication overhead. Clarification is sought on whether this behavior is expected and if optimizations or best practices exist to improve performance.
- issues/59222
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: 22
Summarized Issues:
- Module Loading Inconsistency: The
context.conditions
property behaves inconsistently in themodule.registerHooks
resolve function, appearing as a Set when modules are loaded viarequire
and as an Array when loaded viaimport
. This discrepancy causes unexpected behavior specifically in Node.js version 22.17.0 on Windows. - issues/59003
- Promise Rejection on Permission Errors: The Node.js fs promise APIs had a bug where permission errors in the C++ layer did not return a rejected promise to JavaScript, causing a TypeError instead of the expected structured error. This issue has been resolved in later Node.js versions.
- issues/59023
- Text Styling Bug in util.styleText(): Nested calls to
util.styleText()
do not correctly restore the outer text style after the inner styled segment ends, causing subsequent text to revert to the default style. This results in incorrect text styling behavior. - issues/59035
- Collaborator Nomination: A nomination was made to add @Aditi-1400 as a collaborator on the Node.js project due to her active contributions in V8, crypto, modules, and internal documentation. This aims to enable her to continue and expand her work more effectively.
- issues/59064
- Environment Proxy Flag Proposal: A proposal was made to add a
--use-env-proxy
CLI flag and support forNODE_OPTIONS=--use-env-proxy
to control environment proxy settings via hashbang scripts. This addresses limitations of the existingNODE_USE_ENV_PROXY
environment variable. - issues/59100
- TypeScript Private Method Overloading Syntax Error: Node.js v24.4.1 throws a runtime syntax error for valid TypeScript code using ECMAScript private method overloading due to Node.js’s type stripping. The root cause was identified as a bug in the SWC compiler.
- issues/59102
- REPL Crash on Expression Completion: Node.js v24.4.1 REPL crashes consistently on Linux x64 and MacOS aarch64 immediately after typing "let b" due to a TypeError in the internal readline module during expression completion. This prevents normal REPL operation.
- issues/59136
- Documentation Omission for sqlite StatementSync: The Node.js website documentation for the sqlite Class: StatementSync omitted the
setReturnArrays(enabled: bool)
method, which allows retrieval of results as arrays instead of objects. This omission was later corrected in a subsequent commit. - issues/59137
- Windows EINVAL Spawn Error with firebase-tools: Users encounter an EINVAL spawn error and multiple failed optional dependency installations when installing the
firebase-tools
package globally on Windows 10 using npm. This issue affects package installation reliability. - issues/59139
- Mock Function Call Count Reset Failure: In Node.js version 22.13.0 on Linux Mint,
mock.reset
andmock.restoreAll
do not clear mock function call counts as expected, causing test cases to depend on previous ones. Users seek clarification on the correct method to reset call counts. - issues/59143
- Flaky Test Due to FileHandle Garbage Collection: The
test-worker-message-port-transfer-filehandle
test is flaky on Windows ARM64 because FileHandle objects are closed during garbage collection, which is now disallowed. This causes test failures affecting multiple pull requests in CI. - issues/59145
- Unclear Task Submission: A task labeled "post app22" was submitted with an unclear description and no specified affected URLs. The issue lacks detail and context.
- issues/59154
- Flaky Proxy Test on Linux ARM64: The
client-proxy/test-https-proxy-request-handshake-failure
test is flaky on Linux ARM64 due to a proxy tunnel connection timing out after 1000ms. The timeout is likely unnecessary because the machine is too slow to complete the request within the timeout. - issues/59166
- Heap Out of Memory Regression: Node.js version 24.4.1 causes a JavaScript heap out of memory error during the Heroic Games Launcher build process, which does not occur in version 24.3.0. This results in a fatal allocation failure despite ample system memory.
- issues/59175
- REPL Crash on Null Property Access: The Node.js REPL crashes immediately on certain inputs like "let a" in version 24.4.1 on Windows due to a TypeError caused by attempting to read properties of a null value during input completion.
- issues/59178
- Job Posting for Backend Developer: An HR recruiter named Karin posted a job seeking an experienced backend developer with skills in Java or Node.js, database management, API integration, and AI tools for a non-hybrid position in Tel Aviv. Interested candidates were invited to apply via email.
- issues/59182, issues/59183
- ES Module Import Failure from HTTPS URL: Dynamically importing an ES module from an HTTPS URL fails in Node.js version 24.4.1 with an ERR_UNSUPPORTED_ESM_URL_SCHEME error because the default ESM loader only supports file and data URL schemes. This feature was removed in this Node.js version.
- issues/59189
- Static Build Failure with musl libc and GCC: Compiling Node.js statically using musl libc and gcc/g++ versions 8 and 13 fails due to a macro expansion error related to the
##__VA_ARGS__
GCC extension. The issue was resolved by switching from the-std=c++17
flag to the GNU variant of the C++17 standard. - issues/59191
- Silent Failure with Korean Characters in Path: Node.js versions v22.3.0 and later fail to run JavaScript files silently without output when the folder path contains Korean characters on Windows. Earlier versions like v20.18.1 work correctly in this scenario.
- issues/59208
- V8 Embedder String Version Confusion: The V8 embedder string in Node.js 24.4.1 incorrectly references "node.17" instead of "node.24," causing confusion about versioning. A comment clarifies that this string indicates the number of patches applied to V8 rather than the Node.js version itself.
- issues/59217
- Appointment Scheduling App Development: An appointment scheduling app is being developed with endpoints for managing users, services, bookings, and available time slots. The app includes details such as user types, service durations and prices, booking statuses, and available hours for each date.
- issues/59218
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: 32
Key Open Pull Requests
1. fs: convert to string if input path is buffer: This pull request aims to enhance the file system module by converting input paths provided as buffers into strings to ensure proper handling, accompanied by tests to validate this behavior.
- URL: pull/59220
- Merged: No
2. url: replaced slice with at: This pull request replaces the use of slice(-1) with at(-1) in the URL handling code to improve efficiency by directly accessing elements without creating new collections, and applies the same change to strings for consistency and simplicity.
- URL: pull/59181
- Merged: No
3. src: add internal GetOptionsAsFlags: This pull request introduces a new internal function called GetOptionsAsFlags
in the source code, following discussions in issue #59047, and is currently in draft status pending refactoring and additional testing.
- URL: pull/59138
- Merged: No
Other Open Pull Requests
- WebAssembly ESM Integration and Polyfill: This topic covers the backporting of WebAssembly ESM features and the unflagging of the experimental Wasm modules instance phase to the v22.x branch, excluding source phase imports support. It also includes a small polyfill for JS String builtins to ensure compatibility with tests from v24.
- Test Runner Enhancements: Multiple pull requests improve the test runner by adding a MockFileSystem class for file system mocking, emitting timestamps on test restarts in watch mode, and marking flaky tests to address intermittent failures. These changes enhance testing capabilities and reliability.
- Documentation Improvements and Corrections: Several pull requests focus on documentation by proposing the removal of redundant synopsis sections, fixing formatting inconsistencies in doc-kit, correcting a typographical error in README.md, and enhancing querystring API documentation with practical examples. These updates improve clarity and usability.
- Internal and Binding Type Enhancements: This topic includes adding typings for internal bindings such as
async_context_frame
,icu
, andsea
, along with missing exports and primordials. These improvements strengthen type safety and internal consistency.
- Worker Thread Features and Fixes: Pull requests introduce a new
worker.cpuUsage
feature, add the ability to assign names to worker threads for better monitoring, and fix bugs related to worker names containing null characters. These changes enhance worker thread functionality and robustness.
- HTTP Server Timeout Update: A pull request increases the default
http.Server.keepAliveTimeout
from 5 to 65 seconds to align with browser and proxy expectations, reducing premature socket closures and updating related documentation accordingly.
- Security and Error Handling Fixes: This includes safely handling OpenSSL realloc failures in the ncrypto module to prevent out-of-memory issues and correcting error messages when transferring FileHandles in the filesystem module. These fixes improve security and error clarity.
- Code Simplification and Refactoring: Pull requests simplify utility functions by removing unnecessary template strings, replace multi-line if/else statements with ternary expressions in unofficial.gni, and remove exposed internals from tests to improve code maintainability and readability.
- Benchmarking Improvements: Introduces a
calibrate-n.js
script to optimize benchmark iteration counts by minimizing variance and adds a file system warmup step to improve benchmark accuracy and consistency. These enhancements reduce benchmark run time while maintaining reliability.
- Child Process Shell Option Validation: Adds explicit validation to ensure the
options.shell
parameter inchild_process.exec()
is a string, preventing invalid values like{ shell: false }
from being silently ignored.
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: 40
Key Closed Pull Requests
1. cli: support ${pid}
placeholder in --cpu-prof-name: This pull request adds support for the ${pid}
placeholder in the --cpu-prof-name
CLI option, enabling runtime substitution of the current process ID to prevent profile file name collisions in cluster or forked processes, along with corresponding updates to documentation and tests.
- URL: pull/59072
- Merged: 2025-07-24T10:28:19Z
2. tools: add support for URLs to PR commits in merge.sh
: This pull request enhances the merge.sh
script by adding support for extracting commit information directly from a single URL to pull request commits, simplifying the process and removing the need for collaborators to manually split the information.
- URL: pull/59162
- Merged: 2025-07-24T09:44:33Z
3. implement DummyWritableStream
for spec-compliant no-op writable: This pull request introduces a new DummyWritableStream
class that implements a spec-compliant writable stream which silently consumes and discards all written data without side effects, enhances the WritableStream
constructor to validate sink objects for a proper write
method, and includes tests to verify the correct behavior of this no-op writable stream.
- URL: pull/59223
- Merged: No
Other Closed Pull Requests
- Documentation and Onboarding Improvements: Multiple pull requests enhance documentation clarity and onboarding instructions by explaining Jenkins CI, clarifying repository purposes, and improving error messages. They also fix typos, broken sentences, and update README files to improve user understanding and reduce confusion.
[pull/59159, pull/59160, pull/59123, pull/59158, pull/59165, pull/59116]
- Performance and Caching Enhancements: Several pull requests focus on improving performance by caching results in the buffer module and JavaScript-level caches to reduce overhead from repeated calls. Benchmark optimizations and fixes to reduce iteration counts in diagnostics tests are also included.
[pull/59043, pull/59086, pull/59116]
- Testing and Flakiness Fixes: Some pull requests address flaky tests by setting default ports to random values, skipping problematic tests on IBM i, removing unnecessary timeouts, and wrapping flaky test scripts in intervals to ensure reliability.
[pull/59042, pull/59014, pull/59157, pull/59164]
- ESM and Signal Handling Fixes: Fixes include ensuring conditions in synchronous resolve hooks are properly propagated and converting them into arrays, as well as calling the
unmask
function immediately after installing signal handlers to catch signals correctly.
[pull/59011, pull/59059]
- Codebase Consistency and Cleanup: Pull requests remove outdated static function declarations and revert the use of SafeMap to a plain Map to maintain consistency and avoid exposing internal structures.
[pull/59093, pull/59094]
- New Features and CLI Enhancements: Introduction of a new CLI flag
--use-env-proxy
that overrides the existing environment variable to improve proxy configuration flexibility.
[pull/59151]
- API and Syntax Updates: Proposals include using C++20
consteval
forFastStringKey
to prevent API misuse and updating documentation to recommend V8 native syntax for Fast API testing instead of intense loops.
[pull/59148, pull/59111]
- Linting and Code Quality Improvements: Linting rules are expanded to restrict improper use of assertion messages and prevent common misuses of
assert()
with non-string literals.
[pull/59147]
- Collaborator Management: Addition of a new collaborator to the Node.js project to address a specific issue.
[pull/59157]
- Integration Proposal: A new integration is proposed to enable interoperability between Monday AI and Bitrix24 platforms.
[pull/59167]
- Bug Fixes in Benchmarks and Utilities: Fixes include correcting variable initialization in benchmarks and updating the util module to respect nested formats in styleText.
[pull/59170, pull/59098]
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 |
---|---|---|---|---|
jasnell | 14 | 1 | 2 | 57 |
aduh95 | 13 | 6 | 0 | 31 |
joyeecheung | 16 | 6 | 6 | 18 |
Renegade334 | 10 | 6 | 2 | 18 |
himself65 | 10 | 5 | 1 | 19 |
legendecas | 10 | 6 | 1 | 14 |
theanarkh | 8 | 7 | 1 | 13 |
RafaelGSS | 13 | 9 | 0 | 4 |
dario-piotrowicz | 11 | 5 | 0 | 9 |
mertcanaltin | 14 | 3 | 0 | 8 |