Deno v2.2.10

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

JavaScriptでのExplicit resource managementのサポート

JavaScript向けにExplicit Resource Managementのサポートが追加されました (#28119)

今まで、Explicit Resource ManagementはTypeScriptでのみ利用可能でしたが、V8におけるサポートに伴い、JavaScriptでも利用できるよう改善されました。

// main.js
class Disposable {
  [Symbol.dispose]() {
    console.info("Disposed!");
  }
}

{
  using _ = new Disposable();
} // => "Disposed!"

vsockのサポート

以前に紹介したvsockのサポートが正式に導入されました (#28725)

Node.js互換性の改善

node:stream - 互換性の大きな改善

Node.jsにおけるnode:streamのソースコードをもとに、Denoにおける実装を自動生成する仕組み (ext/node/update_node_stream.ts) が導入されています (#28855)

これによって、互換性の大きな改善が期待されそうです。

node:test - describe()/suite()のサポート

describe()suite()が実装されています (#28847)

import assert from "node:assert/strict";
import { describe, it } from "node:test";

describe("sum", () => {
  it("returns sum of numbers", () => {
    assert.equal(sum(1, 2, 3), 6)
  });
});

node:querystring - parse()の互換性の改善

parse()decodeURIComponent()オプションで指定した関数で例外が発生した際に、unescape()へフォールバックするよう修正されています (#28838)

deno install - v2.2.9から発生していたリグレッションの修正

Deno v2.2.9からnode_modulesに依存したプロジェクトの起動に失敗することがある問題が修正されました (#28893)

Deno v2.2.11

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

Node.js互換性の改善

npmパッケージの解決が高速化

パフォーマンス改善のため、npmパッケージ解決時のファイルシステムの読み込みを削減する対応が実施されました (#28938)

CommonJS/ESMモジュールの検出の改善

Top-level awaitを使用している.jsファイルにおいてエラーが発生する問題が修正されています (#28810)

元々、Top-level awaitを使用した.jsファイルはCommonJS形式として取り扱われていたことが原因のようです。ESM形式で認識されるよう改善されています。

"unstable": ["npm-patch"]に関するバグの修正

npmパッケージに対するパッチ ("unstable": ["npm-patch"])を利用する際に、パッチ対象のパッケージをdist-tagを使用して参照しようとするとプロセスがパニックする問題が修正されています (#28900)

node:test: TestContext.assertの追加

TestContextassertプロパティーが追加されています (#28904)

import { test } from "node:test";

test("sum", (t) => {
  t.assert.strictequal(sum(1, 2, 3), 6)
});

deno install -g - DENO_INSTALL_ROOTの取り扱いの改善

DENO_INSTALL_ROOT環境変数に/binで終わるパスが指定された場合、その直下にさらに/binディレクトリを作成しないよう改善されています (#26446)

Deno v2.3.0-rc.0

Deno v2.3.0のRCバージョンの公開が開始されています (#28955)

RCバージョンについては以下のコマンドで導入できます:

$ deno upgrade rc

変更点

deno install--no-configを指定した際の挙動の修正

deno installコマンドに--no-configが指定された際にプロセスがパニックする問題が修正されています (#28965)

以下のエラーが発生するよう挙動が改善されています:

error: deno install can't be used to add packages if `--no-config` is passed.
hint: to cache the packages without adding to a config, pass the `--entrypoint` flag

dax v0.43.0

dax v0.43.0がリリースされています。

破壊的変更

daxにおけるdenoコマンドの取り扱いが変更されています。daxはdenoコマンドが検出された際にDeno.execPath()によって実行可能ファイルのパスを調べ、サブプロセスとして起動していました。この挙動はdeno compileによって実行可能ファイルを生成した際などに意図せぬ振る舞いをしてしまうことがあったため、このdenoコマンドを特別扱いする挙動が削除されています。

また、$.cdについても削除が行われています。

もしこれらの機能に依存している場合は、リリースノートで移行方法が解説されています。

新機能

Deno v2.2.9におけるdeno taskコマンドと同様に、daxでも~の展開がサポートされています。

また、$.rawArgという新規APIが追加されています。これは引数を埋め込む際のエスケープを無効化したい場合に利用することが想定されています。