Weekly GitHub Report for Node: March 18, 2025 - March 25, 2025 (12:46:07)
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.8.0
1.2 Version Information:
Released on February 13, 2025, this Node.js update introduces several key features, including support for using system CA certificates on macOS and Windows, the implementation of the URL Pattern API, and the addition of the zstd compression algorithm. Notable enhancements also include naming threads for improved debugging and updated timezone data to 2025a, reflecting changes such as Paraguay's adoption of permanent -03 starting in spring 2024.
II. Issues
2.1 Top 5 Active Issues:
We consider active issues to be issues that that have been commented on most frequently within the last week. Bot comments are omitted.
-
sqlite:
StatementSync#iterate
fails withError: statement has been finalized
: This issue describes a bug in theStatementSync#iterate
function of the sqlite subsystem, where the function fails with an "Error: statement has been finalized" message or stops unexpectedly without an error when iterating over database rows. The problem occurs consistently across different platforms and is suspected to be related to garbage collection prematurely finalizing the statement object during iteration.- The comments discuss the potential cause of the issue, suggesting that the iterator does not maintain a reference to the
StatementSync
object, leading to its garbage collection and subsequent finalization. A proposed solution involves creating a reference to theStatementSync
object within the iterator to prevent it from being collected. Additionally, there is a discussion about a related but separate issue involving database closure and statement finalization, with a note on an upcoming method to address this in a future release. - Number of comments this week: 8
- The comments discuss the potential cause of the issue, suggesting that the iterator does not maintain a reference to the
-
Specify working directory for
node --run
: This issue is about adding a feature to thenode --run
command that allows users to specify a working directory, similar to the--prefix
flag used in npm, to facilitate tasks like running new API documentation tooling. The proposal suggests implementing a flag such as--working-directory
or--run-in
to set the working directory, with discussions on the best naming convention to avoid confusion about its scope and functionality.- The comments discuss potential names for the new flag, with suggestions like
--working-directory
and--run-in
, and debate their implications. Contributors express interest in implementing the feature, with encouragement for community involvement. There is a consensus that the flag's name should clearly indicate its scope, whether it affects only the--run
command or the entire process. - Number of comments this week: 6
- The comments discuss potential names for the new flag, with suggestions like
-
repl.builtinModules
doesn't contain all node.js builtin modules: This issue highlights a discrepancy in the Node.js REPL subsystem where therepl.builtinModules
does not list all the Node.js built-in modules as expected, showing only a subset compared torequire('node:module').builtinModules
. The user suggests thatrepl.builtinModules
should be deprecated and possibly removed, as it mirrors the deprecatedrepl._builtinLibs
, and proposes usingrequire('node:module').builtinModules
instead.- The comments discuss the potential deprecation of
repl.builtinModules
, with a suggestion to submit a pull request (PR) for this change. The user agrees to work on the PR and seeks clarification on whether to implement the change as a breaking change for version 24 or to deprecate it in version 23 and remove it in version 24. Further discussion clarifies that the first step should be to document the deprecation, and the user submits a PR to deprecate the field, asking if they should also update the PR to fix the issue by making it an alias tomodule.builtinModules
. - Number of comments this week: 5
- The comments discuss the potential deprecation of
-
rsa-oaep decrypt the ciphertext (an empty string) got an unexpected string: This issue reports a regression in the
crypto.privateDecrypt
method in Node.js version 23.7.0, where decrypting an empty string results in an unexpected output, unlike previous versions where it worked as expected. The user provides a code snippet to reproduce the issue and notes that the behavior change might be due to recent updates in the Node.js crypto subsystem.- The comments confirm the regression in version 23.7.0 and suggest potential causes linked to recent changes. A contributor updates a pull request with requested changes, and another comment suggests checking a specific pull request for a possible fix.
- Number of comments this week: 3
-
Unable to open file: This issue describes a problem where a user is unable to open a specific file on a server while attempting to generate a migration using TypeORM and dotenv, despite the process working correctly on their local Windows machine with Node.js version 18.14.0. The error message suggests that the issue might be related to a bug in Node.js or incorrect usage of Node.js internals, and it consistently reproduces on the server running GNU/Linux.
- The comments inquire if the issue persists with Node.js version 22.8.0 on the user's machine and request a reproducible example, noting that the stack trace appears unusual.
- Number of comments this week: 1
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.
- Build error with clang on Mac OS X 10.15.7 (wasm-engine.cc:157:19: error: no viable overloaded '='): This issue involves a build error encountered when attempting to install Node.js version 22.1 on Mac OS X 10.15.7 using the Clang compiler, where the error message indicates a problem with a "no viable overloaded '='" in the wasm-engine.cc file. The error occurs consistently and is related to a type mismatch between
std::unique_ptr
andstd::shared_ptr
, preventing successful compilation. - Prevent [ERR_STREAM_PREMATURE_CLOSE] error log when intentionally closing a stream before end: This issue addresses a problem where an
[ERR_STREAM_PREMATURE_CLOSE]
error log appears in the console when a stream is intentionally closed before all data is consumed, despite the program terminating successfully with an exit code of 0. The user suspects that the error log might originate from another stream writing to the one being closed and seeks a way to prevent this error log from appearing, as it does not indicate an actual error in the program's execution. - http.request regression > v16 regression, 400 Bad Request is thrown when GET http.request has a payload: This issue describes a regression problem in the Node.js HTTP module where a 400 Bad Request error is encountered when a GET request is made with a payload, specifically affecting versions above v16. The problem occurs when using v20.13.0 on the client side and v16.16.0 on the server side, and it suggests that the error might be due to a combination of the server-side Node.js https.Server and the client-side https.request function, with a recommendation to add a warning for GET requests with a body to aid in debugging.
- Nodejs process crashed when using
console
to print some object. TypeError: Cannot read properties of undefined (reading 'reloadNavigation'): This issue describes a problem where a Node.js process crashes when attempting to use theconsole
to print certain properties of an object, specifically encountering aTypeError
related to reading 'reloadNavigation'. The error occurs when trying to log thec.req
object in a TypeScript application using theHono
framework, while other properties likec.req.url
andc.req.path
can be logged without issue, suggesting a potential bug in Node.js or misuse of its internals. - Verify that
npm
is runnable in tests: This issue is about ensuring thatnpm
is properly packaged and functional in releases by incorporating checks into the testing process. It highlights past problems wherenpm
was not correctly included, suggesting that tests should verify its operability to prevent similar issues in the future.
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:
- Node.js REPL and Built-in Modules Discrepancy: The Node.js REPL subsystem's
repl.builtinModules
does not list all built-in modules, leading to discussions on whether it should be deprecated or updated. This issue raises concerns about versioning and the deprecation process for maintaining consistency in Node.js.
- Breaking Changes in Node.js HTTP/2: There is a proposal to change the behavior of the
writeHead
function in HTTP/2 from warnings to errors when used with astatusMessage
. This change, considered for Node.js versions 25 or 26, is a breaking change that could impact existing applications.
- Node.js SQLite Module Enhancements: Requests have been made to enhance the node:sqlite module by allowing database rows to be retrieved as arrays and adding template tags support. These enhancements aim to improve efficiency and functionality for applications using SQLite in Node.js.
- Node.js Installation and Permission Issues: The Mac installer for Node.js version 22.14.0 creates npm and npx symlinks with incorrect permissions, causing permission errors. Users are forced to disable System Integrity Protection to fix these permissions manually.
- Node.js Regression and Decryption Failures: A regression in Node.js version 23.7.0 causes
crypto.privateDecrypt
to fail when decrypting an empty string encrypted with RSA-OAEP. This unexpected behavior is suspected to be due to recent codebase changes.
- Module Import Errors in Node.js Updates: Updating to Node version 20.19.0 breaks Storybook setups due to module import errors with the
storybook-framework-redwoodjs-vite
preset. The issue arises from incompatible module path specifications with the new Node version's ECMAScript module handling.
- Node.js CI Integration and Fatal Errors: Random fatal errors occur during unit tests in the Appium CI integration on Ubuntu GitHub Actions runners. These errors, potentially due to memory or snapshot corruption, result in Node.js encountering unreachable code.
- Node.js Test Runner Configuration Enhancements: Adding a "test" namespace to the
node.config.json
file is proposed to enhance the test runner's functionality. This addition would provide configurations for coverage and filtering, addressing existing testing issues.
- SEA Binary Termination Issues: SEA binaries created from Node.js scripts do not terminate as expected when
process.exit()
is called with open file descriptors. This issue causes child processes to hang indefinitely on Windows 11 and Debian 11.
- Node.js MessageChannel and JITless Flag Bug: A bug in Node.js version 22.13.1 on Linux causes
MessageChannel
to inappropriately load theundici
module with the--jitless
flag. This results in aReferenceError
due to an undefinedWebAssembly
.
- Memory Leak in Node.js with AbortSignal.any: Node.js version 23.10.0 has a memory leak issue where
AbortSignal.any
with circular dependencies prevents garbage collection. This issue is demonstrated by a test case where objects are not collected due to cyclic dependencies.
- Enhancing Node.js Documentation for LLMs: A proposal suggests adding a
llms-full.txt
file to Node.js documentation to improve accessibility for language learning models. This enhancement aims to facilitate the teaching of new APIs to these models.
- Intermittent Database Connection Failures: An intermittent issue causes database connections to fail, but rebuilding the application temporarily resolves the problem. The root cause of the connection failures remains unclear.
2.4 Closed Issues
This section lists, groups, and then summarizes issues that were closed within the last week in the repository. This section also links the associated pull requests if applicable.
Issues Closed This Week: 15
Summarized Issues:
- Node.js Version Compatibility Issues: Upgrading Node.js versions can lead to various compatibility issues, such as route handling errors due to changes in libraries like "path-to-regexp" and internal assertion errors. These problems often require updates or adjustments in the codebase to align with the new version's requirements.
- Release Notes and Module Handling: The Node.js v20.19.0 release notes contained outdated information about experimental warnings for native ES modules, which was corrected to reflect changes in warning conditions. Additionally, enabling
require(esm)
by default in this version caused disruptions, prompting discussions on reversing the change.
- Node.js and SQLite Integration: There is a need for a method to check if a SQLite database is open in Node.js, as the current approach involves catching exceptions from failed operations. Implementing an
isOpen()
function could provide a more straightforward solution.
- Node.js Upgrade and Build Issues: Upgrading Node.js using Homebrew on macOS can result in linker errors, specifically with clang++ and undefined symbols for the x86_64 architecture. Users are advised to report such issues to the appropriate repository rather than Homebrew.
- Temporal API and V8 Implementation: Executing the Temporal API function
toPlainYearMonth
with the--harmony-temporal
flag in Node.js can cause crashes due to unimplemented code in V8. This issue highlights the challenges of integrating new JavaScript features into Node.js.
- Module Import and Transpilation Errors: Using
@swc-node/register/register
in Node.js can lead to errors due to undefined package subpaths, which are affected by Node.js's handling of module imports and the package's export definitions. This issue is specific to certain Node.js versions and flags.
- Graphics and Image Processing in Node.js: There is a proposal to integrate the Canvas API into Node.js to enhance its graphics capabilities, potentially using the Skia graphics engine. This integration would align Node.js with web standards and offer an alternative to existing npm packages like 'canvas'.
- Locale and Date Formatting Changes: Changes in the ICU library have affected date formatting for the 'fi-FI' locale in Node.js, where short month names are now displayed as numeric values. This deliberate change impacts the Intl.DateTimeFormat output in newer Node.js versions.
- Cross-Runtime Inconsistencies: A TypeError occurs in Node.js when converting a circular structure to JSON, due to the
this
keyword referring toglobalThis
with a circular reference. This behavior differs from Deno and Bun, wherethis
isundefined
, highlighting a cross-runtime inconsistency.
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: 34
Key Open Pull Requests
1. src: add --run-from
runtime flag: This pull request introduces a new --run-from
runtime flag to the Node.js project, addressing issue #57489, and includes multiple commits for adding the flag, updating tests for package.json file path handling, optimizing code, and refining documentation.
- URL: pull/57523
- Merged: No
2. sqlite: add setReturnArrays method to StatementSync: This pull request introduces a new method, setReturnArrays()
, to the StatementSync
class in the SQLite module, enabling query results to be returned as arrays instead of objects for improved efficiency, particularly when dealing with meaningless or auto-generated column names or a large number of columns, and addresses issue #57534 on the Node.js GitHub repository.
- URL: pull/57542
- Merged: No
3. repl: deprecate repl.builtinModules
: This pull request proposes the deprecation of the repl.builtinModules
feature in the Node.js project, addressing issue #57504, and includes multiple commits such as code review suggestions, adding missing links, and fixing an incorrect getter.
- URL: pull/57508
- Merged: No
Other Open Pull Requests
- Node.js Documentation Updates: Several pull requests focus on improving the Node.js documentation by standardizing labels, adding new sections, and updating existing content. These changes aim to enhance clarity and consistency across the documentation, ensuring that users have access to accurate and up-to-date information.
- Node.js Crypto Module Fixes: Multiple pull requests address issues within the Node.js crypto module, including fixing bugs related to encryption and decryption functions. These updates aim to improve the reliability and functionality of the crypto module, ensuring it handles various data scenarios correctly.
- Node.js Module and API Changes: Some pull requests propose changes to Node.js modules and APIs, such as removing deprecated properties and introducing new flags. These changes are intended to streamline the codebase and introduce new functionalities that enhance the project's capabilities.
- Node.js Project Management and Process Improvements: Pull requests in this category focus on improving project management processes, such as establishing policies for inactive pull requests and enhancing the nomination process. These efforts aim to streamline project workflows and ensure effective community engagement.
- Node.js Performance and Optimization Enhancements: Several pull requests aim to optimize Node.js performance by updating libraries, refactoring code, and introducing new implementations. These changes are designed to improve efficiency and reduce resource consumption in various parts of the project.
- Node.js Tooling and Integration Updates: Updates to tools and integrations, such as sccache and gcovr, are addressed in these pull requests. These updates aim to ensure compatibility with external systems and improve the efficiency of development workflows.
- Node.js V8 and WebAssembly Enhancements: Enhancements related to V8 and WebAssembly are introduced in these pull requests, including exposing new headers and integrating WebAssembly ESM. These changes aim to expand the capabilities of Node.js in handling modern web technologies.
- Node.js Bug Fixes and Minor Improvements: Various pull requests address minor bugs and improvements, such as fixing Unicode handling and updating URL schemes. These changes contribute to the overall stability and usability of the Node.js project.
- Node.js Code Refactoring and Cleanup: Refactoring efforts are highlighted in these pull requests, focusing on cleaning up code and removing outdated references. These changes aim to maintain a clean and efficient codebase, facilitating future development.
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: 32
Key Closed Pull Requests
1. doc: mark multiple long-time experimental APIs as stable: This pull request aims to update the documentation by marking several long-time experimental APIs, including AsyncLocalStorage, web streams, MIMEUtil, tracing module, and transferable AbortSignal/Controller, as stable, reflecting their maturity and reliability in the Node.js project.
- URL: pull/57510
- Merged: No
2. doc: mark more long-time experimental APIs as stable: This pull request involves updating the documentation to mark several long-time experimental APIs, including those related to the vm module, worker_threads, v8 module, object URL, streams, readline promises, and fs APIs, as stable, suggesting that their experimental status of 3-7 years is sufficient for them to be considered stable, although the pull request was ultimately not merged.
- URL: pull/57513
- Merged: No
3. doc: add arrows to CONTRIBUTING.md file for easer reading: This pull request aims to enhance the readability of the CONTRIBUTING.md file in the Node.js project by adding arrows, although it was ultimately not merged.
- URL: pull/57554
- Merged: No
Other Closed Pull Requests
- Performance Improvements in Node.js: Several pull requests focus on enhancing the performance of the Node.js library. These include limiting split function calls to prevent excessive array lengths, optimizing the
debug logger
to avoid unnecessary operations, and improving thepartialDeepStrictEqual
function with fast paths for specific data types.
- Error Handling Enhancements: Improvements in error handling are targeted across various components of Node.js. Specific modules like
node_http_parser
andnode_http2
have been addressed, along with general cleanups innode_builtins
.
- SQLite Module Enhancements: The SQLite module in Node.js sees several enhancements, including new methods for retrieving column metadata and checking database status. These updates align with existing methods in better-sqlite3 and address specific issues.
- Documentation Updates: Multiple pull requests focus on updating Node.js documentation to reflect current practices and policies. These include changes to collaborator onboarding, removal of outdated processes, and updates to changelogs and deprecation guidelines.
- C++ Standards Adoption: The Node.js project is moving towards adopting C++11/14/17 standards. This involves using smart pointers for better memory management and updating documentation to reflect these changes.
- Miscellaneous Fixes and Updates: Various other pull requests address specific issues such as fixing RSA-OAEP encryption for empty strings, removing unnecessary function allocations, and updating specific files like
adapter-frame.js
andREADME.md
.
- Deprecation and Initialization Improvements: Efforts to streamline Node.js include marking functions as deprecated and optimizing initialization processes. This includes ensuring functions are invoked only once to prevent redundant operations.
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 | 38 | 4 | 0 | 89 |
aduh95 | 9 | 5 | 1 | 61 |
anonrig | 6 | 3 | 0 | 36 |
dario-piotrowicz | 23 | 7 | 1 | 11 |
cjihrig | 6 | 5 | 0 | 22 |
mertcanaltin | 11 | 2 | 0 | 18 |
gurgunday | 17 | 5 | 0 | 5 |
marco-ippolito | 9 | 0 | 1 | 15 |
ljharb | 0 | 0 | 0 | 19 |
Ankush1oo8 | 13 | 1 | 0 | 3 |