Deno v2.8

はじめに Deno v2.8がリリースされました。 この記事では主な変更点などについて紹介します。 グローバルAPIに関する破壊的変更 タイマーAPI globalThis.setTimeout()やglobalThis.setInterval()などのタイマーAPIにおいて、Web標準ではなくNode.jsベースの実装が使用されるように変更されています (#33249) これにより、これらのAPIからはnumber型ではなくnode:timersモジュールのTimeoutやImmediateなどのオブジェクトが返却されます。 また、この変更に伴い、TypeScriptで自動的にlib: ["node"]が設定されるように変更されています (#33823) URLSearchParams globalThis.URLSearchParamsがNode.js互換となるように修正されています (#34119) 軽微ですが、コンストラクター引数としてnullやundefinedを渡した際の振る舞いが若干異なるようです。 deno add/deno install npm:プレフィックスの指定の省略がサポート deno addの引数に指定したパッケージでnpm:及びjsr:が省略された場合、デフォルトでnpm:が指定されたものとみなすよう挙動が変更されています (#33246, #34290) # 下記は`deno add npm:zod`と同様に振る舞います $ deno add zod --prod/--skip-types deno installコマンドに--prod/--skip-typesオプションが追加されています (#33248) --prodオプションを指定すると、package.jsonのdevDependenciesに指定されたパッケージのインストールがスキップされます。 --skip-typesオプションは--prodとの併用が想定されており、指定されるとpackage.json及びdeno.jsonで指定された@types/*パッケージのインストールがスキップされます。 --package-json deno add/deno install/deno remove/deno uninstallコマンドに--package-jsonオプションが追加されています (#33199) package.jsonとdeno.jsonが併用されたプロジェクトにおいてこれらのコマンドを実行するとデフォルトではdeno.jsonが更新されます。--package-jsonオプションを指定することで、更新対象のファイルをdeno.jsonからpackage.jsonに変更できます。 --os/--arch --os及び--archオプションが追加されています (#32785) Denoはデフォルトで現在のプラットフォームに基づいてnpmパッケージのoptionalDependenciesにおける適切なプラットフォーム向けの依存関係のみをダウンロードしますが、--os及び--archを使用することでこの挙動を変更し、指定されたOS/アーキテクチャー向けの依存関係のダウンロードを行わせることが可能です。 --archと既存のDENO_INSTALL_ARCH環境変数を併用した場合、--archが優先されます。 deno test OpsサニタイザーとResourcesサニタイザーがデフォルトで無効化 OpsサニタイザーとResourcesサニタイザーをデフォルトで無効化する変更が実施されています (#33250) これらを有効化するために、下記いずれかの手段が提供されています。 1. Deno.test Deno.test()の下記オプションをtrueに設定することで、該当テストケースでサニタイザーを有効化できます: sanitizeOps sanitizeResources また、テストファイル内でDeno.test.sanitizer()を実行することで、該当のテストファイル内のすべてのテストケースでサニタイザーを有効化できます。 Deno.test.sanitizer({ ops: true, resources: true, }); Deno....

May 24, 2026

Fresh v2.3

はじめに Fresh v2.3がリリースされました。 この記事では主な変更点などについて解説します。 View Transition API View Transition APIのサポートが行われています (#3708) Partialの仕組みと統合されており、f-client-navによってクライアントナビゲーションが有効化されている要素に対してf-view-transitionを指定することで、Partialによる画面遷移に対してdocument.startViewTransition()が自動で適用されます。 もしブラウザーがView Transition APIをサポートしていない場合は、今まで通り通常のPartialによる画面遷移にフォールバックされます。 不要なJavaScript依存の排除 (Zero JavaScript by Default) アプリケーションがIsland及びPartialのどちらにも依存していない場合、本番ビルドがJavaScriptコードへ依存しないように改善されています (#3696) これによりFresh v1の頃と同様に、必要でなければJavaScriptコードがブラウザーに送信されなくなります。 WebSocketサポート FreshにWebSocketの公式サポートが追加されています (#3774) App#ws()メソッドが追加されており、WebSocket用のエンドポイントを定義することができます。またContext#upgrade()メソッドも追加されており、より柔軟にWebSocket向けのエンドポイントを実装することも可能です。 Islandに対するTemporalのサポート Islandコンポーネントのpropsに対するTemporal関連のオブジェクトの指定がサポートされています (#3701) なおTemporal APIについてはDeno v2.7にて安定化されています。 ipFilter()ミドルウェア @fresh/coreパッケージにipFilter()が追加されています (#3035) @std/net/unstable-ipのmatchSubnets()をベースに実装されており、指定されたCIDR表記に基づいてアクセス制限を掛けることができます。 csp() - リクエストごとのnonceの生成がサポート csp()ミドルウェアにuseNonceオプションが追加されています (#3709) このオプションにtrueが設定された場合、FreshはSSRごとに一意なnonceを生成し、各種インライン<script>や<style>に設定した上で、Content-Security-Policyヘッダーの各種ディレクティブに対してunsafe-inlineではなくnonce-<nonce>を設定してくれます。 trustProxyオプション AppにtrustProxyオプションが追加されています (#3757) このオプションにtrue が指定されると、ContextオブジェクトのurlプロパティーがX-Forwarded-Proto及びX-Forwarded-Hostヘッダーを考慮して設定されます。 複数静的ディレクトリのサポート staticDirオプションで配列の指定がサポートされています (#3759) Viteプラグイン (@fresh/plugin-vite) においてstaticDirオプションで配列が指定された場合、最初の要素 (ディレクトリ) がViteのpublicDirオプションに指定され、それ以外はFreshの開発サーバーから配信されるようです。 フォームに対する_freshIndicatorのサポート Partialが適用されたformまたはbutton[type=submit]要素に対して、ref経由で_freshIndicator属性にSignalを設定しておくことで、該当のフォームがsubmitされる際に_freshIndicatorに設定されたSignalが自動的にtrueに更新されます (#3753)。これにより該当のSignalの値を元にローディングのアニメーションを表示することなどが可能です。 @fresh/init - deno createのサポート @fresh/initパッケージでdeno createコマンドによるプロジェクトの作成がサポートされています (#3706, #3746) これによりdeno create jsr@fresh/initコマンドでプロジェクトが作成できます。...

April 26, 2026

2026/04/06〜2025/04/12の最新情報

Deno v2.7.12 Deno v2.7.12がリリースされています。 OpenTelemetry OTEL_EXPORTER_OTLP_TIMEOUT環境変数が追加されています (#33159) バックエンド向けに Signal を送信する際のタイムアウトをミリ秒単位で設定できます (デフォルトは10秒) deno repl タブ補完の実装においてLSPの使用を廃止し、CDP (Runtime.getPropertiesなど) のみを使用するように変更されています (#33119) これにより起動速度などの改善が期待されそうです。 パーミッション --deny-netにおいてIPv4-mapped IPv6 addressなどが意図せず許可されてしまうことがある問題が修正されています (#33203, #33223) Node.js互換性の改善 node:http 内部クラスであるHTTPParserがllhttpを使用して再実装されています (#33202) 内部的な変更ではあり、まだ実際に使用されているわけではなさそうですが、今後、HTTP関連の互換性がさらに改善されそうです。 node:net connect()のfdオプションのサポートが追加されています (#33150, #33155, #33136) また、ServerやSocketのref()メソッドが動作するように改善されています (#33174) node:child_process spawnSync()でtimeout及びkillSignalオプションがサポートされています (#32810) spawn()のstdioオプションにおいてファイルディスクリプターの指定がサポートされています (#33140) また、ChildProcess.stdio[fd]などに設定されるオブジェクトがRustで再実装されています (#33165) node:dns getDefaultResultOrder()が追加されています (#33197) node:fs open()やopenSync()がridではなくファイルディスクリプターを返却するように改善されています(#33039) その他のfdを引数として受け取る各種APIも rid ではなく実際のファイルディスクリプターを考慮するように改善されています。 links deno.jsonのlinksに指定されたnpmパッケージがpeerDependenciesを定義しており かつ deno.lockが存在している場合にエラーが発生してしまう問題が修正されています (#33143) WebAPI GPUQueue#writeBuffer() GPUQueue#writeBuffer()のdata引数におけるArrayBufferの指定がサポートされています (#33152) Worker Workerにおけるメモリリークが修正されています (#33200)

April 12, 2026

2026/03/23〜2025/03/29の最新情報

Deno v2.7.8 & Deno v2.7.9 Deno v2.7.8とDeno v2.7.9がリリースされています。 OpenTelemetry OTEL_EXPORTER_OTLP_PROTOCOL=console OTEL_EXPORTER_OTLP_PROTOCOL=consoleがサポートされています (#32717)。これが指定されると、シグナルがOpenTelemetryバックエンドではなく標準エラー出力に書き込まれます。 使用例として、DENO_AUDIT_PERMISSIONS=otelと併用することで、アプリケーションが要求したパーミッションをログに出力することができます: $ cat main.js console.info(Deno.env.get("FOO")); $ OTEL_DENO=true \ DENO_AUDIT_PERMISSIONS=otel \ OTEL_EXPORTER_OTLP_PROTOCOL=console \ deno run -E=FOO main.js LOG [INFO] 2026-03-29T07:33:36.045Z "env: FOO" scope: deno@2.7.9 deno.permission.type: "env" deno.permission.value: "FOO" deno.permission.stack: "" LOG [INFO] 2026-03-29T07:33:36.046Z "foo " scope: deno@2.7.9 log.iostream: "stdout" http.route Deno.serve()のハンドラー内からtrace.getActiveSpan()で取得したSpanにおいてhttp.route属性の設定がサポートされています (#32720) deno install -g jsrパッケージのインストールが改善 deno install -gでjsrパッケージをインストールする際に、そのパッケージが提供するdeno....

March 29, 2026

2026/03/16〜2025/03/22の最新情報

Deno v2.7.6 & Deno v2.7.7 Deno v2.7.6とDeno v2.7.7がリリースされています。 --cpu-prof --cpu-prof-flamegraphオプションが追加されています (#32572, #32716) フレームグラフをSVG形式で出力してくれます: $ deno run --cpu-prof-flamegraph --cpu-prof-name=cli.cpuprofile --cpu-prof-dir=cpu-profile -R src/cli.ts $ open cpu-profile/cli.svg --cpu-prof-flamegraphオプションの公式ドキュメントも追加されています (denoland/docs#2975) また、--cpu-profオプション関連の出力に対してソースマップが適用されるよう改善されています (#32634) deno eval --extオプションを指定しなくても、与えられたソースコードがCJSかESMかを自動的に判定してくれるように改善されています (#32472) シグナル --watchオプション使用時にファイルの変更もしくはCtrl+Cの入力が検出された際に、SIGTERMシグナル向けのリスナーが呼ばれるように挙動が改善されています (#32564) また、Windowsで下記改善が実施されています (#32689) Deno.addSignalListener()でSIGQUITとSIGTERMがサポート Deno.kill()でSIGQUIT/SIGKILL/SIGTERM/SIGABRTがサポート OpenTelemetry console.log()やconsole.error()などの第1引数にErrorオブジェクトが渡された場合、Semantic Conventionsに従って Log レコードに下記の属性が追加されるように改善されています (#32726) exception.type exception.message exception.stacktrace また、Log レコードにlog.iostream属性を設定する改善も実施されています (#32723)。console.error()またはconsole.warn()によるログの出力の場合はstderr, それ以外の場合はstdoutが設定されます。 また、Attributes への配列の指定がサポートされています (#32748) Node.js互換性の改善 deno install 書き込み権限が付与されていない実行可能ファイル (bin) を配布するnpmパッケージのインストールに失敗してしまう問題が修正されています (#32632) node:util 下記APIが実装されています (#32793):...

March 22, 2026

2026/03/09〜2025/03/15の最新情報

Deno v2.7.5 Deno v2.7.5がリリースされています。 --cpu-prof --cpu-prof, --cpu-prof-dir, --cpu-prof-name, --cpu-prof-interval, 及び--cpu-prof-mdオプションが追加されています (#31909) あわせて公式ドキュメントの追加も実施されています (docs: add CPU profiling section to debugging page (#2962)) --cpu-profオプションを指定すると、CPUプロファイラーが有効化され、プロセス終了時にデフォルトでカレントディレクトリにCPUプロファイルが保存されます (デフォルトで CPU.<timestamp>.<pid>.cpuprofile という名前で保存されます。--cpu-prof-dirオプションで出力先ディレクトリ、--cpu-prof-nameオプションでファイル名をカスタマイズ可能です) $ deno run --cpu-prof --cpu-prof-name=cli.cpuprofile -R src/cli.ts $ file cli.cpuprofile cli.cpuprofile: JSON data また、--cpu-prof-md オプションを指定すると、プロファイル結果をMarkdown形式で出力してくれます。 $ deno run --cpu-prof-md --cpu-prof-name=cli.cpuprofile -R src/cli.ts $ cat cli.md # CPU Profile | Duration | Samples | Interval | Functions | | --- | --- | --- | --- | | 414....

March 15, 2026

2026/01/19〜2026/01/25の最新情報

Deno v2.6.6 Deno v2.6.6がリリースされています。 deno task deno_task_shellが0.26.2から0.28.0へアップデートされています (#31913) https://github.com/denoland/deno_task_shell/releases/tag/0.27.0 https://github.com/denoland/deno_task_shell/releases/tag/0.28.0 これによりshoptがサポートされています (denoland/deno_task_shell#164)。現状では以下のオプションがサポートされています (デフォルトでは failglob 及び globstar が有効化されています) failglob nullglob globstar また、setコマンドも実装されています。現状では pipefail オプションの設定がサポートされています。 これらの改善に関する公式ドキュメントも追加されています (denoland/docs#2855) deno check --unstable-tsgo deno check --unstable-tsgoによる型チェックで typescript-goをダウンロードする際にプログレスバーが表示されるよう改善されています (#31893) Inspector UNSTABLE_INSPECTOR_WS_EVENTS UNSTABLE_INSPECTOR_WS_EVENTSという環境変数が追加されています (#31901)。この環境変数が指定されると、Inspector (--inspect) において /ws/events という WebSocket エンドポイントが有効化されます。 現時点では--watchとの併用が想定されており、監視対象のファイルが変更された際に、WebSocket クライアントに対してtype: "restart"というイベントが通知されます ホスト名またはポートの省略がサポート --inspect/--inspect-brk/--inspect-waitオプションにおいてホスト名またはポートの指定が省略できるよう改善されています (#31881) ホスト名を省略した場合、127.0.0.1がデフォルトで使用されます ポートを省略した場合、9229がデフォルトで使用されます OpenTelemetry Deno.cron()が計装されています (#31916) OpenTelemetryサポートが有効化されていれば、Deno.cron()に渡したハンドラーが自動的にdeno.cronという名前のSpanでラップされます。 Crypto SHA3-256/SHA3-384/SHA3-512がサポートされています (#31668) node:assert node:assertを@std/assertベースではなくNode.js 24.12.0本体の実装をベースとすることで、互換性を改善するための対応が実施されています (#31821) node:perf_hooks PerformanceObserverが実装されています (#31875)...

January 25, 2026

2025/12/15〜2025/12/21の最新情報

Deno v2.6.1 Deno v2.6.1がリリースされています。 deno x - Windows向けの改善 Deno v2.6.0で実装されたdeno xコマンドについて、Windows向けの改善が実施されています。 まずWindowsにおいてdxコマンドが実行できなかった問題が修正されています (#31573) また、Winodwsでdeno xによってネイティブバイナリーを実行できるようにする改善が実施されています (#31551) deno add - jsrパッケージのダウンロードに関する挙動の修正 deno addコマンドでjsrパッケージを追加した際に、該当パッケージ内における type-only import 先のモジュールがダウンロード対象から除外されてしまう問題が修正されています (#31552) deno deploy - deploy.appの省略がサポート deno.jsonのdeployフィールドにおいて、appフィールドの設定を省略できるよう改善されています (#31567) --require/--preloadに関する修正 --require及び--preloadオプションがdeno bundleなどの非ランタイムコマンドでも利用できていた問題が修正されています (#31614) node:sqlite 様々な改善が実施されています (#31515) DatabaseSync#location()が実装 DatabaseSyncでtimeoutオプションがサポート DatabaseSyncのisOpen及びisTransactionプロパティーが実装 DatabaseSyncコンストラクタ及びbackup()のpath引数においてURL及びBufferによる指定がサポート Stream関連の型定義の改善 Deno v2.6.0におけるStreamの移譲のサポートに合わせて、MessagePort#postMessage()のtransferオプションなどで、ReadableStream/WritableStream/TransformStreamを受け入れるよう型定義が改善されています (#31586) Deno v2.6.2 Deno v2.6.2がリリースされています。 deno sandbox Deno Sandboxesと連携するためのdeno sandboxコマンドが追加されています (#31568, #31657) 内部的には@deno/deployパッケージ経由で@deno/sandboxパッケージが実行されており、deno sandbox createコマンドによるサンドボックスの作成、deno sandbox execコマンドによるサンドボックス内でのコマンドの実行などがサポートされているようです (参考: @deno/deploy@0.0.75/sandbox.ts) OpenTelemetry 下記APIが動作するよう、Baggage などに関する実装が修正されています (#31620)...

December 21, 2025

2025/07/14〜2025/07/20の最新情報

Deno v2.4.2 Deno v2.4.2がリリースされています。 deno lsp - tsconfig.jsonのサポート Deno v2.4でdeno checkに導入されたtsconfig.jsonへのサポートがdeno lspに対しても導入されました (#30007) deno check tsconfig.json deno.jsonがcompilerOptionsを持っている場合、tsconfig.jsonよりも優先して参照されるように挙動が変更されています (#30056) また、tsconfig.jsonが検出された際は、tscと同様にnoImplicitOverrideとstrictがデフォルトでfalseとして設定されるように挙動が変更されています (#30045) Side effect import に関するバグ修正 node_modulesディレクトリがある状態で Side effect import が使用されると、ERR_TYPES_NOT_FOUNDエラーが起きてしまう問題が修正されています (#29926) deno bundle - compilerOptions.jsxImportSourceのデフォルト値がreactに設定 compilerOptions.jsxImportSourceが未設定の場合でもJSXファイルを含むコードをバンドルできるよう、compilerOptions.jsxImportSourceのデフォルト値がreactに設定されています (#30082) --unstable-raw-imports - npmパッケージ中のファイルの読み込みがサポート --unstable-raw-importsが指定された場合、npmパッケージ中のファイルに対する文字列もしくはバイト形式によるimportがサポートされています (#30065) シグナルハンドリングの再実装 Denoの内部でシグナルハンドリングに関する再実装が実施されています (#30029) deno_signalsという crate の追加やDeno v2.4.1で Revert されたシグナル受信時にOpenTelemetryシグナルをフラッシュする対応が改めて実施されています。 Node.js互換性に関するバグ修正 globalThis.globalが上書きできない問題が修正されています (#30032) また、node:fsのexists()に不正なパスが渡された場合、エラーとするのではなくfalseを返却するように挙動が修正されています (#29971) @deno/esbuild-plugin@1.1.0 @deno/esbuild-pluginのv1.1.0がリリースされています。 Deno v2.4.0で導入されたテキストまたはバイト形式によるファイルのimportがサポートされています (type: "bytes" & type: "text") Upyo - クロスプラットフォームで動作するメール送信ライブラリ Upyo というメール送信のためのライブラリが公開されています。 リポジトリ: dahlia/upyo JSRパッケージ: jsr:@upyo/core npmパッケージ: npm:@upyo/core Deno/Node....

July 20, 2025

2025/07/07〜2025/07/13の最新情報

Deno v2.4.1 Deno v2.4.1がリリースされています。 Tunnelling deno runに--connectedオプションが追加されています (#30022)。 おそらくDeno Deploy Early Accessに関連した機能であると思われます。 deno runに--connectedオプションもしくはDENO_CONNECTED環境変数が指定されると、まずDenoは指定されたQUICのエンドポイントへ自動的に接続を開始します。デフォルトではtunnel.global.prod.deno-cluster.net:443へ接続されるようです (deno_tunnelというリポジトリが公開されており、おそらくこれが利用されていると思われます) その後、このDenoプロセス内でDeno.serve()が呼ばれると、Denoは起動時に接続されたQUICコネクションからリクエストを待ち受けるよう挙動が変更されるようです。 QUICエンドポイントへの認証については、deno deploy tunnel-loginコマンドによって取得したトークンを使用して認証が行われるようです (トークンはkeyring-rsを使用して保存されるようです)。また、この際にdeno.jsonのdeployフィールドに設定情報が保存されるようです (org, app) OpenTelemetry vsockトランスポート OTEL_DENO_VSOCK環境変数がサポートされています (#30001) この環境変数にカンマ区切りでCIDとポートを設定しておくと、指定されたvsock向けに Signals が送信されるようです。 Deno v2.3.5での対応のロールバック Deno v2.3.5で実施された、シグナル受信時にバッファリングされていた Signals をフラッシュする対応が Revert されています (#30019) プロセスが意図せず終了しなくなってしまう問題が発生することがあるようで、それを回避することが目的のようです (#29590) deno bundleのバグ修正 deno bundleに関するバグ修正が実施されています: ブラウザー向けのバンドル (--platform browser) がブラウザーでうまく動作しない問題が修正されています (#30023) --minifyが適用された場合にrequire()が適切に動作するよう修正されています (#29997) npmパッケージ中のsloppy importsが適切に解決されるよう改善されています (#29989) deno serve - Import mapsによるエントリーポイントの解決がサポート Deno v2.4でdeno runコマンドに導入されたImport mapsによるエントリーポイントの解決がdeno serveコマンドでも動作するよう改善されています (#29974) --unstable-raw-imports - npmパッケージに関する挙動の変更 npmパッケージ中にtype: "text"もしくはtype: "bytes"形式のimportが検出された場合、--allow-readを要求するように挙動が変更されています (#29990)...

July 13, 2025