Deno v2.2.9stable Released Apr 11, 2025
Impact Score: 5/10

Deno v2.2.9 β€” Release Notes & Engineering Impact

Source available β€” automated, not human-reviewed

Component: deno Β· Channel: stable. Automated analysis, not a compatibility certification. How this works.

Analysis updated: 2026-11-01.

Compatibility not verified β€” check source notes
πŸ“„ .MD
⚑ Executive Summary (TL;DR)

Deno v2.2.9. Source highlight: Or install for the first time

Who Does This Impact? (Role-Based Analysis)

πŸ’» Software Engineers & Devs

Check the source notes against the package and APIs you use before upgrading.

πŸ“Š Product & Engineering Leads

Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.

βš™οΈ DevOps & Security

Verify the target version, runtime requirements and rollback procedure in the official documentation.

⚑ Performance & Enhancements (6)

  • **File System Streams:** The `fs/promises` FileHandle class now supports the `.createReadStream()` and `.createWriteStream()` methods (#28700).
  • **Command-Line Parsing:** The experimental `util.parseArgs()` API now correctly supports negated flags (the `--no-` prefix) via its `allowNegative` option (#28811).
  • **Buffer APIs:** Deno implements the new `Buffer.copyBytesFrom()` static method (#28829) and ensures that cipher methods return a Node `Buffer` object (#28826).
  • **Crypto Algorithms:** SHAKE-128 and SHAKE-256 algorithm names are now aliased with hyphenated forms (#28451).
  • **Process and OS:** Implements `process.loadEnvFile(path)` (#28824) and a working `.reset()` on the event loop delay histogram (#2888).
  • **Streams and Zlib:** `stream.finished()` now supports Web Streams (#28600); zlib errors are more descriptive (#28831).

πŸ”§ Bug Fixes & Patches (6)

  • Handle missing `"bin"` in `package.json` by using registry metadata (#28822).
  • Fix regression where postinstall scripts without extensions were skipped (#28786).
  • Unstable ability to load npm resolution snapshot directly from lockfile for faster startup (#28647).
  • Add decorators to the lint AST (#28834), fix parent types (#28802), and group traversal (#28803).
  • Fix integer overflow in `createImageBitmap()` (#28764).
  • Upgrade embedded `libffi` to 4.0.0 (#28816).
πŸ“„ View Raw Release Notes (Original Developer Log)
Upgrade ``` deno upgrade ``` Or install for the first time ``` curl -fsSL https://deno.land/install.sh | sh ``` ### `deno compile` fixes Two fixes make the `deno compile` tool more robust. First, a bug causing a **panic when a `node_modules` directory was included** during compilation was fixed ([#28782](https://github.com/denoland/deno/pull/28782)). Previously, running `deno compile` in a project with a `node_modules` folder could crash the compiler; now it handles such folders gracefully without errors. Second, on Windows, **executable icons are embedded correctly** when using the `--icon` option ([#28771](https://github.com/denoland/deno/pull/28771)). Deno now preserves the proper resource ordering for multi-resolution `.ico` files, so compiled .exe files will display their icon in all sizes as expected. Together, these improvements make Deno’s single-binary compilation more reliable across different project structures and platforms. ### Node.js Compatibility Enhancements This release brings a host of improvements to Deno’s Node compatibility layer, implementing missing APIs and fixing inconsistencies: - **File System Streams:** The `fs/promises` FileHandle class now supports the `.createReadStream()` and `.createWriteStream()` methods ([#28700](https://github.com/denoland/deno/pull/28700)). - **Command-Line Parsing:** The experimental `util.parseArgs()` API now correctly supports negated flags (the `--no-` prefix) via its `allowNegative` option ([#28811](https://github.com/denoland/deno/pull/28811)). - **Buffer APIs:** Deno implements the new `Buffer.copyBytesFrom()` static method ([#28829](https://github.com/denoland/deno/pull/28829)) and ensures that cipher methods return a Node `Buffer` object ([#28826](https://github.com/denoland/deno/pull/28826)). - **Crypto Algorithms:** SHAKE-128 and SHAKE-256 algorithm names are now aliased with hyphenated forms ([#28451](https://github.com/denoland/deno/pull/28451)). - **Process and OS:** Implements `process.loadEnvFile(path)` ([#28824](https://github.com/denoland/deno/pull/28824)) and a working `.reset()` on the event loop delay histogram ([#2888](https://github.com/denoland/deno/pull/28788)). - **Streams and Zlib:** `stream.finished()` now supports Web Streams ([#28600](https://github.com/denoland/deno/pull/28600)); zlib errors are more descriptive ([#28831](https://github.com/denoland/deno/pull/28831)). - **Child Processes:** `spawnSync` now accepts the `input` option ([#28792](https://github.com/denoland/deno/pull/28792)). ### npm and Package Management Fixes - Handle missing `"bin"` in `package.json` by using registry metadata ([#28822](https://github.com/denoland/deno/pull/28822)). - Fix regression where postinstall scripts without extensions were skipped ([#28786](https://github.com/denoland/deno/pull/28786)). - Unstable ability to load npm resolution snapshot directly from lockfile for faster startup ([#28647](https://github.com/denoland/deno/pull/28647)). ### Task Runner Shell Features `deno task` now supports backticks and tilde (`~`) expansion ([#28832](https://github.com/denoland/deno/pull/28832)). For example: ```jsonc { "tasks": { // outputs to a file with a path like: /home/user/logs/2025-04-12T01:38-04:00.log "build": "deno job.ts > ~/logs/`date -Im`.log" } } ``` ### Developer Tools (LSP & Linting) - Filter out unmapped npm cache paths from auto-imports ([#28841](https://github.com/denoland/deno/pull/28841)). - Add decorators to the lint AST ([#28834](https://github.com/denoland/deno/pull/28834)), fix parent types ([#28802](https://github.com/denoland/deno/pull/28802)), and group traversal ([#28803](https://github.com/denoland/deno/pull/28803)). ### Crash Reporting & Symbolication Bug Fixes This patch release includes fixes for issues introduced by the new [panic.deno.com](https://panic.deno.com/) crash reporting system added in recent versions. On macOS, the Deno binary now **preserves Node API (N-API) symbols** that were previously stripped out as part of the size reduction effort ([#28800](https://github.com/denoland/deno/pull/28800)). This resolves a regression where native Node addons loaded via `process.dlopen()` could fail to load. It also ensures that native panics involving these symbols can still be properly symbolicated. In addition, **canary panic URLs now include the full Git commit SHA** ([#28819](https://github.com/denoland/deno/pull/28819)), improving reliability of remote symbolication for nightly builds. These changes fix rough edges in the new crash reporting pipeline and restore compatibility with common use cases. ### Other Notable Fixes - Fix integer overflow in `createImageBitmap()` ([#28764](https://github.com/denoland/deno/pull/28764)). - Upgrade embedded `libffi` to 4.0.0 ([#28816](https://github.com/denoland/deno/pull/28816)).