Weekly Project News

Subscribe
Archives

Weekly GitHub Report for Node: December 26, 2024 - January 02, 2025

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
    • 1.3. README Analysis
  • 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.5.0

1.2 Other Noteworthy Version Information:

The version released on December 19, 2024, introduces several key updates, including the stabilization of the WebCryptoAPI Ed25519 and X25519 algorithms, which will no longer emit an ExperimentalWarning, and the reintroduction of on-thread hooks through module.registerHooks(), enhancing module loader customization. Additionally, there are several minor updates across various modules, such as support for blocklists in UDP, stabilization of the permission model, and improvements in the handling of modules and documentation.

1.3 README Analysis:

Node.js is an open-source, cross-platform JavaScript runtime environment supported by the OpenJS Foundation and governed through an open model. It offers three types of releases: Current (active development), LTS (Long Term Support for stability and security), and Nightly (daily builds), with downloads and documentation available on the Node.js website. The project encourages collaborative contributions, adheres to a Code of Conduct, and provides detailed guidelines for building, security, and contributing.

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.

  1. vm.runInContext Function Prototype Issue: This issue is about a problem with the vm.runInContext function in Node.js, where the function prototypes defined within a script do not match Function.prototype as expected. The user has attempted various solutions, such as using proxies and custom constructors, but none have resolved the issue.

    • The comments explain that the behavior is expected because syntactically created functions do not use injected globals like Function. The user acknowledges this explanation and seeks further advice on ensuring all functions share the same Function.prototype. It is clarified that Function.prototype is "undeniable" and cannot be changed, prompting a question about the user's overarching goal.
    • Number of comments this week: 4
  2. Document differences between Node.js fetch() implementations and the standard: This issue is about documenting the differences between Node.js's fetch() implementation and the standard fetch() API, highlighting specific variations such as the addition of new Response(asyncIterable), cookie handling, and the absence of forbidden headers. The goal is to enhance the documentation by providing users with a clear understanding of these differences, potentially by incorporating information from undici's README.

    • The comments discuss the need for better documentation of Node.js's fetch() differences, suggesting that existing documentation from undici could be used. There is agreement on the importance of this documentation, with some users noting the current lack of specific Node.js fetch() documentation. A user expresses interest in contributing, and another confirms that the task is open for contribution, with a pull request already in progress.
    • Number of comments this week: 3
  3. [**Node.js is showing error "node: /lib64/libm.so.6: version GLIBC_2.27' not found (required by node)"**](https://github.com/nodejs/node/issues/52241): This issue is about a user encountering an error when trying to run Node.js on a Linux system, where the system's GLIBC version is not compatible with the version required by Node.js. The error message indicates that several required GLIBC and libstdc++ versions are missing, preventing the user from successfully executing thenode --version` command.

  • The comments discuss the cause of the error, which is due to the system's GLIBC version being lower than required by Node.js v20.11.0. Solutions proposed include recompiling Node.js from source, installing an older Node.js version, or upgrading the operating system. Some users suggest using unofficial prebuilt binaries compatible with older GLIBC versions, while others express concerns about the trustworthiness of external sources. There are also discussions about the challenges of statically linking GLIBC and the limitations of such approaches.
    • Number of comments this week: 2
  1. CJS nextLoader callback in loader hook doesn't use changed URL: This issue is about a bug in the Node.js project where the nextLoader callback in the CommonJS loader hook does not utilize a modified URL, instead relying solely on the original URL, which prevents the hook from altering the URL for subsequent stages. The problem is consistently reproducible and is believed to be caused by a typo in the code, specifically at a certain line in the loader.js file, where the parameter intended for passing the URL to nextLoad is ignored.

    • The comments section includes a brief interaction where one participant asks if the issue reporter would like to submit a pull request to fix the bug, to which the reporter responds affirmatively, indicating their willingness to contribute a solution.
    • Number of comments this week: 2
  2. node:sqlite: "VACUUM INTO" gives error "no such function: floor": This issue involves an error encountered when using the "VACUUM INTO" command in a Node.js SQLite environment, specifically when a generated column uses the floor() function. The error message "no such function: floor" appears, suggesting that the SQLite build may lack support for certain mathematical functions, such as floor().

    • The comments discuss that the problem is likely due to the absence of the SQLITE_ENABLE_MATH_FUNCTIONS compilation option in SQLite, which would enable the floor() function, and the original poster agrees with this assessment.
    • 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.

As of our latest update, there are no stale issues for the project this week.

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:

  • Inconsistent Handling of Special Values in Node.js: The Node.js project has encountered issues with the inconsistent handling of special values, such as -NaN in the DataView.setFloat32 method. This inconsistency results in different byte patterns being returned, which is not the expected behavior. Such issues can lead to unpredictable outcomes in applications relying on consistent data handling.
    • issues/56373
  • Memory Management and Event Emission in Node.js: Node.js has faced challenges with memory management and event emission, particularly in the http2 compatibility response. The 'close' event is not consistently emitted, which can lead to potential memory leaks when a client aborts a request. This inconsistency has been observed in production environments, highlighting the need for reliable event handling.
    • issues/56374
  • Unexpected Process Aborts in Node.js: Several issues in Node.js have led to unexpected process aborts instead of graceful error handling. For instance, using tls.createSecureContext with a clientCertEngine parameter or invoking crypto.generatePrime with FIPS mode enabled can cause the Node.js process to abort unexpectedly. These issues highlight the importance of robust error handling mechanisms in Node.js.
    • issues/56375
    • issues/56377
  • CommonJS Loader Hook URL Handling: The Node.js CommonJS loader hook has a bug where the nextLoader callback does not utilize the modified URL. Instead, it uses the original URL, preventing the hook from altering the URL for subsequent stages. This issue affects the flexibility and functionality of the loader hook system.
    • issues/56376
  • Node.js Process Behavior on Unhandled Rejections: There is a discrepancy in Node.js's behavior regarding unhandled promise rejections. In a Docker container, Node.js version 18.19.0 fails to exit as expected upon encountering an unhandled promise rejection, issuing only a warning. This behavior contradicts the anticipated automatic exit of the Node.js process after version 15.
    • issues/56418
  • Subprocess Output Handling in Node.js: The child_process.execFile function in Node.js has a bug where subprocesses may resolve with incomplete stdout output. This is due to a race condition caused by the internal kill function destroying IO streams prematurely. The issue leads to inconsistent behavior compared to spawn, making it difficult for client code to determine if the output is complete.
    • issues/56430
  • File System Operations and Resource Management: Node.js has encountered issues with file system operations, particularly when using fs.promises.rm on Windows. Attempting to delete a large directory tree without sufficient permissions can lead to excessive RAM usage and potential out-of-memory exceptions. This behavior indicates a need for better resource management and error handling in file system operations.
    • issues/56433
  • SQLite Functionality and Configuration in Node.js: There are issues related to SQLite functionality and configuration in Node.js. For example, executing the VACUUM INTO command on Windows fails due to a missing function, suggesting a misconfiguration in SQLite compilation. Additionally, there is a request to support TypedArray with the statement.run method, indicating a need for enhanced SQLite support.
    • issues/56384
    • issues/56435
  • Multithreading and Thread Safety in Node.js: Node.js version 18.20.5 has a bug where using a ThreadSafeFunction in a multithreaded environment causes an EXC_BAD_ACCESS error. This issue does not occur in later versions, suggesting it may be related to changes introduced between versions 18.18.2 and 18.19.0. The problem highlights the importance of thread safety in multithreaded applications.
    • issues/56432
  • Testing and Assertion Errors in Node.js: An internal assertion error in Node.js has caused failures in testing MongoDB connections. This issue may be due to a bug in Node.js or incorrect usage of its internals, as indicated by the error message and stack trace. Such errors can hinder the development and testing process, necessitating thorough debugging and resolution.
    • issues/56381
  • Docker Environment and File Change Detection: Node.js has a problem with file change detection in a Docker environment on Linux. The node --watch command only restarts once when a file is copied using the cp command, instead of restarting with each file change. This issue does not occur when the file is edited directly or when running the same Node.js version in WSL, indicating a specific problem with Docker environments.
    • issues/56389
  • Node.js VM Module Function Prototypes: There is an issue with the Node.js vm module where function prototypes defined within a script using vm.runInContext do not match Function.prototype. Users are seeking a solution to ensure that all functions defined in this context share the same Function.prototype. This problem affects the consistency and expected behavior of functions within the VM context.
    • issues/56413
  • Makefile Configuration for Coverage Testing: A misconfiguration in the Makefile for the coverage-test target has been identified. The path to the cxxcoverage.html file is incorrectly specified, causing difficulties in obtaining the C++ coverage report. This issue highlights the importance of accurate configuration for successful testing and reporting.
    • issues/56431

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

Summarized Issues:

  • Node.js Module Compatibility Issues: Node.js has faced several issues related to module compatibility, particularly with ECMAScript Modules (ESM) and CommonJS (CJS). One issue involved a regression in Node.js version 22.2, where custom ESM loader hooks for worker threads were removed, affecting projects like Angular CLI. Another issue arose in version 22.12.0, where a conflict between CJS and ESM led to errors in building Storybook stories, requiring workarounds to resolve the issue.
    • issues/53195
    • issues/56127
  • Node.js Functionality Bugs: Several bugs have been identified in Node.js that affect its functionality. One such bug involves the assert.partialDeepStrictEqual function, which fails to throw an error when comparing arrays containing 0 and -0. Another bug affects the .pipe() and .pipeTo() methods, which fail when the source stream is constructed from a Buffer, leading to errors without any preconditions.
    • issues/56230
    • issues/56297
  • Node.js Testing and Execution Issues: Node.js has encountered issues related to testing and execution, particularly on specific platforms or with certain file types. A problem was reported where tests using the React Testing Library on Windows consistently crashed Node when reading from a Redux store, which was resolved by ensuring asynchronous operations are awaited. Additionally, there is a need to add support for the .tsx file extension in Node.js to enable running backend code with .tsx files.
    • issues/56378
    • issues/56391
  • Node.js API and Documentation Concerns: There are ongoing discussions and issues related to the Node.js API and its documentation. One issue involves the conflict handling mechanism in the SQLite session extension, where improvements in conflict resolution and error handling documentation are suggested. Another discussion pertains to the documentation for the SQLite API in the Node.js project, highlighting the need for better guidance.
    • issues/56210
    • issues/56423
  • Node.js Prototype and Module Discrepancies: Discrepancies have been noted in Node.js regarding function prototypes and module behavior. An issue was identified where function prototypes defined within a script using vm.runInContext do not match Function.prototype, leading to unexpected behavior. Additionally, a discrepancy exists where the crypto object in the interactive shell behaves differently from the crypto module imported using require('crypto'), due to the use of webcrypto in the shell since version 19.0.0.
    • issues/56412
    • issues/56424

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 issues from the past week.


III. Pull Requests

3.1 Open Pull Requests

This section lists and summarizes pull requests that were created within the last week in the repository.

Pull Requests Opened This Week: 16

Pull Requests:

Key Open Pull Requests

1. inspector: report loadingFinished until the response data is consumed:

  • This pull request proposes changes to the Node.js inspector to defer the Network.loadingFinished event until the response data is fully consumed, ensure the correct request URL with the specified port is reported by retrieving the host from the request headers, and maintain monotonic timestamps in network events.
  • URL: https://github.com/nodejs/node/pull/56372
  • Associated Commits:

2. sqlite: support ArrayBuffer and TypedArray in StatementSync:

  • This pull request introduces support for ArrayBuffer and TypedArray in the StatementSync function of the SQLite module, addressing issue #56384 in the Node.js project.
  • URL: https://github.com/nodejs/node/pull/56385
  • Associated Commits:

3. worker: add eval ts input:

  • This pull request introduces a new feature to the Node.js project by adding an evaluation TypeScript input to the worker module, as indicated by the commit message and the title.
  • URL: https://github.com/nodejs/node/pull/56394
  • Associated Commits:

## Other Pull Requests - Build Process Improvements: The pull request aims to address issues related to building Node.js when the path to the repository contains spaces. It includes modifications to the Makefile to handle paths with spaces more effectively, such as removing unnecessary quotation marks and adding quotes to certain variables. These changes are part of ongoing efforts to improve the build process and ensure compatibility with various development environments. - pull/56401

  • Module URL Handling: This pull request addresses a change in the URL handling within the load sync hook chain of a module. It includes updates to ensure the functionality aligns with the intended behavior, fixing a specific issue related to module URL handling. The changes are part of a collaborative effort to improve the Node.js project by addressing this specific issue.
    • pull/56402
  • Startup Snapshot Creation: The pull request titled "src: drain platform tasks before taking startup snapshot" addresses an issue related to creating a startup snapshot in the Node.js project. The main goal is to ensure that the event loop and platform tasks are drained before a snapshot is created, preventing issues during the snapshot creation process. This change is crucial because platform tasks might hold references to objects associated with a context.
    • pull/56403
  • Multi-thread Debugging Enhancements: This pull request aims to enhance multi-thread debugging in Node.js by utilizing the uv_thread_setname function. The main goal is to provide more meaningful diagnostics when monitoring Node.js threads, allowing users to identify which threads their applications are spending time on. The changes include setting default thread names for various threads and using worker.name to set the thread name when a worker thread is created.
    • pull/56416
  • Streams Documentation Update: The pull request aims to update the documentation for the writableNeedDrain property in the streams module. It clarifies the behavior and usage of writableNeedDrain, providing guidance on handling backpressure effectively. The update includes examples of correct and incorrect backpressure handling to prevent issues such as incomplete data transfer.
    • pull/56419
  • OpenSSL Compatibility: The pull request updates the parallel/test-tls-psk-circuit.js file to accommodate changes in error codes introduced in OpenSSL 3.4. This update is part of ongoing maintenance to ensure compatibility with newer versions of OpenSSL, reflecting changes in error codes due to updates in OpenSSL 3.4.
    • pull/56420
  • Cryptography Code Refactoring: The pull request aims to refactor the Node.js codebase by moving more implementation details related to cryptography to the ncrypto dependency. This helps in organizing the code better and possibly improving maintainability. The changes include moving certain functions and declarations to ncrypto and removing obsolete functions.
    • pull/56421
  • Snapshot Testing Stabilization: The pull request aims to complete the process of marking snapshot testing as stable, which was initially addressed in a previous pull request. It seems that some aspects were overlooked at that time, and this pull request addresses those to finalize the stabilization process.
    • pull/56425
  • Dependabot Configuration: The pull request allows the configuration of the number of open Dependabot pull requests. This change aims to disable all Dependabot PRs from private forks, as the author is frustrated with the excessive notifications from the nodejs-private organization.
    • pull/56427
  • Worker Threads Log Flushing: The pull request addresses an issue where stdout log lines were being cut off when worker threads exited. The proposed fix involves bypassing backpressure when a thread is exiting to ensure that stdout and stderr are properly flushed, resolving the issue with worker threads and log output.
    • pull/56428
  • Python Linting Configuration: The pull request aims to update the Python linting configuration by removing two rules, PLC1901 and RUF100, from the list of ignored lint rules. The reason for this change is that removing these rules does not result in any errors, and maintaining a shorter ignore list is considered beneficial.
    • pull/56429
  • Test Runner API Addition: This pull request introduces a new API, assert.register(), to the test runner. This API allows users to define custom assertion functions within the TestContext, addressing and fixing a specific issue tracked in the Node.js project.
    • pull/56434
  • Source Map Testing Coverage: The pull request aims to add initial coverage for source map tests based on the ECMA426 standard. It mentions that source maps have been standardized as ECMA426 and references a developing test suite, with plans for an automated updater in a future update.
    • pull/56436

3.2 Closed Pull Requests

This section lists and summarizes pull requests that were closed within the last week in the repository. Similar pull requests are grouped, and associated commits are linked if applicable.

Pull Requests Closed This Week: 30

Pull Requests:

Key Closed Pull Requests

1. doc: expand description of parseArg's default:

  • This pull request expands the documentation for the parseArg function's default parameter in the Node.js project, addressing feedback from a specific issue comment and including multiple commits that refine the wording and terminology used.
  • URL: https://github.com/nodejs/node/pull/54431
  • Associated Commits:

2. node-api: define version 10:

  • This pull request defines version 10 of the Node API, introducing notable runtime changes such as returning node_api_cannot_run_js instead of napi_pending_exception and allowing the creation of references to objects, functions, and symbols.
  • URL: https://github.com/nodejs/node/pull/55676
  • Associated Commits:

3. tools: made prints across build_addons.py more consistent and added e…:

  • This pull request aims to enhance the consistency of print statements in the build_addons.py file by exclusively using f-strings and introduces an exception handling mechanism at the end of the main() function to facilitate easier debugging for users.
  • URL: https://github.com/nodejs/node/pull/55807
  • Associated Commits:

Other Pull Requests

  • module: avoid throwing when findPackageJSON is called on nonexistent: This pull request addresses an edge-case in the Node.js module system where the ESMLoader cannot resolve a target. The fix ensures that the function returns undefined instead of throwing an error, aligning with the documented behavior. This change improves the robustness of the module by handling unresolved targets gracefully.
    • nodejs/node/pull/55822
    • nodejs/node/pull/56382
  • assert: make partialDeepStrictEqual throw when comparing [0] with [-0]: This pull request ensures that the assert.partialDeepStrictEqual function throws an error when comparing [0] with [-0]. Previously, this comparison might not have been handled correctly, leading to potential issues. The update fixes the issue tracked at nodejs/node#56230.
    • nodejs/node/pull/56237
  • module: unflag --experimental-strip-types: This pull request enables the --experimental-strip-types flag by default in Node.js. The change aims to catch more bugs and is considered a semver minor change, allowing Node.js to execute TypeScript files without additional configuration. The feature remains experimental and may change in the future.
    • nodejs/node/pull/56350
  • sqlite: allow passing conflict resolution handler function: This pull request enhances the SQLite module by allowing a conflict resolution handler function to be passed. The function can return a conflict resolution type based on the conflict type, rather than a static type, improving flexibility. This change is a breaking change, but since the SQLite module is experimental, it is not considered an issue.
    • nodejs/node/pull/56352
  • test: add ts eval snapshots: This pull request focuses on testing and refactoring related to TypeScript evaluation snapshots. It includes light refactoring and printing error messages from --eval with TypeScript, enhancing the testing framework. The changes aim to improve the clarity and effectiveness of the tests.
    • nodejs/node/pull/56358
  • lib: add typescript support to STDIN eval: This pull request adds TypeScript support for evaluating code from the standard input (STDIN) in Node.js. It enhances the Node.js library by allowing TypeScript code to be evaluated directly from the command line input, which is useful for developers working with TypeScript.
    • nodejs/node/pull/56359
  • test: remove flaky designation: Several pull requests address the removal of flaky designations from specific tests in the Node.js test suite. These changes aim to improve the reliability and stability of the test suite by addressing underlying issues causing flakiness.
    • nodejs/node/pull/56364
    • nodejs/node/pull/56365
    • nodejs/node/pull/56369
  • process: add process.ref() and process.unref() methods: This pull request introduces new methods, process.ref() and process.unref(), to the Node.js process module. These methods replace the ref() and unref() methods currently defined on individual API objects, streamlining the API and ensuring consistency across new developments.
    • nodejs/node/pull/56400
  • doc: add example for piping ReadableStream: This pull request adds documentation to illustrate how to pipe a ReadableStream created from an Iterable into a WritableStream. It specifies that the objects in the Iterable should be Buffers, TypedArrays, or DataViews, providing a clear example for developers.
    • nodejs/node/pull/56414
    • nodejs/node/pull/56415
  • src: use v8::LocalVector consistently with other minor cleanups: This pull request updates the Node.js codebase to use v8::LocalVector instead of std::vector>. The change ensures that Local handles are managed correctly, improving code consistency and correctness in handling V8 Local handles.
    • nodejs/node/pull/56417

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 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.

Contributor Commits Pull Requests Issues Comments
aduh95 0 18 1 123
cjihrig 9 3 0 50
Antoine du Hamel 61 0 0 0
joyeecheung 0 7 1 50
marco-ippolito 0 10 0 40
ljharb 0 2 0 37
RafaelGSS 21 8 0 7
jasnell 0 4 0 32
legendecas 0 9 1 19
geeksilva97 0 5 1 22

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