Weekly Project News

Subscribe
Archives

Weekly GitHub Report for Node: April 14, 2025 - April 21, 2025 (12:02:50)

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
    • 1.2. Other Noteworthy Updates
  • II. Issues
    • 2.1. Top 5 Active Issues
    • 2.2. Top 5 Stale Issues
    • 2.3. Open Issues
    • 2.4. Closed Issues
    • 2.5. Issue Discussion Insights
  • III. Pull Requests
    • 3.1. Open Pull Requests
    • 3.2. Closed Pull Requests
    • 3.3. Pull Request Discussion Insights
  • IV. Contributors
    • 4.1. Contributors

I. News

1.1 Recent Version Releases:

The current version of this repository is v23.10.0

1.2 Version Information:

On March 13, 2025, a new version of Node.js was released, introducing the --experimental-config-file feature, which allows developers to use a JSON configuration file to streamline the use of multiple flags, enhancing the developer experience. Notable updates include the addition of the tls.getCACertificates() function, the v8.getCppHeapStatistics() method, and several improvements in error handling and performance optimizations across various modules.

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.

  1. SQLite bind booleans: This issue addresses the challenge of binding boolean values as parameters in SQLite, where currently, booleans must be manually converted to integers (true to 1 and false to 0) to avoid errors. The proposed feature suggests an automatic conversion of boolean parameters to integers, aligning with SQLite's handling of boolean keywords, to simplify the process for developers.

    • The comments discuss the potential awkwardness of the proposed API, with suggestions for alternative approaches to handle boolean conversions. There is a concern about the inconsistency of supporting boolean inputs but not outputs, and a suggestion to explore how other libraries manage this issue. Some commenters express skepticism about the proposal, noting that SQLite does not natively support booleans, and suggest considering adapter callbacks for custom transformations.
    • Number of comments this week: 5
  2. False positive ERR_REQUIRE_CYCLE_MODULE error thrown for dual package with module-sync entry: This issue involves a false positive ERR_REQUIRE_CYCLE_MODULE error that occurs when using a dual package setup with module-sync entry, specifically when eslint-plugin-jsonc loads synckit and @pkgr/core as CommonJS while eslint-plugin-mdx loads them as ESM. The error is consistently reproduced and is not expected, as the desired behavior is for no error to be thrown during this process.

    • The comments discuss a potential fix for the issue in a future release, with a specific pull request mentioned that might resolve the problem in version 22.15.0. There is also a query about whether the fix will be backported to version 20, and a response indicates that a patch release for version 20 might be possible, though it is not confirmed.
    • Number of comments this week: 3
  3. Add a method for retrieving the database location: This issue is about adding a method to the DatabaseSync object in a GitHub project to retrieve the database location, which would be useful when only the DatabaseSync object is available. The proposed method, DatabaseSync.prototype.location, would act as a wrapper for the sqlite3_db_filename function and could take the database name as an argument.

    • The comments discuss whether promoting this pattern is advisable, considering potential issues with connection parameters and database file movements. The original poster confirms the intention is to allow applications to reopen the same database and suggests starting with a basic implementation, with the possibility of adding more features later.
    • Number of comments this week: 2
  4. cjs context globals are available unexpected in ESM when using node --eval 'import("pkg")': This issue describes a problem where CommonJS context globals are unexpectedly available in ECMAScript Modules (ESM) when using the node --eval 'import("pkg")' command, specifically resulting in a "Cannot find module" error. The error occurs consistently and is related to the eslint-plugin-import-x package, which is a dual package, and the issue is observed on a Linux platform with Node.js version v22.13.1.

    • The comments discuss that the issue also occurs when using Worker with eval, with a slight difference in the __filename output. A request is made for a reproduction of the issue that does not involve using npm commands or downloading code from the internet.
    • Number of comments this week: 2
  5. Support Temporal across Node.js APIs: This issue proposes that Node.js should begin supporting the Temporal API across relevant APIs, particularly those that currently work with Date objects, once Temporal becomes available by default without a runtime flag. The proposal highlights specific APIs within the fs module that could benefit from this support, such as Stats, utimes(), and related functions, to provide more precise time handling and avoid ambiguity in API behavior.

    • The comments discuss the exclusion of util and assert support from the issue's scope, noting that these are essential for debugging and should be addressed separately. The conversation also explores potential use cases for Temporal in other Node.js subsystems, emphasizing the need for community input on further adoption of Temporal APIs.
    • Number of comments this week: 2

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.

  1. Flaky GC-related tests with V8 12.2: This issue concerns flaky garbage collection-related tests in the V8 12.2 engine, specifically involving the test-shadow-realm-gc-module, test-shadow-realm-gc, and test-net-write-fully-async-hex-string tests. The problem seems to stem from incorrect assumptions in the tests that are disrupted by V8's new garbage collection strategy, leading to a suggestion to skip these tests temporarily and find a more reliable testing method in the future.
  2. Flaky test-worker-arraybuffer-zerofill with V8 12.2: This issue concerns a flaky test named test-worker-arraybuffer-zerofill associated with V8 version 12.2, which has been open for over a year. The problem may be due to a real bug or broken timing assumptions that cause messages to get lost, and it is suggested to mark the test as flaky and add logs for better debugging.
  3. Support loading dynamic addon modules (.node files) when embedding the Node.js shared library without needing to link with node.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 with node.def. The proposed solution suggests modifying the delay load hook to utilize an environment variable, potentially named NODE_LIBRARY, to facilitate the loading process, although the security implications of this approach are still uncertain.
  4. 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 same code functions correctly in version v21.6.2 and earlier. 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: 15

