Deno v2.8.2

Deno v2.8.2がリリースされています。

deno compile --bundle

deno compile--bundleオプションが追加されています (#34527, #34529, #34531, #34532, #34534)

deno bundleと同様の仕組みでエントリーポイントをバンドルしてから実行可能ファイルを作成してくれます。実行可能ファイルのサイズ削減などが目的で導入されたようです。

また、--minifyオプションによるバンドルの最小化も可能です (#34536)。

JSR

deno publish

JSRパッケージ中の各.wasmファイルにおけるインポートセクションに対して、通常のJavaScript/TypeScriptモジュールと同様にImport mapsに基づいてbare specifierを解決してからJSRへ公開されるように挙動が変更されています (#34549)

deno add

JSRパッケージのインストール時に@latestタグの指定がサポートされています (#32859)

$ deno add jsr:@std/fmt@latest

deno task

複数タスクの一括実行に関する改善

実行するタスクのパターンを指定する際に(!a|b|c)形式での指定がサポートされています (#34506)。具体的にはtest:*(!e2e|integration)形式でパターンを指定すると、test:unitタスクは実行されるもののtest:e2e及びtest:integrationタスクは実行がスキップされます。

また、--recursive--filterによってワークスペース中の複数のパッケージに対するタスクを一括実行する際に、各パッケージ間でタスクが並列実行されるように挙動が変更されています (#34512)

--env-file

--env-fileオプションがサポートされています (#34508)。.envで定義された環境変数が適用された状態でタスクが実行されます。

deno run

deno run<folder>/<subpath>形式でエントリーポイントが指定され かつ 対応するnpmパッケージ向けのマッピングがImport mapsによって定義されている ("<folder>": "npm:folder") 場合、 該当npmパッケージが<subpath>エントリーポイントを提供していなければ、./<folder>/<subpath>形式でローカルファイルへフォールバックするよう挙動が変更されています (#32854)

また、deno check以外のdeno runなどのコマンドでcompilerOptions.verbatimModuleSyntaxの設定が認識されるように改善されています (#34495)

deno lsp

入力補完の改善

deno.jsonimports及び scopesにおけるjsr:/npm:/node: specifier に対する入力補完がサポートされています (#34724)。npmやjsrレジストリへ問い合わせを行った上でパッケージを提案してくれるようです。

それに加えて、npmパッケージのサブパスに対する入力補完 (npm:<package>/<subpath>) がサポートされています (#34675)

テスト実行の改善

Deno.TestContext#step()がヘルパー関数によってラップされているケースにおけるテストの実行がサポートされています (#34648)

パフォーマンス改善

LSPがアイドル状態である場合にGCの実行を指示することで、メモリ使用量の削減を図る改善が実施されています (#34727)

deno jupyter

内部的な変更ではありますが、Jupyterカーネルの実装がJavaScriptによって書き換えられているようです (#34083, #34755)

カーネルプロセスがshutdown_replyを送信した後も生存し続けてしまう問題が修正されています (#34554)

また、jupyter executeが失敗してしまう問題が修正されています (#34483)

DENO_PATCH_REACT_CVE

DENO_PATCH_REACT_CVE環境変数が導入されています (#34676)

本環境変数を設定しておくと、React Server ComponentsにおけるCVE-2025-55182及びCVE-2025-55184向けのパッチが内部的に適用されるようです。

Web API

PerformanceObserver

PerformanceObserver#observe()におけるbufferedオプションがサポートされています (#34748)

Request

Requestにおける以下のプロパティーが実装されています (#34607):

  • cache
  • credentials
  • integrity
  • keepalive
  • mode
  • referrer
  • referrerPolicy

Web Crypto

webcrypto-modern-algos向けに以下のアルゴリズムのサポートが実施されています (#34417, #34447, #34448):

  • SHAKE128
  • SHAKE256
  • cSHAKE128
  • cSHAKE256
  • TurboSHAKE128
  • TurboSHAKE256
  • ChaCha20-Poly1305
  • ML-KEM-512
  • ML-KEM-768
  • ML-KEM-1024
  • ML-DSA-44
  • ML-DSA-65
  • ML-DSA-87

Node.js互換性の改善

--use-env-proxy

--use-env-proxy及びNODE_USE_ENV_PROXYが追加されています (#34257)。これらが指定されると、node:http(s)HTTP_PROXYなどの環境変数を認識してくれます。

Conditional exports

module-syncがサポートされています (#34599)

node:module

以下のAPIが実装されています:

node:test/reporters

node:test/reportersモジュールが実装されています (#34595)

node:vm

各種APIのimportModuleDynamicallyコールバックがサポートされています (#34572)

node:child_process

spawn()におけるwindowsHideオプションがサポートされています (#34627)

node:v8

setFlagsFromString()--expose_gcの設定がサポートされています (#34604)

node:http

DENO_SERVE_ADDRESSがサポートされています (#34662)。listen()の実行時にこの環境変数の設定が適用されます。

freshのOrganization/ドメインの移行と今後の計画について

今までfreshの開発はdenoland Organizationで行われてきましたが、直近でfreshframeworkというOrganizationへ移行されているようです。

この対応に合わせて、Webページのドメインもfresh.deno.devからusefresh.devへ移行されています。

移行の経緯については以下のDiscussionに説明されています:

より多くの人々がコントリビュートしやすくすることが主な目的のようです。

freshの今後の計画についても共有されています。現状、freshではesbuildとViteの2つのビルドツールに対応していますが、今後はViteのみに限定される方針のようです。

また、@preact/signalsとの統合の強化や、Islandのpropsに対する関数のサポートなども検討されているようです。

swcからoxcへの移行について

現時点ではまだマージされていませんが、Denoの内部で使用されているdeno_astにおいてswcからoxcへ移行するPRが作成されています:

以前にもdeno lintコマンドの内部実装をoxlintへ移行する対応の実施が試みられており、それに関連した対応である可能性もありそうです。