Weekly GitHub Report for Node: May 05, 2025 - May 12, 2025 (12:03:15)
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.
-
AsyncResource behaves differently w/ AsyncLocalStorage in v24.0.0: This issue describes a bug in Node.js version 24.0.0 where the
AsyncResource
andAsyncLocalStorage
behave differently compared to previous versions, causing a test case to fail. The problem arises when theAsyncResource
does not maintain the expected state within its asynchronous scope, reverting to the state active at its creation instead of the updated state.- The comments discuss whether the behavior is a bug or an expected change, with some suggesting that the previous behavior was incorrect. There is a consensus that the new behavior is preferable, but it is acknowledged as a regression due to breaking existing code. Suggestions include documenting the change and possibly introducing a method to update the
AsyncResource
's internal state. A workaround usingtracingChannel
is mentioned as a solution for affected code. - Number of comments this week: 5
- The comments discuss whether the behavior is a bug or an expected change, with some suggesting that the previous behavior was incorrect. There is a consensus that the new behavior is preferable, but it is acknowledged as a regression due to breaking existing code. Suggestions include documenting the change and possibly introducing a method to update the
-
Can't create array larger than 226 items**: This issue is about a bug in Node.js version 24.0.0 where creating an array with more than 226 items results in a "RangeError: Invalid array length," whereas this operation worked in version 22.15.0. The expected behavior is to allow the creation of arrays with up to 232 elements, but the current version fails to do so, indicating a potential regression in the V8 engine used by Node.js.
- The comments discuss whether the issue is due to a language specification or a V8 engine regression, with consensus leaning towards a V8-specific problem. A commit in the V8 engine is identified as potentially causing the issue, and a related benchmark shows the problem occurs only in Node.js v24.
- Number of comments this week: 4
-
Compiling on Mac cause an error thrown by g++-12: This issue involves a compilation error encountered on a Mac when following the BUILDING.md instructions for Node.js, specifically when using the command
export CXX=g++-12
. The error suggests a potential documentation mistake or a dependency issue with the latest Mac versions, as skipping theexport CXX=g++-12
command allows the compilation to succeed.- The comments discuss that the
export CXX=g++-12
command was recently added but is incorrect for Mac, and omitting it resolves the issue. There is a consensus to update the documentation, and one of the commenters agrees to open a pull request to make the necessary changes. - Number of comments this week: 4
- The comments discuss that the
-
Node 24 test runner module does not wait for subtests to finish: This issue highlights a breaking change introduced in Node 24's test runner module, where subtests do not wait for previous subtests to finish before starting, causing problems in scenarios where tests need to be executed sequentially. The user is experiencing difficulties with dynamically created subtests in a
for..of
loop, as the expected behavior of executing one test at a time is not being met, leading to unpredictable event sequences.- Multiple users express that the change has broken their existing test setups, with one providing a code example illustrating the issue. There is a consensus that the change offers little benefit and has not added new capabilities, with suggestions to revert the change or provide an option to restore the previous behavior. One user notes that the change was made in
node:test
but was discussed in the context of a lint tool, suggesting a disconnect in the rationale for the change. - Number of comments this week: 4
- Multiple users express that the change has broken their existing test setups, with one providing a code example illustrating the issue. There is a consensus that the change offers little benefit and has not added new capabilities, with suggestions to revert the change or provide an option to restore the previous behavior. One user notes that the change was made in
-
Should document stability of diagnostics_channel publishers.: This issue is about the need to document the stability levels of various channels listed in the diagnostics_channel documentation of a GitHub project. The issue suggests marking all channels as experimental initially and reviewing them later to determine if any should be promoted to stable, and it is proposed as a good first issue for contributors.
- A contributor expresses interest in taking on the task. There is a clarification about whether the built-in channels are already marked as experimental, to which it is confirmed that they should be marked individually. The clarification is acknowledged and understood by the contributor.
- Number of comments this week: 4
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
test-worker-arraybuffer-zerofill
with V8 12.2: This issue concerns a flaky test namedtest-worker-arraybuffer-zerofill
associated with V8 version 12.2, which has been open for over 407 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. - unable to sign with external OpenSSL engine after usage of crypto.hash: This issue involves a problem with signing using an external OpenSSL engine after utilizing the
crypto.hash
function in Node.js, specifically affecting versions v21.7.0 and v21.7.1. The error occurs consistently and is believed to be linked to recent changes in the Node.js codebase, as the functionality worked correctly in version v21.6.2 and earlier. Test Runner
: custom parser for snapshot: This issue addresses the need for a custom parser for snapshot files in a GitHub project, as the current snapshot format is not user-friendly for human reading and lacks highlighting. The proposed feature involves adding a custom parser that allows snapshots to be saved in a more readable format, such as.snapshot.md
, and includes a TypeScript module definition for setting and using a custom snapshot parser. 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: 23
Summarized Issues:
- Flaky Tests in Node.js: Flaky tests are a recurring issue in the Node.js project, causing intermittent failures that complicate debugging and reduce confidence in test results. Specific tests like "async-hooks.test-emit-after-on-destroyed" and "parallel/test-http2-close-while-writing" have been identified as problematic, with failures due to assertion errors and timeouts, respectively.
- Bugs in Node.js Version 24.0.0: Node.js version 24.0.0 has introduced several bugs affecting functionality and performance. These include a regression in array creation limits, increased CPU usage with the
deprecate
function, and changes inAsyncResource
behavior that break existing tests.
- Compilation and Build Errors: Recent updates have led to compilation and build errors on various platforms. Issues include build failures on Windows 11 and MacOS due to deprecated functions and undefined symbols, as well as errors with the
g++-12
compiler on Mac.
- Documentation Discrepancies and Updates: There are discrepancies between Node.js documentation and actual behavior, such as the
--disallow-code-generation-from-strings
flag not blocking dynamic imports. Additionally, updates are needed for marking diagnostic channels as experimental.
- Enhancements and Feature Requests: Several enhancements have been proposed to improve Node.js functionality. These include better logging for
ERR_UNSUPPORTED_ESM_URL_SCHEME
errors and capturing stack traces from the main thread in diagnostic reports.
- Test Runner and Mocking Issues: The Node.js test runner module has issues with asynchronous subtests running concurrently, disrupting expected execution order. Additionally, there are problems with mocking in CJS modules when package exports are specified.
- Segmentation Faults and Debugging Conflicts: Segmentation faults have been reported when using Node.js with VS-Codium's native debugging on Linux, suggesting a conflict between the debugger and Node.js versioning.
- HTTP Header and Encoding Bugs: Bugs in HTTP header handling and encoding have been identified, such as incorrect UTF-8 encoding in
Content-Disposition
headers and changes inTextDecoder
behavior leading to malformed strings.
- Security and Vulnerability Updates: A request has been made to update the cross-spawn package to address a security vulnerability, with discussions indicating that the latest Node.js version may already include this update.
- UI and Documentation Site Issues: The Node.js documentation site has UI issues with overlapping header menus due to incorrect z-index settings, affecting navigation and usability.
- DecompressionStream Bug: A bug in the
DecompressionStream
for webstreams allows processing of data beyond the end of a compressed stream without throwing an error, unlike browser implementations that adhere to the specification.
- Error Handling and Stack Trace Bugs: Bugs related to error handling and stack traces have been reported, such as a "Maximum call stack size exceeded" error when setting
Error.prepareStackTrace
and issues withfs.readdirSync
on Windows UNC paths.
- Automated Actions for Cherry-Picking: An automated action has been proposed to streamline the process of managing backports by attempting to cherry-pick commits onto active release lines and notifying users of any failures.
- Enhancing Python Test Runner: Enhancements to the Python test runner have been proposed to add support for
// Env
comments, allowing specific environment variables to be set for individual tests, aiding in debugging flaky tests.
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:
- Codebase Refactoring: The refactoring of the codebase involves replacing C-style function pointer definitions with
std::function
to improve type safety, readability, and flexibility. This change is aimed at modernizing the code and reducing potential errors associated with function pointers.
- Module Import Errors: A bug in Node.js causes a "ReferenceError: default is not defined" when importing an ES module from a CommonJS module on Debian with Node.js version 23.11.0. This issue specifically arises when the ES module has a default export, highlighting a compatibility problem between module systems.
- Test Runner and Mock Feature Bugs: The Node.js test runner experiences a bug where the experimental mock feature causes the code coverage report to fail. Despite the tests passing, this issue affects the reliability of test coverage metrics.
- Error Handling Bugs: The
Error.isError
function incorrectly returnsfalse
forDOMException
on macOS 15.5, which is a known issue due to changes in V8 and Node.js versions. This behavior is unexpected as the function should returntrue
, indicating a need for a fix.
- HTTPS Request CA Certificates: Node.js does not use the system's CA certificates by default for HTTPS requests, leading to failures when a CA is in the system trust store but not in Node's bundled store. The suggestion is to prioritize system CA certificates to prevent such issues.
- Deprecated Functionality and Crashes: Node.js v24.0.0 crashes when using dependencies that rely on the deprecated
SlowBuffer
functionality, which was removed prematurely. The issue was resolved in v24.0.1, with plans to permanently removeSlowBuffer
in version 25.x.
- Release Verification Issues: The Node.js 24.0.1 release initially lacked a
.sig
file necessary for verifying binaries due to an upload issue. This problem has since been resolved, ensuring the integrity of the release.
- Unclear or Empty Issues: Some issues, such as those titled "hi" and "Node issue," lack detailed descriptions or context, making it unclear what specific problems or topics they address. These issues do not provide enough information for further action or discussion.
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: 45
Key Open Pull Requests
1. Changing assert to become a class: This pull request refactors the assert
functionality from a method to a dedicated class in order to enhance flexibility and configurability, allowing for customized assertion behavior and maintaining backward compatibility, while also introducing new unit tests and reviewing performance implications.
- URL: pull/58253
- Merged: No
- Associated Commits: ed508, c2099, 8a469, 95daa, 99ab0, ef9d8, 1313f, d9d39, 7fe02, a6b25, 73ed5, 9777e, 5c484, bd259, 3f1c9, 13292
2. tools: lint typescript files: This pull request aims to enhance the project's code quality by integrating typescript-eslint
into the linting rules, thereby addressing issue #55702 and acknowledging the contributions of @avivkeller from a previous related pull request.
- URL: pull/58256
- Merged: No
3. lib: add a diagnostic channel for observing AsyncContextFrame.set: This pull request introduces a new diagnostic channel, async_context_frame.set
, to observe changes in AsyncContextFrame.set
, which is particularly beneficial for C++ extensions that need to maintain synchronized native state with AsyncLocalStorage
changes, especially when direct access to V8 is not feasible, and includes updates such as documentation, linter error fixes, and tests to ensure the functionality and integrity of the new feature.
- URL: pull/58229
- Merged: No
Other Open Pull Requests
- Modernization of Node.js Scripts: This topic involves updating Node.js scripts to use modern Python 3 features and improve code efficiency. The pull requests focus on replacing outdated practices with
pathlib
for path manipulations and f-strings for string formatting, as well as optimizing memory allocation in theBuffer.concat
method.
- Node.js HTTP Module Enhancements: These pull requests address issues in the Node.js HTTP module, such as enforcing keep-alive timeouts and improving documentation for header methods. They aim to align Node.js behavior with other HTTP servers and provide clearer guidance for developers.
- Documentation Improvements: Several pull requests focus on enhancing Node.js documentation by correcting typos, clarifying method behaviors, and updating stability statuses. These changes aim to improve clarity and accuracy for developers using Node.js.
- Node.js API and Module Enhancements: This topic covers improvements to various Node.js APIs and modules, including support for
URL
instances infs.glob
, explicit resource management in theDir
module, and new fast APIs in thenode_os
module. These enhancements aim to increase functionality and performance.
- Node.js Performance and Diagnostics: Pull requests in this category introduce new diagnostics channels and performance hooks, such as
http2.client.stream.created
anduvMetricsInfo
. These additions aim to provide better performance insights and diagnostics capabilities.
- Bug Fixes and Code Maintenance: These pull requests address various bugs and code maintenance tasks, such as fixing a crash caused by recursive error stacks and removing deprecated functions. They ensure the stability and maintainability of the Node.js codebase.
- Node.js CLI and Embedding Enhancements: This topic includes enhancements to the Node.js CLI and embedding capabilities, such as the
node --run <cmd>
command and a minimal C-compatible function for embedding Node.js. These changes aim to improve usability and integration with other languages.
- Permission Model and Environment Variables: Pull requests in this category focus on enhancing the Node.js permission model and introducing support for environment variables. These changes aim to improve module loading and configuration flexibility.
- Code Simplification and Optimization: These pull requests propose code simplifications and optimizations, such as using C++20 concepts for
is_callable
and handling JSON.stringify overflow scenarios. They aim to streamline code and improve performance.
- Function Naming and Mocking Documentation: This topic addresses issues with function naming and documentation for mocking in Node.js. The pull requests aim to improve code clarity and provide better guidance for testing synchronous callback-based APIs.
- Node.js Inspector and Network Enhancements: A pull request introduces support for mimeType and charset in the Node.js inspector's Network.Response, addressing specific issues and improving network inspection capabilities.
- Test Functionality and Stability: This pull request ensures test functionality by addressing issues with the
make test-npm
functionality and handling JSON.stringify overflow scenarios. It aims to maintain stability and reliability in Node.js testing.
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: 54
Key Closed Pull Requests
1. [v22.x backport] src: add config file support: This pull request introduces support for configuration files in the Node.js project, specifically backporting changes to the v22.x branch, which includes adding config file support, creating a mechanism to throw errors for options before bootstrapping, namespacing config file flags, enhancing test coverage for the node_config_file, and setting a default configuration file named node.config.json.
- URL: pull/57958
- Merged: 2025-05-06T20:29:15Z
2. deps: enable new JS features the V8 way: This pull request involves updating the V8 JavaScript engine to version 13.6.233.10, cherry-picking specific commits to enable new JavaScript features by default, such as explicit resource management and Float16Array, and removing unnecessary explicit V8 flags from the source code.
- URL: pull/58230
- Merged: No
3. sqlite: add build option to build without sqlite: This pull request introduces a build option to compile Node.js without including SQLite, providing flexibility for distributors like the RHEL team who may want to exclude certain components.
- URL: pull/58122
- Merged: No
Other Closed Pull Requests
- AsyncLocalStore Independence: This topic involves ensuring that
AsyncLocalStore
instances in Node.js operate independently by modifying the behavior to restore only the owned store rather than the entireAsyncContextFrame
. This change prevents one instance from inadvertently altering the state of another, enhancing the reliability of async context management.
- V8 and Deadlock Workarounds: This topic covers the reversion of several previous changes related to V8 MSVC and deadlock workarounds. The workarounds are deemed unnecessary following updates in another pull request, simplifying the codebase and potentially improving performance.
- Float16Array and Resource Management: This topic includes enabling the
Float16Array
and explicit resource management features in Node.js, aligning with stable Chrome 136. Additionally, it involves removing the Float16Array flag from tests and updating the linter to recognize theFloat16Array
global, preparing for future Node.js versions.
- Documentation and Typographical Corrections: This topic addresses various documentation updates and corrections, including adding historical entries to the
--input-type
section and fixing typographical errors in benchmark scripts. These changes improve the accuracy and clarity of the Node.js documentation.
- Buffer Module Improvements: This topic involves updating the buffer component to utilize the
constexpr
keyword where applicable and improving the buffer module by replacing a mutex with an atomic free callback. These changes aim to enhance performance and maintainability, although one of the pull requests was not merged.
- Node.js Watch Mode and Test Flakiness: This topic addresses issues with the Node.js watch mode by correcting flawed logic that improperly filters out watch-related flags. It also involves marking certain tests as flaky to maintain CI functionality while underlying issues are investigated.
- Backporting and Branch Management: This topic covers backporting commits to the v22.x branch, ensuring primordials are initialized once and enabling the
--perf-prof
flag on MacOS. These changes ensure consistency and feature availability across different Node.js versions.
- Error Handling and Test Adjustments: This topic involves addressing a typographical error in the error-stack method name and skipping a test when the system is low on memory. These adjustments aim to improve error handling and test reliability under specific conditions.
- CodeQL Scans and Exclusions: This topic addresses the exclusion of the
deps/v8/tools
directory from JavaScript CodeQL scans to eliminate parse errors. This change improves scan results by bypassing problematic areas, leaving one potential false positive for future resolution.
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 |
---|---|---|---|---|
anonrig | 24 | 6 | 0 | 38 |
aduh95 | 20 | 6 | 0 | 41 |
targos | 53 | 5 | 1 | 5 |
dario-piotrowicz | 32 | 7 | 2 | 21 |
miguelmarcondesf | 40 | 7 | 1 | 4 |
LiviaMedeiros | 28 | 9 | 2 | 11 |
joyeecheung | 16 | 7 | 4 | 18 |
jasnell | 12 | 4 | 2 | 24 |
mcollina | 21 | 0 | 1 | 5 |
marco-ippolito | 9 | 3 | 1 | 11 |