2025/04/28〜2025/05/04の最新情報

Deno v2.3.0 Deno v2.3.0がリリースされました。 以下のページに変更内容をまとめているため、よろしければ参照ください: Deno v2.3 Deno v2.3.1 Deno v2.3.1がリリースされています。 このリリースではDeno v2.3.0において誤ったバージョンが表示されてしまう問題が修正されています。 deno_stdでBunを使用してパッケージのテストコードを実行する仕組みが導入 deno_stdでBunを使用してパッケージのテストコードを実行する仕組みが導入されています: chore: run some test cases in bun in CI #6635 この仕組みによってテストされているパッケージ (_tools/node_test_runner/run_test.mjs) については、Bunでも安定して利用ができる可能性が高そうです。

May 4, 2025

2025/04/21〜2025/04/27の最新情報

Deno v2.2.12 Deno v2.2.12がリリースされています。 Windowsにおけるdeno compileのバグ修正 Deno v2.2.11におけるWindows環境で発生するdeno compileの問題が修正されています。deno compileによって生成した実行可能ファイルがエラーが出ずに実行が終了する問題の修正 (#28986)や、リソースの読み込みに失敗してしまう問題への一時的な対策 (#29005, #29039)などが実施されています。 後述するv2.2.3のRCバージョンにもこれらの変更は取り込まれています。 Deno v2.3について リリース時期について deno.newsにて、Deno v2.3のリリースについて言及されています: Deno v2.3 is almost here まもなくリリース予定のようです。直近でv2.3向けと思われる機能がいくつか追加されているため、紹介します。 Deno.connectでのAbortSignalのサポート Deno.connectにsignalオプションが追加されています (#27113) AbortSignalを指定することで、接続をキャンセルすることができます。現状ではTCP接続のキャンセルのみがサポートされています。 TypeScript v5.8 Deno本体に搭載されたTypeScriptをv5.7からv5.8へアップデートする対応が実施されています: feat: TypeScript 5.8 #29041 このPRはすでにマージされており、Deno v2.3で正式に導入される可能性が高そうです。 DENO_EMIT_CACHE_MODE環境変数 DenoにおいてDENO_EMIT_CACHE_MODEという環境変数をサポートするPRがマージされています: feat(cache): add DENO_EMIT_CACHE_MODE #29025 この環境変数にdisableという値を指定しておくと、DenoがTypeScriptからJavaScriptへトランスパイルした結果のファイルシステムへのキャッシュが無効化されるようです。 Deno v2.3.0-rc.1〜rc.3 Deno v2.3.0のrc.1, rc.2, 及びrc.3がリリースされています: v2.3.0-rc.0〜rc.1 v2.3.0-rc.1〜rc.2 v2.3.0-rc.2〜rc.3 deno lsp 診断 (diagnostics) リダイレクトに関する診断 (The import of \"${from}\" was redirected to \"${to}\"....

April 27, 2025

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

Deno v2.2.9 Deno v2.2.9がリリースされています。 Lockfile v5 Lockfile (deno.lock) の新しいバージョンであるv5が実装されています (#28647, #28842) グローバルキャッシュもしくは--node-modules-dir=auto使用時のプロセスの起動やdeno installの高速化が主な目的のようです。 下記PRにベンチマークが掲載されていますが、--node-modules-dir=auto使用時の起動が15倍近くまで高速化されるケースがあるようです: perf(npm): load npm resolution snapshot directly from lockfile (denoland/deno#28647) deno.lock内にnpmパッケージに関するメタ情報 (cpu, os, optionalDependencies, など…)をあらかじめ書き込んでおくことで、グローバルキャッシュへの読み込みを減らし、npmパッケージの解決をdeno.lockの情報のみで完結させることで高速化が図られているようです: Release 0.26.0 · denoland/deno_lockfile feat: put npm packument info in lockfile (denoland/deno_lockfile#42) 現状ではLockfile v5は実験的機能という扱いであり、--unstable-lockfile-v5オプションもしくはdeno.jsonで"unstable": ["lockfile-v5"]を指定することにより有効化が可能なようです (次のマイナーリリース以降、デフォルトで有効化される予定のようです) deno task - ~の展開やバッククォートによるコマンド実行のサポート deno taskでのスクリプト実行時に~の展開やバッククォートによるコマンド実行がサポートされています (#28832) # (1) `~`の展開 $ deno task --eval 'cat ~/.npmrc' # (2) バッククォートによるコマンドの実行 $ deno task --eval 'touch `date +%Y-%m-%d`....

April 13, 2025

2025/03/24〜2025/03/30の最新情報

Deno v2.2.6 Deno v2.2.6がリリースされています。 静的解析可能なdynamic importの遅延読み込み (--unstable-lazy-dynamic-imports) --unstable-lazy-dynamic-importsが実装されました (#28593) 以下のスクリプトを実行する場合、通常であれば、まずはjsr:@std/text@1.0.12/unstable_dedentがダウンロードされてからスクリプトの実行が開始され、fooとbarが出力されます: // main.js console.info("foo"); await import("jsr:@std/text@1.0.12/unstable_dedent"); console.info("bar"); --unstable-lazy-dynamic-importsまたは"unstable": ["lazy-dynamic-imports"]を指定した場合、まずfooが出力されてからjsr:@std/text@1.0.12/unstable_dedentのダウンロードが開始され、その後にbarが出力されるよう挙動が変更されます。 Node.js互換性の改善 peerDependenciesの解決方法が変更 peerDependenciesに関する解決ロジックが変更されています。peerDependenciesで要求されるあるパッケージに関して、バージョンがマッチしない場合であっても、該当のパッケージが見つかった際はそれを使用するように修正されているようです (#28616) この挙動が適用された際はWarning The following peer dependency issues were foundという警告が表示されます。 将来的にオプションを導入して、任意でDeno v2.2.5までの挙動に戻せるようにすることも検討されているようです。 node_modules/.binが作成されないことがある問題の修正 deno outdated --updateでnpmパッケージを更新すると、そのパッケージがnode_modules/.bin からなくなってしまうことがある問題が修正されています (#28626) node:fs - mkdir()のバグ修正 mkdir()でmodeオプションに文字列を指定するとTypeErrorが発生する問題が修正されています (#28609) node:http - イベントの取り扱いの改善 HTTPリクエストがキャンセルされた際にServerResponseでcloseイベントが発火されるよう改善されています (#28601) また、IncomingMessageが保持するsocketで適切にcloseイベントが発火されていなかった問題も修正されています (#28582) パフォーマンス改善 deno installによるnpmパッケージのインストールが高速化されています (#28636) パッケージのメタ情報をファイルシステムからではなくインメモリのキャッシュから読み込むようにすることで高速化が図られているようです。 Web Crypto API ECDSAに関する改善 ECDSAを使用する際にSubtleCrypto#verify及びSubtleCrypto#signにおいて任意の曲線とハッシュの組み合わせが利用できるよう改善されています (#28574) deno_stdのリリース deno_stdのリリースが行われています (release-2025.03.25) @std/uuid@1.0.6 - UUIDv6の実験的サポート @std/uuid@1.0.6がリリースされています。 UUIDv6が実験的にサポートされています (#6415)...

March 30, 2025

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

Deno v2.2.3 Deno v2.2.3がリリースされています。 deno lint プラグインシステムにおけるセレクターの改善 セレクターにおいて、以下のように特定のプロパティを保持するノードのみの問い合わせがサポートされています (#28324) const plugin: Deno.lint.Plugin = { name: "sample-plugin", rules: { "some-rule": { create: (ctx) => { const visitor = { ".callee": (node) => { // `.callee`を保持するNodeのみを問い合わせる }, }; return visitor; }, }, }, }; また、セレクターの構文における:has()/:is()/:where()/:not()や属性に対する正規表現によるマッチング (例: MemberExpression[property.name=/Object/])がサポートされています (#28348, #28340) これらの機能の追加に合わせて、公式ドキュメントも改善されています (https://github.com/denoland/docs/pull/1508) プラグイン実行時のパーミッションの取り扱いの変更 プラグインの実行時に--no-promptが有効化されるよう挙動が変更されています (#28305) deno lspとdeno lintでJavaScriptプラグインを実行する際の方式を統一することを目的とした変更のようです。 現状、deno lintにおいては--allow-readなどのパーミッションフラグを指定する方法はありませんが、要望はすでに挙げられているようです:...

March 9, 2025

2025/02/10〜2025/02/16の最新情報

Deno v2.2のリリースについて Deno v2.2は先週にリリースが計画されていたようですが、おそらくは後述するV8 13.4へのアップデートなどの関連で、リリースが見送られたようです: https://x.com/rough__sea/status/1889406135578534314 V8のアップグレードとJavaScriptファイルでのExplicit Resource Managementのサポートについて 直近でDeno内部のV8を13.4へアップデートするPRがマージされています: feat: Upgrade V8 to 13.4 #28080 おそらく、Deno v2.2でリリースされるのではないかと思います。 この対応に合わせて、JavaScriptファイルでExplicit Resource Managementを利用できるようにする対応が進められています (今まで、Explicit Resource ManagementはTypeScriptでのみサポートされていました) feat: enable explicit resource management for JavaScript #28119 deno fmtでのTOMLのサポートについて deno fmtコマンドにTOMLファイルのフォーマットをサポートするためのPRが作成されています: feat(fmt): add TOML formatter #28104 dprint-plugin-tomlをベースに実装されているようです。 2.2.0のマイルストーンには含まれていないため、この機能のリリースは少し先になるかもしれません。 deno transpile コマンドの追加に関する提案 deno transpileコマンドをDenoに追加する提案が行われています: Add deno transpile subcommand #28069 まだ正式に実装されるかどうかはわかりませんが、issueにそれなりにリアクションがついていそうなので紹介します。 機能としては、.tsファイルを.jsファイルへトランスパイルしつつ.d.tsも生成することなどが想定されているようです。Denoでnpmパッケージを公開したい場合などに便利そうではないかと思いました。 Deno v2.1.10 Deno v2.1.10がリリースされています。 deno compile - --includeオプションがdeno compileで生成された実行可能ファイルを検出するよう改善 --includeオプションで指定されたディレクトリにすでにdeno compileで生成された実行可能ファイルが存在する場合に、それが新しく生成される実行可能ファイルに含まれてしまわないよう改善されています (#27877)...

February 16, 2025

2025/01/27〜2025/02/02の最新情報

Deno v2.1.8/v2.1.9 Deno v2.1.8とv2.1.9がリリースされています。 OpenTelemetry HTTPSエンドポイントのサポート HTTPSエンドポイントへのSignalsの送信がサポートされています (#27743) 以下の環境変数によって設定が可能です: OTEL_EXPORTER_OTLP_CERTIFICATE OTEL_EXPORTER_OTLP_CLIENT_KEY OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE deno check ワークスペースの各メンバーでのcompilerOptionsのサポート ワークスペースの各メンバーのdeno.jsonにおけるcompilerOptionsの定義がサポートされています (#27785) 今まではワークスペースのルートでしかcompilerOptionsを定義できませんでしたが、今後は各メンバーごとに柔軟に型チェックなどに関する振る舞いを設定できそうです。 npmパッケージに含まれる.tsファイルの取り扱いの改善 型チェックにおけるnpmパッケージ中の.tsファイルの取り扱いが改善されています (#27853) deno checkの実行時に限定して、型チェック時に.d.tsが見つからない際は追加で.tsファイルも探索してくれるようです。 deno install -gが指定され かつ deno.jsonが検出された際の警告について deno install -gの実行時にdeno.jsonが検出され かつ--configオプションが指定されていない場合に以下の警告が表示されるよう改善されています (#27745) Warning discovered config file will be ignored in the installed command. Use the --config flag if you wish to include it. deno lsp Ambient modulesに関する修正 Ambient modulesに対するimportでエラーが発生しないように修正されています (#27855) SvelteKitなどを使用したプロジェクトを想定した修正のようです。 deno publish .d.tsに関する改善 jsrパッケージのモジュール内でsloppy importsが使用されており かつ 対応する....

February 2, 2025

2025/01/20〜2025/01/26の最新情報

Deno v2.1.7 Deno v2.1.7がリリースされています。 v2.1.6で発生していたWorkerに関する問題の修正 v2.1.6においてWorkerの使用時にDenoがパニックすることがあった問題が修正されています (#27741) deno install -g --configに関する挙動の変更 deno install -gで--configが指定された際に、指定された設定ファイルに含まれるimportMapが無視されるよう挙動が変更されています (#27744) deno install -gで--import-mapと--configが併用された際に、意図せぬ動作をすることの防止が目的のようです。 Node.js互換性の改善 node:crypto Decipherでaes-256-gcmまたはaes-128-gcmを使用している際に、finalメソッドにおいて認証タグのチェックが行われるように改善されています (#27733) node:fs/promises FileHandleにdatasync()とsync()メソッドが追加されています (#27677) node:http ClientRequestが保持するsocketにおいてエラーが発生した際に、そのClientRequestオブジェクトでerrorイベントが発火されるよう改善されています (#27678) node:tls connect()でECONNRESETエラーが起きることのある問題が修正されています (#27707) deno_stdのリリース deno_stdのリリースが行われています (release-2025.01.22) @std/async@1.0.10 @std/async@1.0.10がリリースされています。 @std/async/unstable-wait-forが追加 waitFor (@std/async/unstable-wait-for)という新しい実験的APIが追加されています。predicateが満たされるまで待機してくれます。 import { waitFor } from "jsr:@std/async@1.0.10/unstable-wait-for"; // ... await waitFor( () => task.isFinished(), // predicate 5_000, // timeout ); @std/fs@1.0.10 @std/fs@1.0.10がリリースされています。 Node.js向けサポートの改善 @std/fsのNode.jsサポート向けに、以下のモジュールが追加されています: @std/fs/unstable-symlink (symlink()とsymlinkSync()が提供されます) @std/fs/unstable-chmod (chmod()とchmodSync()が提供されます) @std/fs/unstable-read-dir @std/assert@1....

January 26, 2025

2025/01/06〜2025/01/12の最新情報

Deno v2.1.5 Deno v2.1.5がリリースされています。 QUICサポート QUICのサポートがリリースされました。 feat(unstable): Implement QUIC #21942 Deno.connectQuic()などのAPIが実装されています (利用するには--unstable-netの指定が必要です) deno lint - JavaScriptプラグイン向けの内部的な基盤の追加 deno lintにおけるプラグインシステムの内部APIであるDeno[Deno.internal].runLintPluginやセレクターの仕組みなどの実装がリリースされています。 deno.jsonにおけるlint.pluginsオプションの実装はリリースされていないため、まだ一般的な利用はできない状態です。 OpenTelemetry @deno/otelの不要化 OpenTelemetryサポートを利用するに当たり、@deno/otelの使用が不要化されています。 OTEL_DENO=trueと--unstable-otelさえ指定されていれば@opentelemetry/apiとの連携ができます。DenoがあらかじめglobalThis[Symbol.for("opentelemetry.js.api.1")]にTracerProviderなどを登録してくれるため、@opentelemetry/apiとの連携が自動で行われるようです。 まだ、Denoの公式ドキュメントにもOpenTelemetryサポートに関するドキュメントが追加されています (Add docs for OpenTelemetry in Deno (denoland/docs#1305)) feat(unstable): add OTEL MeterProvider #27240 feat(unstable): replace SpanExporter with TracerProvider #27473 feat(unstable): no config npm:@opentelemetry/api integration #27541 WASMモジュール jsrパッケージにおけるサポートの改善 jsrパッケージ内に含まれる.wasmモジュールが読み込めるよう改善されています。 fix(jsr): Wasm imports fail to load #27594 deno check モジュールが見つからなかった際のエラー形式の変更 モジュールが見つからなかった際のエラーメッセージがTypeScriptのdiagnosticsとして報告されるよう改善が行われています (#27533)...

January 12, 2025

2024/12/30〜2025/01/05の最新情報

直近のDenoの変更について まだマージされているわけではないのですが、いくつか面白そうなPRが作成されているため紹介します。 Geometry Interfaces Module Level 1 の実装について まだDraft状態ではありますが、DenoにGeometry Interfaces Module Level 1を実装するPRが作成されています: feat(ext/geometry): Geometry Interfaces Module Level 1 #27527 DOMPointやDOMQuad, DOMMatrixなどのAPIが実装されているようです。 Geometry interfaces OpenTelemetryサポートにおける@deno/otelの不要化について 今まで、DenoのOpenTelemetryサポートを利用してシグナルを送信するためには、Deno公式から公開されている@deno/otelパッケージの使用が想定されていました。 DenoのOpenTelemetryサポートを利用するに当たって、この@deno/otelの使用を不要とする対応が進められているようです: feat(unstable): no config npm:@opentelemetry/api integration #27541 このPRの対応が入ると、セットアップの手間が若干軽減されそうです。 deno_stdの今後の安定化に関する計画 deno_stdにおけるパッケージやunstableモジュールについての今後の計画が公開されています: Next STD Stabilization Iteration Plan #6299 @std/iniパッケージや@std/uuidにおけるUUIDv7サポートの安定化などが検討されているようです。 lint.deno.landからdocs.deno.comへの移行について 以前に紹介したdeno lintのLintルールに関するドキュメントのlint.deno.landからdocs.deno.comへの移行が正式に実施されたようです: chore: replace lint.deno.land with /lint/ page #1289 今後はhttps://docs.deno.com/lint/からドキュメントを参照することが推奨されそうです。

January 5, 2025