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 via module.registerHooks() for easier module loader customization. Additionally, there are several minor updates across various modules, such as support for blocklists in UDP, enhancements to the permission model, and improvements in the handling of synchronous hooks for module imports.

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). Contributors are encouraged to collaborate constructively, and the project adheres to a Code of Conduct.

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 involves a problem with the Node.js vm module, where function prototypes defined within a script using vm.runInContext do not match Function.prototype as expected. The user has attempted various solutions such as using proxies and custom constructors but has not been successful in ensuring that all functions share the same Function.prototype.

    • 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 detailed information. A user expresses interest in contributing by submitting a pull request, and another user confirms that the task is available for contribution. A pull request related to this issue is mentioned as being 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)": This issue is about a user encountering errors when trying to run Node.js on a Linux system due to incompatible GLIBC versions, specifically missing versions required by Node.js v20.11.0. The user expected to see the Node.js version output but instead received multiple error messages indicating that certain GLIBC and libstdc++ versions were not found.

  • The comments discuss the cause of the error, which is the installation of Node.js on a system with an older GLIBC version than required. Solutions proposed include recompiling Node.js from source, using 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 using 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 for passing the URL to nextLoad is ignored.

    • The comments discuss a potential fix for the issue, with one participant asking if the original poster would like to submit a pull request (PR) to address the bug. The original poster agrees to submit a PR, indicating they will take action to resolve the issue.
    • Number of comments this week: 2
  2. node:sqlite: "VACUUM INTO" gives error "no such function: floor": This issue describes a bug encountered when using the VACUUM INTO command in the node:sqlite subsystem on a Windows platform, where an error "no such function: floor" is thrown if a generated column using the floor() function is present in the database. The expected behavior is for the VACUUM INTO command to execute without errors even when the floor() function is used, suggesting that the problem may be related to SQLite being compiled without the SQLITE_ENABLE_MATH_FUNCTIONS option.

    • The comments discuss that the issue is likely related to the absence of the SQLITE_ENABLE_MATH_FUNCTIONS compilation option in SQLite, which prevents the floor() function from being recognized, rather than an issue with the VACUUM INTO command itself.
    • 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 like -NaN in the DataView.setFloat32 method. This inconsistency leads to sporadic results, returning different byte patterns for the same input. Such behavior can cause unexpected outcomes in applications relying on consistent data processing.
    • issues/56373
  • Memory Management and Event Emission in Node.js: Node.js faces challenges with memory management and event emission, particularly in the http2 compatibility response. The 'close' event is not consistently emitted, potentially leading to memory leaks when a client aborts a request. This inconsistency can affect application stability and resource management.
    • issues/56374
  • Unexpected Process Aborts in Node.js: Several issues in Node.js result in unexpected process aborts instead of graceful error handling. These include using tls.createSecureContext with specific configurations and invoking crypto.generatePrime with FIPS mode enabled. Such abrupt terminations can disrupt application workflows and require immediate attention.
    • 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. This oversight prevents the hook from altering the URL for subsequent stages, limiting the flexibility and functionality of the loader hook system. Developers relying on this feature may face challenges in customizing module loading.
    • issues/56376
  • Node.js Internal Assertion Errors: An internal assertion error in Node.js can prevent successful MongoDB connection testing. This issue may stem from a bug in Node.js or incorrect usage of its internals, as indicated by the error message. Such errors can hinder development and require detailed investigation to resolve.
    • issues/56381
  • TypedArray Support in Node.js SQLite: There is a request to add support for using TypedArray with the statement.run method in Node.js's SQLite implementation. Currently, developers must use a workaround by wrapping the TypedArray in a uint8array. This enhancement would streamline the process and improve efficiency for developers working with SQLite in Node.js.
    • issues/56384
  • File Watcher Behavior in Docker Environments: The node --watch command exhibits inconsistent behavior in Docker environments on Linux. It only restarts once when a file is copied using the cp command, unlike when files are edited directly. This inconsistency can disrupt development workflows that rely on file watching for automatic restarts.
    • issues/56389
  • Function Prototype Mismatch in Node.js vm Module: The Node.js vm module has a problem where function prototypes defined within a script using vm.runInContext do not match Function.prototype. This discrepancy can lead to unexpected behavior and challenges in ensuring consistent function behavior across different contexts.
    • issues/56413
  • Unhandled Promise Rejection Behavior in Docker: Node.js version 18.19.0 running in a Docker container fails to exit as expected on unhandled promise rejections. Instead, it only issues a warning, contradicting the default behavior since Node.js version 15. This issue can lead to unexpected application states and requires attention to ensure proper error handling.
    • issues/56418
  • Race Condition in child_process.execFile: A race condition in the Node.js child_process.execFile function can result in incomplete stdout output. This occurs due to the internal kill function destroying IO streams prematurely, leading to inconsistent behavior compared to spawn. Developers may struggle to determine if the output is complete, affecting application reliability.
    • issues/56430
  • Makefile Misconfiguration for Coverage Reports: The Makefile for the coverage-test target in Node.js has a misconfiguration in the path to the cxxcoverage.html file. This incorrect path specification causes difficulties in obtaining the C++ coverage report, hindering developers' ability to assess code coverage accurately.
    • issues/56431
  • ThreadSafeFunction Error in Multithreaded Environments: Node.js version 18.20.5 experiences an EXC_BAD_ACCESS error when using a ThreadSafeFunction in multithreaded environments. This issue does not occur in later versions, suggesting a regression introduced between versions 18.18.2 and 18.19.0. Such errors can impact application stability and require careful investigation.
    • issues/56432
  • Excessive RAM Usage with fs.promises.rm: Using fs.promises.rm to delete large directory trees without sufficient permissions can lead to excessive RAM usage and potential out-of-memory exceptions. This issue is particularly prevalent on Windows platforms, where permission errors should instead prevent such resource consumption.
    • issues/56433
  • SQLite Functionality Issues on Windows: An error in the node:sqlite subsystem on Windows occurs when executing the VACUUM INTO command. The failure, due to a missing floor function, suggests that SQLite might be compiled without SQLITE_ENABLE_MATH_FUNCTIONS. This limitation can affect database operations and requires attention to ensure full functionality.
    • issues/56435

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 Handling Issues: Node.js has encountered several issues related to module handling, particularly with ECMAScript Modules (ESM) and CommonJS (CJS). One issue involves 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 in version 22.12.0 causes an error during the build process of Storybook stories due to a conflict between CJS and ESM, requiring workarounds to resolve. Additionally, there is a discrepancy in function prototypes when using vm.runInContext, where prototypes do not match Function.prototype.
    • issues/53195
    • issues/56127
    • issues/56412
  • Node.js Stream and Buffer Issues: There are issues in Node.js related to stream handling, particularly when using Buffers. The .pipe() and .pipeTo() methods fail when using a source stream constructed from a Buffer, resulting in errors like "Invalid state" or "Invalid argument type." This problem occurs consistently and highlights a discrepancy in handling streams derived from Buffers.
    • issues/56297
  • Node.js Assertion and Comparison Issues: Node.js has a bug in the assert.partialDeepStrictEqual function, which does not throw an error when comparing arrays containing 0 and -0. This behavior is inconsistent with the assert.deepStrictEqual function, which is expected to behave similarly. This inconsistency can lead to unexpected results in tests and comparisons.
    • issues/56230
  • Node.js SQLite and Conflict Resolution Issues: The SQLite session extension in Node.js has a problem with its conflict handling mechanism. The current implementation incorrectly allows the SQLITE_CHANGESET_REPLACE resolution code to be used in invalid situations, leading to function aborts and errors. Improvements in conflict resolution handling and error reporting are suggested to address these issues.
    • issues/56210
  • Node.js Crypto Module Discrepancy: There is a discrepancy in Node.js where the crypto object in the interactive shell behaves differently from the crypto module imported using require('crypto'). Since Node.js version 19.0.0, the interactive shell uses webcrypto, contrary to the expectation that both should be equivalent. This difference can lead to confusion and unexpected behavior in cryptographic operations.
    • issues/56424
  • Node.js Testing and Asynchronous Operations: A bug in the React Testing Library causes Node to crash on a Windows platform when reading from a Redux store during testing. This issue was resolved by ensuring asynchronous operations are awaited, a solution that was not initially documented. Proper documentation and handling of asynchronous operations are crucial to prevent such crashes.
    • issues/56378
  • Node.js TypeScript Support Enhancement: There is a request to add support for the .tsx file extension in the get_format.js function. This enhancement would enable running backend code with .tsx files using the node --experimental-strip-types command, as the function currently only handles .ts files. This support would improve the flexibility and usability of Node.js for TypeScript projects.
    • issues/56391
  • Node.js Documentation and API Discussion: A discussion was initiated regarding the documentation for the SQLite API in the Node.js project. This discussion, referenced in a pull request, highlights the need for comprehensive and clear documentation to aid developers in effectively using the SQLite API. Proper documentation is essential for the usability and adoption of Node.js features.
    • issues/56423

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 deferring the Network.loadingFinished event until the response data is fully consumed, ensuring the correct request URL with the specified port is reported by retrieving the host from the request headers, and maintaining monotonic timestamps in network events, as referenced in issue #53946.

  • URL: https://github.com/nodejs/node/pull/56372
  • Associated Commits: 1dec91ed08c35fb088509bbe741dfdd4e69d96d4

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: aa1218ffc5978ecb9e4fc6fc09ad68d89a3dc868, 545028df3789ae90d7781f3f93d4c16d736e50d7, 430743a01c9da21246fc431a69d6f2ba4061bf5e

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