Summarized Issues:

  • Module Cycle Error in Dual Package Setup: This issue involves a false positive ERR_REQUIRE_CYCLE_MODULE error occurring in a dual package setup with module-sync entry. The error arises because eslint-plugin-jsonc (a CommonJS module) and eslint-plugin-mdx (an ESM module) load synckit and @pkgr/core differently, leading to a module cycle error when using eslint.config.js in an ESM environment.
    • issues/57869
  • Proxy Environment Variables Support: This issue is about implementing and enhancing support for the HTTP_PROXY, HTTPS_PROXY, and NO_PROXY environment variables in Node.js. The focus is on integrating these variables with the fetch() function and HTTP(S) built-in modules, while considering compatibility with existing ecosystem integrations and aligning with curl's behavior.
    • issues/57872
  • Network CDP Functionality for Sourcemaps: This issue is about implementing the Network (CDP) functionality in Node.js to support the loading of external sourcemaps. The current failure is due to the absence of the Network.loadNetworkResource method, affecting debugging processes when sourcemaps are hosted externally or locally.
    • issues/57873
  • CommonJS Context Globals in ESM: This issue describes a bug where CommonJS context globals are unexpectedly available in ECMAScript Modules (ESM) when using the node --eval 'import("pkg")' command. This results in a "Cannot find module" error, which occurs consistently and is linked to the eslint-plugin-import-x package.
    • issues/57885
  • Temporal API Support in Node.js: This issue proposes that Node.js should begin supporting the Temporal API across relevant APIs, particularly those that currently work with Date objects. The aim is to enhance precision and clarity in handling time-related data, especially in the fs module, while also inviting discussion on further adoption of Temporal APIs in other areas.
    • issues/57891
  • ERR_INVALID_PACKAGE_TARGET with Relative Paths: This issue describes a problem where using a relative path that includes a parent directory reference ("../") in the imports section of a package.json file results in an ERR_INVALID_PACKAGE_TARGET error. This is unexpected because the user wants to import files from a shared directory in a monorepo setup without encountering this restriction.
    • issues/57894
  • Custom ESLint Rule for Function Name Matching: This issue addresses the need for a custom ESLint rule to improve the func-name-matching rule. The goal is to allow it to correctly handle functions defined within ObjectDefineProperty, ObjectDefineProperties, and ReflectDefineProperty without defaulting their names to 'value'.
    • issues/57899
  • Documentation for AsyncContextFrame: This issue raises the question of whether a specific documentation should be created for AsyncContextFrame, which is mentioned in the next Node.js release. It is currently referenced in the CLI documentation but lacks a dedicated explanation.
    • issues/57904
  • File Descriptor 0 Not Properly Closed: This issue highlights a potential bug in the Node.js codebase where file descriptor 0 might not be properly closed when used in file streams. The problem is due to an inadequate check in the code that fails to account for file descriptor 0, suggesting that a more appropriate null-like check should be implemented.
    • issues/57905
  • Node.js Installer Lockfile Issue on Windows: This issue describes a problem with the Node.js installer on Windows, where the installation process fails to complete due to a persistent lockfile. This prevents retrying, changing, or uninstalling the installation, and the process gets stuck indefinitely after closing the PowerShell window.
    • issues/57908
  • styleText() Function Bug with --test Flag: This issue describes a bug in the Node.js project where the styleText() function incorrectly applies styling to text when the --test flag is used. The isTTY check fails, resulting in the text "No TTY" being stylized despite expectations that it should not be.
    • issues/57921
  • SQLite inTransaction Property Request: This issue requests the addition of an inTransaction property to the SQLite implementation in the project. The aim is to allow users to determine if the database handle is currently in a transaction state, similar to the better-sqlite3 library.
    • issues/57922
  • Flaky parallel/test-runner-plan Test on Windows: This issue is about the parallel/test-runner-plan test being flaky on Windows x64. It intermittently fails with a JavaScript test failure due to a missing expected exception, affecting multiple pull requests and appearing consistently in recent CI runs.
    • issues/57928
  • Anonymous Parameters in SQLite Queries: This issue proposes adding a feature to allow binding anonymous parameters to SQLite queries without using the stack. The current method can lead to a RangeError: Maximum call stack size exceeded when passing a large number of parameters.
    • issues/57932
  • Segmentation Fault on x86 with Shared libuv: This issue describes a segmentation fault occurring on x86 platforms when Node.js is built with a shared libuv library. The fault occurs specifically during the execution of tests using Jest, while the problem does not occur when using static linking or on other architectures like amd64, armhf, or s390x.
    • issues/57934

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:

  • HTTP/2 Server Issues: Node.js versions v23.1.0 and v23.7.0 have encountered problems with HTTP/2 server behavior. In v23.1.0, the server fails to close connections properly after server.close(), leading to potential resource leaks. Meanwhile, v23.7.0 has a bug where clients do not receive the expected GOAWAY frame when a server closes a session after responding with an empty body.
    • issues/57611, issues/57809
  • Functionality and Behavior Discrepancies: Node.js versions 23.11.0 and 20.15.0 have issues with function behavior. The AbortSignal.any() function in 23.11.0 fails to trigger timeouts reliably, causing inconsistent fetch() responses. In 20.15.0, utils.format() with %s changes date representation unexpectedly, deviating from documented behavior.
    • issues/57736, issues/57818
  • Build and Environment Issues: Node.js faces challenges with its build system and environment settings. The build system incorrectly prioritizes a hardcoded Python path, causing errors, and running scripts in WSL Ubuntu changes terminal settings, affecting display.
    • issues/57833, issues/57849
  • File System and Stream Module Bugs: Node.js has bugs in its file system and stream modules. The fs.promises.watch() function emits premature "change" events on Linux, leading to inconsistent reads. Additionally, the finished function fails to access AsyncLocalStorage values correctly during HTTP requests.
    • issues/57897, issues/57844
  • Platform-Specific Issues: Node.js encounters platform-specific issues on IBM i systems and macOS. The execve system call returns an EPERM error on IBM i due to multiple threads, while existsSync fails to recognize folders with colons in their names on macOS.
    • issues/57882, issues/57929
  • Memory and Syntax Errors: Node.js experiences memory and syntax issues. Setting UV_THREADPOOL_SIZE to 128 causes unexpected memory usage increases on Windows, and v23.9.0 disallows private class and instance methods with the same name, resulting in syntax errors.
    • issues/57911, issues/57933
  • Miscellaneous Issues: Node.js has various unresolved or minimal issues. These include a failure to upload specific files, a closed issue with no details, and a Chrome OS problem closed without resolution.
    • issues/57902, issues/57878, issues/57920

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: 20

