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))
- 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モジュールが読み込めるよう改善されています。
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 lspでtypescript.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.jsonのimportMapで指定された依存関係を--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.jsonのimportMapで指定された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()が返却するavailableとfreeの値がKB単位で返されてしまっていた問題が修正されています (#27460)
Web API
DOMExceptionに[[ErrorData]]が追加
DOMExceptionに[[ErrorData]]内部スロットが追加されています (#27342)
今後のError.isErrorのサポートに向けた対応のようです。
また、node:utilのtypes.isNativeErrorにDOMExceptionを渡すとtrueが返却されるよう挙動が修正されています。
WebSocket#closeの修正
WebSocket#closeでreason引数が省略された場合、code引数が無視されてしまっていた問題が修正されています (#27578)
Node.js互換性の改善
node:fs - access()の修正
Windowsでaccess()にconstants.X_OKを渡すと、常にエラーが発生する問題が修正されています (#27407)
node:fs/promises - FileHandleへのメソッドの追加
FileHandleにtruncate() (#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/promisesのimportがサポート
node:inspector/promisesがimport出来なかった問題が修正されています (#27491)
エスケープ文字を含むCommonJSモジュールの取り扱いの改善
エスケープ文字を含む要素をexportしたcjsモジュールを読み込むとエラーが発生する問題が修正されています (#27438)
パフォーマンス改善
WindowsにおいてDeno.statのパフォーマンスが改善されています (#27487)
今までは内部的にファイルが2回開かれていたようなのですが、1回のみに抑えることでパフォーマンスがおよそ2倍以上にまで改善されているようです。
また、node:fsのcp()のパフォーマンスも改善されています (#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モジュールを使用するよう変更が行われています。