Other Open Pull Requests

  • Building Node.js with Spaces in Path: The pull request addresses issues related to building Node.js when the path to the repository contains spaces. It includes modifications to the Makefile to ensure proper handling of paths with spaces, such as removing unnecessary quotation marks and adding quotes to certain variables. The pull request is a draft and depends on upstream changes before it can be finalized.
    • pull/56401
  • URL Change in Load Sync Hook Chain: This pull request fixes an issue related to a URL change in the load sync hook chain. It includes multiple commits that address the issue and improve test readability. The pull request references a specific issue on the Node.js GitHub repository.
    • pull/56402
  • Draining Platform Tasks Before Startup Snapshot: The pull request ensures that platform tasks are drained before creating a startup snapshot. This prevents issues with garbage collection roots and context references, which could lead to assertion errors. The pull request references another related pull request for context.
    • pull/56403
  • Enhancing Multi-Thread Debugging with Thread Naming: This pull request enhances multi-thread debugging in Node.js by using the uv_thread_setname function to provide meaningful diagnostics. It includes several commits that set default thread names for various Node.js components, improving observability and debugging capabilities.
    • pull/56416
  • Clarifying writableNeedDrain in Streams Documentation: The pull request updates the documentation for the writableNeedDrain property in the streams module. It provides examples of correct and incorrect backpressure handling to prevent issues like incomplete data transfer, ensuring efficient data handling in Node.js streams.
    • pull/56419
  • Updating Error Code for OpenSSL 3.4 in TLS Test: This pull request updates a test file to account for changes in error codes introduced in OpenSSL 3.4. The update ensures compatibility with the latest error code changes, maintaining the reliability of the Node.js test suite.
    • pull/56420
  • Refactoring Crypto Module Implementation Details: The pull request refactors the Node.js codebase by moving more implementation details of the crypto module to the ncrypto dependency. This reorganization aims to improve code maintainability and clarity, with several commits addressing different aspects of the refactor.
    • pull/56421
  • Marking Snapshot Testing as Stable: This pull request completes the process of marking snapshot testing as stable, addressing overlooked aspects from a previous pull request. It ensures that snapshot testing is fully recognized as stable within the Node.js test framework.
    • pull/56425
  • Configurable Number of Open Dependabot PRs: The pull request allows the configuration of the number of open Dependabot pull requests, aiming to disable all Dependabot PRs from private forks. This change reduces unnecessary notifications, particularly from the nodejs-private organization.
    • pull/56427
  • Flushing stdout and stderr on Worker Exit: This pull request addresses an issue with worker threads where stdout log lines could be cut off if the thread exited. It ensures that all log lines are properly flushed by bypassing backpressure when the thread is exiting, improving logging reliability.
    • pull/56428
  • Disabling Unneeded Rule Ignoring in Python Linting: The pull request removes two rules, PLC1901 and RUF100, from the list of ignored Python lint rules. This change is justified by the absence of errors upon their removal, maintaining a concise ignore list for Python linting.
    • pull/56429
  • Adding assert.register() API to Test Runner: This pull request introduces a new top-level API assert.register() to the test runner, allowing users to define custom assertion functions. It addresses a specific issue and enhances the flexibility of the Node.js test framework.
    • pull/56434
  • Adding Initial Source Map ECMA426 Coverage: The pull request adds initial test coverage for source maps standardized as ECMA426. It references a developing test suite and plans for an automated updater in future updates, contributing to improved test coverage for new standards.
    • 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: 1f8678e25f9a611e32acde87ab8dfebc72cea4ad, ce1f2290f8503ac42688bdd684b5072f86364b81, 0957ee9532867a94fbc24cd47da8c67e5ff6544e

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: 69e4d6a56ec2bc34da68e9fc78d18570af1222ff, e9de692b3e1e7ae28ecad537eb595429c1312bad

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