Key Open Pull Requests

1. test_runner: add level-based diagnostic handling for reporter: This pull request introduces level-based diagnostic handling to the test runner's reporter in the Node.js project, allowing for severity-based formatting of diagnostic messages with color-coded outputs for different levels such as 'info', 'warn', and 'error', thereby enhancing message clarity and debugging efficiency.

  • URL: pull/57923
  • Merged: No
  • Associated Commits: 4fd22, 3c9c4, 5ef5c, 94713, c515f, e0d74, 0f145, 26365, a1590, 8636d, 88188, d009a

2. test_runner: emit test:watch:restarted event on watched file changes: This pull request introduces a test:watch:restarted event to the test runner in watch mode, allowing the reporter to be notified when tests are restarted due to file changes, which is a step towards resolving issue nodejs/node#57206.

  • URL: pull/57903
  • Merged: No
  • Associated Commits: e386f, 71d80, 8a359, e975a, db930, 015cc

3. [WIP] lib: rename functions named value: This pull request involves renaming functions named value in the library, adjusting linter rules or temporarily bypassing them with // eslint-disable-line func-name-matching, and includes multiple commits such as adding a utility function internalUtil.assignFunctionName() and several squashes to rename additional functions, as part of addressing the issue referenced at https://github.com/nodejs/node/issues/57899.

  • URL: pull/57901
  • Merged: No
  • Associated Commits: c46dd, cfb8a, 0213a, 7b47f, 8345a

