Deno v2.1.5

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

QUICサポート

QUICのサポートがリリースされました。

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))


WASMモジュール

jsrパッケージにおけるサポートの改善

jsrパッケージ内に含まれる.wasmモジュールが読み込めるよう改善されています。

deno check

モジュールが見つからなかった際のエラー形式の変更

モジュールが見つからなかった際のエラーメッセージがTypeScriptのdiagnosticsとして報告されるよう改善が行われています (#27533)

# Deno v2.1.5
$ deno check main.ts
Check file:///home/uki00a/ghq/github.com/uki00a/deno-sample/main.ts
error: TS2307 [ERROR]: Cannot find module 'file:///home/uki00a/ghq/github.com/uki00a/deno-sample/add.ts'.
    at file:///home/uki00a/ghq/github.com/uki00a/deno-sample/main.ts:1:21



# Deno v2.1.4
$ deno check main.ts
error: Module not found "file:///home/uki00a/ghq/github.com/uki00a/deno-sample/add.ts".
    at file:///home/uki00a/ghq/github.com/uki00a/deno-sample/main.ts:1:2

deno lsp

CSSプリプロセッサー形式のフォーマットがサポート

deno lspでSassやLessなどのフォーマットがサポートされています (#27526)

.sqlファイルや各種コンポーネント形式のフォーマットがサポート

deno lsp.sqlファイルや各種コンポーネントファイル(.vue/.svelteなど)のフォーマットがサポートされています (#27350)

Auto importの改善

Node.jsの組み込みモジュールから提供されるAPIに対してimport宣言を自動挿入する際に、node:プレフィックス付きで挿入されるよう改善されています (#27404)

typescript.suggestionActions.enabledがサポート

deno lsptypescript.suggestionActions.enabledがサポートされています (#27373)

falseを設定すると、非推奨APIの使用や未使用変数に対する警告を除いて、TypeScriptからの各種提案を無効化できるようです。

Move to a new fileアクション

Move to a new fileアクションを実行すると、jsr:https:に変換されてしまう問題が修正されています (#27427)

deno outdated

外部Import mapsのサポート

deno outdatedコマンドでdeno.jsonimportMapで指定された依存関係を--updateオプションによって更新できない問題が修正されています (#27339)

deno task

依存関係を持つタスクにおけるcommandの省略

deno.json依存関係を持つタスクを定義する際に、commandの指定を省略できるように改善されています (#27191)

{
  "tasks": {
    "check": {
      "dependencies": ["typecheck", "lint"]
    },
    "typecheck": "deno check mod.ts",
    "lint": "deno lint && deno fmt --check"
  }
}

--recursiveの挙動の修正

deno task--recursiveが指定された際に、パターンに*が含まれる場合だけ正規表現によるマッチングが行われるよう挙動が修正されています (#27396)

今まではパターンに*が含まれない場合も常に正規表現によるマッチングが行われていたようです。

--allow-import

--cached-onlyが指定された際の挙動の変更

--cached-onlyオプションが指定された際は--allow-importの指定が不要となるよう改善されています (#27530)

deno.lock

外部Import mapsのサポート

deno.jsonimportMapで指定されたImport mapsファイルの依存もdeno.lockで追跡されるように改善されています (#27337)

Deno API

Deno.stat()の修正

Deno.stat()においてTypeError: Cannot convert a BigInt value to a numberエラーが発生することがある問題が修正されています (#27453)

macにおけるDeno.systemMemory()の挙動の修正

macにおいて、Deno.systemMemory()が返却するavailablefreeの値がKB単位で返されてしまっていた問題が修正されています (#27460)

Web API

DOMException[[ErrorData]]が追加

DOMException[[ErrorData]]内部スロットが追加されています (#27342)

今後のError.isErrorのサポートに向けた対応のようです。

また、node:utiltypes.isNativeErrorDOMExceptionを渡すとtrueが返却されるよう挙動が修正されています。

WebSocket#closeの修正

WebSocket#closereason引数が省略された場合、code引数が無視されてしまっていた問題が修正されています (#27578)

Node.js互換性の改善

node:fs - access()の修正

Windowsでaccess()constants.X_OKを渡すと、常にエラーが発生する問題が修正されています (#27407)

node:fs/promises - FileHandleへのメソッドの追加

FileHandletruncate() (#27389)とchmod() (#27522)が実装されています。

node:os - Linuxにおけるcpus()の改善

Linuxにおいてcpus()の返却結果にspeedが設定されるよう改善されています (#27592)

node:worker_threads - 安定性の改善

実行途中の非同期処理が存在する場合にワーカーが停止してしまわないよう改善されています (#27378)

node:crypto

秘密鍵のJWK形式でのエクスポート

generateKeyPair()などのAPIで秘密鍵をJWK形式でエクスポートできるよう改善されています (#27325)

aes-128-gcm/aes-256-gcm

aes-128-gcm及びaes-256-gcmで12バイト以外の長さのIVを指定できるように改善されています (#27476)

getCiphers()

getCiphers()でまだサポートされていないアルゴリズムが返却されてしまわないよう挙動が修正されています (#27466)

node:http - request()createConnectionオプションがサポート

request()createConnectionオプションがサポートされています (#25470)

node:inspector/promisesimportがサポート

node:inspector/promisesimport出来なかった問題が修正されています (#27491)

エスケープ文字を含むCommonJSモジュールの取り扱いの改善

エスケープ文字を含む要素をexportしたcjsモジュールを読み込むとエラーが発生する問題が修正されています (#27438)

パフォーマンス改善

WindowsにおいてDeno.statのパフォーマンスが改善されています (#27487)

今までは内部的にファイルが2回開かれていたようなのですが、1回のみに抑えることでパフォーマンスがおよそ2倍以上にまで改善されているようです。

また、node:fscp()のパフォーマンスも改善されています (#27495)

WinterTC

WinterTCが発表されました:

これまでWinterCGというW3Cのコミュニティグループで各種サーバーサイドランタイムにおける相互運用性の改善に関して活動が行われていました。

WinterCGにおいて議論されていたminimum common APIに関する標準化などのために、Ecma InternationalにおいてWinterTC (TC55)というグループが立ち上げられるようです。

WinterTCのGitHub Organizationについては引き続き/wintercgが使用されているようです:

deno_stdのリリース

deno_stdがリリースされています (release-2025.01.10)

@std/fs@1.0.9

@std/fs@1.0.9がリリースされています。

lstatSync/statSyncが追加

新規APIとしてlstatSync() (@std/fs/unstable-lstat)とstatSync() (@std/fs/unstable-stat)が追加されています。

また、各種unstableモジュールから使われる型を管理している@std/fs/unstable-typesが公開されています。

@std/data-structures@1.0.6

@std/data-structures@1.0.6がリリースされています。

RedBlackTree.from()の修正

既存のRedBlackTreeから新しいRedBlackTreeを作成する際に、誤ったサイズが設定されてしまう問題が修正されています。

@std/fmt@1.0.4

@std/fmt@1.0.4がリリースされています。

@std/fmt/duration - format()の修正

format()style: "full"が指定された際に単位が誤って複数形で表示される(例: 1 minutes)問題が修正されています。

wasmbuild v0.18.0

wasmbuild v0.18.0がリリースされています。

Deno v2.1で導入された.wasmモジュールを使用するよう変更が行われています。