Other Closed Pull Requests

  • module updates: The pull requests related to module updates focus on improving the Node.js module system by addressing bugs and enhancing features. One pull request fixes an edge case in the ESMLoader to prevent errors when findPackageJSON is called on nonexistent paths, aligning with the documented behavior. Another pull request proposes enabling the --experimental-strip-types flag by default, allowing Node.js to execute TypeScript files more seamlessly. Additionally, a pull request resolves an issue with asynchronous resolution errors in a synchronous function, providing a more robust solution for findPackageJSON.
    • pull/55822
    • pull/56350
    • pull/56382
  • assert improvements: The pull request related to assert improvements ensures that the assert.partialDeepStrictEqual function throws an error when comparing [0] with [-0]. This change addresses a previously unhandled case, improving the reliability of the assertion function. The update is part of ongoing efforts to enhance the Node.js testing framework.
    • pull/56237
  • sqlite enhancements: The pull request for SQLite enhancements allows users to pass a conflict resolution handler function, which can return a conflict resolution type based on the conflict type. This change is considered a breaking change but is acceptable as the SQLite module is experimental. The pull request includes several commits addressing different aspects of the implementation and documentation.
    • pull/56352
  • typescript support: The pull requests related to TypeScript support focus on improving the integration of TypeScript in Node.js. One pull request adds TypeScript support for evaluating code from the standard input (STDIN), while another introduces the ability to strip types from .tsx files. These changes aim to enhance the developer experience when working with TypeScript in Node.js.
    • pull/56359
    • pull/56392
  • test improvements: Several pull requests focus on improving the Node.js test suite by removing flaky designations from specific tests. These changes aim to enhance the reliability and stability of the test suite, ensuring that tests accurately reflect the behavior of the Node.js codebase.
    • pull/56364
    • pull/56365
    • pull/56369
  • documentation updates: The pull requests related to documentation updates aim to improve the clarity and usefulness of the Node.js documentation. One pull request adds an example for piping a ReadableStream created from an Iterable into a WritableStream, while another updates the README.md file. These changes help developers better understand and utilize Node.js features.
    • pull/56414
    • pull/56415
    • pull/56411
  • process module enhancements: The pull request for process module enhancements introduces new methods, process.ref() and process.unref(), to replace existing methods defined on individual API objects. These new methods are part of an effort to modernize the Node.js API and ensure consistency across different modules.
    • pull/56400
  • configuration file updates: Several pull requests focus on updating configuration files to improve clarity, readability, and maintainability. These updates include changes to .gitpod.yml, .yamllint.yaml, android_configure.py, codecov.yml, node.gni, pyproject.toml, and tsconfig.json. These changes are part of ongoing efforts to maintain and improve the Node.js project infrastructure.
    • pull/56404
    • pull/56405
    • pull/56406
    • pull/56407
    • pull/56408
    • pull/56409
    • pull/56410
  • codebase maintenance: The pull request for codebase maintenance updates the code to use v8::LocalVector instead of std::vector>, ensuring that Local handles are managed correctly. This change is part of ongoing efforts to keep the Node.js codebase up-to-date with best practices and the latest features provided by V8.
    • 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.