Other Open Pull Requests

  • Node.js REPL Completion Logic: This pull request addresses an issue in the Node.js REPL by disabling the completion logic when proxies and getters are involved. This change prevents unintended code evaluation that could trigger side effects, particularly with objects that have nested properties.
    • pull/57909
  • Function Naming Utility: This pull request introduces an internal assignFunctionName() utility function to the Node.js project. It simplifies the process of assigning meaningful names to anonymous functions, improving code readability and stack trace clarity.
    • pull/57916
  • V8 Tracing API Update: This pull request aims to internalize the v8::ConvertableToTraceFormat within traces by defining specialized trace argument classes. It facilitates the conversion of these structured trace argument classes to perfetto::TracedValue using the Perfetto traced value protocol.
    • pull/57866
  • Crypto Key Prototype Inspection: This pull request proposes a change to the Node.js project that allows for the inspection of a crypto key's prototype. It addresses a previous issue where such an operation would fail due to attempting to access an undefined property.
    • pull/57890
  • Release-lint Tool Enhancement: This pull request introduces support for semver-major releases to the release-lint tool in the Node.js project. It supersedes a previous pull request and includes contributions from RafaelGSS and Antoine du Hamel.
    • pull/57892
  • SafeSet Functionality Enhancement: This pull request aims to enhance the SafeSet functionality by allowing arrays to be safely passed to new SafeSet(). It improves robustness in existing post-startup calls and addresses issues related to #57876.
    • pull/57895
  • TaskQueue Thread Safety: This pull request aims to enhance the thread safety of the TaskQueue in the Node.js project by explicitly managing the locking mechanism. It prevents potential crashes caused by uv_async_send being invoked with a nullptr, addressing issue #56236.
    • pull/57910
  • HTTP/2 Raw Header Support: This pull request introduces support for raw header arrays in the h2Session.request() method, aligning it with HTTP/1 APIs. It includes changes to error handling behavior to prevent session destruction on invalid header values.
    • pull/57917
  • Test Runner Option Unification: This pull request aims to unify the behavior of the --require and --import options in the test runner when the isolation mode is set to 'none'. It addresses issue #57728 and is currently open for discussion as a draft.
    • pull/57924
  • DatabaseSync Transaction Detection: This pull request introduces an isTransaction getter to the DatabaseSync class in the Node.js project. It enables the detection of whether the database is currently engaged in a transaction and addresses issue #57922.
    • pull/57925
  • Node.js Watch Message Clarity: This pull request aims to enhance the clarity of messages displayed by node --watch to users. It explicitly indicates whether the process has terminated successfully or due to an error and states that Node.js is awaiting new file changes before restarting.
    • pull/57926
  • Test Flakiness Marking and Reduction: This pull request aims to mark the test-file-write-stream4 as flaky across all platforms due to its persistent failure in CI runs. Another pull request aims to reduce the flakiness by forcing garbage collection, and it is currently open for review.
    • pull/57927, pull/57930
  • V8 Value Conversion Utility: This pull request introduces a template utility method FromV8Value<T>() to streamline the conversion process from V8 values. It replaces the repetitive static_cast<...>(value.As<>()‑>Value()) pattern and incorporates compile-time range checks for integers.
    • pull/57931
  • StyleText Color Test Fix: This pull request addresses an issue in the Node.js project by fixing a test to ensure that the color of styleText does not change. It is referenced in issue #57921.
    • pull/57935
  • Watch Flag Filtering Logic: This pull request addresses an issue in the Node.js project where the logic for filtering out watch-related flags when using the --watch argument is flawed. It ensures all watch flags are properly filtered out to prevent unnecessary spawning of multiple watch processes.
    • pull/57936
  • Cares_wrap Error Handling: This pull request aims to enhance error handling in the cares_wrap module by replacing the ToLocalChecked() and Check() calls. It is detailed in the commit linked at https://github.com/nodejs/node/commit/7fd47a76bcf0b878d9ca060fd2ca5cebf8473eab.
    • pull/57937

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: 49

Key Closed Pull Requests

1. worker: add worker.getHeapStatistics(): This pull request introduces the worker.getHeapStatistics() function to the Node.js project, allowing the parent thread to monitor the heap usage of a worker, and it was successfully merged on April 17, 2025.

  • URL: pull/57888
  • Merged: 2025-04-17T10:30:59Z
  • Associated Commits: 94ec4, 85207, c73d1, 599fb, d2193, 8b126, 09741, 76d40, 47bd9, ea24e, 82174, 82364, ab5f9, a3e20, 99c6b, c7ab2, e40a2, 645d9, df57f

2. http2: fix graceful session close: This pull request addresses an issue in the Node.js HTTP/2 module where the session.close() method was prematurely destroying sessions when response.end() was called with an empty payload while active HTTP/2 streams still existed, ensuring that sessions are now closed gracefully only after all streams complete and clients receive the GOAWAY frame as per the HTTP/2 specification, along with updates to related tests and code optimizations to reduce overhead during session closure.

  • URL: pull/57808
  • Merged: 2025-04-19T16:36:03Z
  • Associated Commits: 20ba4, 0f364, f26c1, bcd98, 87e9b, 8f45d

3. util: fix formatting of objects with built-in Symbol.toPrimitive: This pull request addresses the issue of formatting objects with a built-in Symbol.toPrimitive by allowing them to utilize the inspect function, similar to the built-in toString method, ensuring consistent output for built-in objects like Symbol and Date, and includes several commits for adding tests, handling specific cases, and providing comments.

  • URL: pull/57832
  • Merged: 2025-04-17T13:35:57Z
  • Associated Commits: 74e49, 99410, 140a6, 476a7, 5b0ac

Other Closed Pull Requests

  • Float16Array Support in Node.js: This topic covers the introduction of Float16Array support in Node.js, including updates to loose deep equality checks and the addition of a utility function types.isFloat16Array(). The pull requests also address preventing the use of Float16Array with the getRandomValues() function in the crypto module.
    • pull/57881, pull/57879, pull/57880
  • CodeQL Analysis Tool Addition: The addition of a nightly CodeQL analysis tool to the Node.js project is coordinated with the Node.js Security Working Group. This enhancement aims to improve security analysis and was successfully merged.
    • pull/57788
  • Async Hooks and Context Management: Enhancements in async hooks include a new variant of the node::AsyncHooksGetExecutionAsyncId function and preserving the AsyncLocalStorage context in the finished() function of the stream module. These changes provide more flexibility and ensure proper context management.
    • pull/57820, pull/57865
  • HTTP/2 Server Enhancements: The HTTP/2 server in Node.js has been enhanced with session tracking and a mechanism for graceful server shutdown. These improvements ensure active sessions are properly closed and prevent new requests on existing connections during shutdown.
    • pull/57586
  • Deep Equal Comparison Improvements: Improvements in deep equal comparison address issues with objects having a property named "constructor" and optimize performance for constructor name lookup in the util.inspect() function. These changes enhance the accuracy and efficiency of deep equality checks.
    • pull/57876
  • Documentation Updates: Updates to the Node.js documentation include clarifying the planned removal of Corepack in future versions and adding missing TypeScript formats for load hooks. These updates ensure users are informed about upcoming changes and maintain accurate documentation.
    • pull/57825, pull/57837
  • Build and Workflow Enhancements: Enhancements in the build process include removing redundant flags for V8 and updating the usage of std::vector<v8::Local<T>> to v8::LocalVector<T>. Workflow improvements address issues with GitHub Actions and enhance the release-lint tool for semver-major releases.
    • pull/57907, pull/57578, pull/57642, pull/57827, pull/57841
  • Error Handling and Messaging: Improvements in error handling include enhancing error messages for invalid child stdio types in the spawn_sync function. These changes aim to provide more informative messages to improve user experience during debugging.
    • pull/57589
  • Miscellaneous Fixes and Enhancements: Various fixes include addressing issues with AbortSignal.any(), Unicode line separators in the readline module, and file descriptor handling in file streams. These fixes ensure proper functionality and prevent resource leaks.
    • pull/57867, pull/57591, pull/57918

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
aduh95 58 5 0 40
jasnell 34 2 0 64
dario-piotrowicz 45 10 2 8
targos 41 5 0 11
mcollina 24 2 3 25
mertcanaltin 32 4 0 14
LiviaMedeiros 25 7 3 15
BridgeAR 20 5 0 24
anonrig 9 1 0 31
cjihrig 9 1 0 25

Don't miss what's next. Subscribe to Weekly Project News:
Powered by Buttondown, the easiest way to start and grow your newsletter.