Deno v2.0.0-rc.2

Deno v2.0.0-rc.2がリリースされています。

どの変更内容がv2.0.0-rc.2に入っているかは不明なため、Deno v2.0.0-rc.1からの差分を参考に直近の変更内容についてまとめます (差分)

破壊的変更

Deno.errors.NotCapableの導入

Deno.errors.NotCapableという新しいエラーが追加されています。

今までは、OSによる権限エラーとDenoによる権限エラー(--allow-*の指定漏れ)の両方がDeno.errors.PermissionDeniedによって表現されていました。

これからはOSによる権限エラーはDeno.errors.PermissionDenied、Denoによる権限エラーはDeno.errors.NotCapableによって表現されます。


deno.json

deno.jsonから下記フィールドが削除されています:

  • lint.files
  • fmt.files
  • test.files
  • bench.files

今後はlint.excludefmt.includeなどへの移行が推奨されます。

--unstableの削除

すべてのunstable APIを有効化する--unstableオプションが削除されています。

今後は--unstable-*deno.jsonunstableフィールドへの移行が推奨されます。

非推奨化されていたDeno APIの削除

非推奨化されていた以下のAPIが削除されています (移行先についてはDeno 1.x to 2.x Migration Guideで解説されています):

  • Deno.serveHttp関連の型定義
  • Deno.Buffer
  • Deno.FsFile.prototype.constructor (Deno.FsFileの直接のインスタンス生成が禁止されます)
  • 下記のridプロパティに関する型定義
    • Deno.stdin
    • Deno.stdout
    • Deno.stderr
  • 下記オブジェクトのridプロパティ
    • Deno.TlsConn
    • Deno.Conn
    • Deno.TcpConn
    • Deno.UnixConn
    • Deno.Listener
    • Deno.FsFile
  • Deno.fdatasync(Sync)
  • Deno.Reader(Sync)
  • Deno.Writer(Sync)
  • Deno.Closer
  • Deno.fsync(Sync)
  • Deno.connectTlsの下記オプション
    • certChain
    • certFile
    • privateKey
  • Deno.listenTlsの下記オプション
    • certChain
    • certFile
    • keyFile

廃止されたTemporal APIの削除

Deno v1.46に続いて、廃止されたTemporal APIの削除が行われています (#25505)

以下のAPIが削除されているようです:

  • Temporal.Instant#toZonedDateTime
  • Temporal.PlainDate#getISOFields
  • Temporal.PlainDateTime#getISOFields
  • Temporal.PlainTime#getISOFields
  • Temporal.PlainYearMonth#getISOFields
  • Temporal.ZonedDateTime.epochSeconds
  • Temporal.ZonedDateTime.epochMicroseconds
  • Temporal.ZonedDateTime.#getISOFields
  • Temporal.Calendar
  • Temporal.TimeZone

また、Temporal.CalendarTemporal.TimeZoneの削除に併せて、いくつかのAPIの型定義なども調整されています。

Deno.createHttpClientの安定化

Deno.createHttpClientが安定化されました。fetch APIの振る舞いをカスタマイズするために利用できます。

deno lsp

useUnknownInCatchVariablesの有効化

Deno本体でのuseUnknownInCatchVariablesの有効化に併せて、deno lspでもuseUnknownInCatchVariablesが有効化されました。


deno jupyter

--unstable-*のサポート

deno jupyterコマンドに--unstable-*関連の引数が指定できない問題が解消されています。


Node.js互換性の改善

deno add

--devオプションのサポート

deno addコマンドに--devオプションが追加されています。このオプションが指定された場合、もしpackage.jsonがあればdevDependenciesに依存を追加してくれます。


package.jsonが存在する場合の振る舞いの変更

deno addでnpmパッケージを追加する際に、もしpackage.jsonがあれば、deno.jsonではなくpackage.jsonへ依存が書き込まれるように振る舞いが変更されています。


ESM形式のモジュールのrequire()

ESM形式のモジュールのrequireによる読み込みがサポートされています。

該当のモジュールでTop-level awaitが使われていると、エラーが発生します。

また、.mts形式のモジュールのrequireについてはまだサポートが入っていないようです。


BYONM

BYONMが有効化されていると、--unstable-bare-node-builtinsを指定していなくてもNode.jsの組み込みパッケージがnode:なしでも読み込めてしまう問題が修正されています。


node:os

Linuxでfreemem()がバイト単位で値を返すように修正されています (元々はKB単位で値が返却されていたようです)


node:stream

StreamEventEmitterのインスタンスとなるよう修正されています。


node:v8

serializedeserializeが再実装されています。

これに伴い、Support Parcel #20613がクローズされており、Parcelが動かせるようになる可能性がありそうです。


node:fs

FileHandle#writeFileが実装されました。


Float16Arrayに関する型定義の修正

Float16Arrayに関する型の名前が誤ってFloat16と定義されていた問題が修正されています。


deno_stdにおける実験的機能の取り扱いについて

deno_stdにおける実験的機能の取り扱いについて解説したドキュメントが追加されています:

chore: document unstable new feature processes #5976

v1以上のバージョンが公開されたパッケージについては、実験的APIをルートのエントリポイント(mod.ts)からは公開せず、unstable-*プレフィックスがついた専用のパスから公開する運用が進められていく想定のようです。

先週のdeno_stdのリリースから実際にこの運用の適用が開始されています。

deno_stdのリリース

deno_stdがリリースされています。

@std/urlの削除

@std/urlが削除されました。

@std/path@1.0.4からURLオブジェクトへのサポートが導入開始されているので、そちらへの移行が推奨されます。

@std/randomが追加

新規パッケージとして@std/randomが追加されています。

乱数の生成に関するユーリティティーや配列をシャッフルするshuffleなどのAPIが提供されています。

@std/http@1.0.6

@std/http@1.0.6がリリースされています。

実験的モジュールのパスがリネームされています:

リネーム対象リネーム後のパス
@std/http/route@std/http/unstable-route
@std/http/header@std/http/unstable-header
@std/http/method@std/http/unstable-method
@std/http/signed-cookie@std/http/unstable-signed-cookie

@std/uuid@1.0.4

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

@std/uuid@1.0.3で追加された@std/uuid/v7@std/uuid/unstable-v7へリネームされています。

@std/assert@1.0.5

@std/assert@1.0.5がリリースされています。

assertNever@std/assert/neverから@std/assert/unstable-neverへ移動されています。

@std/cli@1.0.6

@std/cli@1.0.6がリリースされています。

Spinner@std/cli/spinnerから@std/cli/unstable-spinnerへ移動されています。

@std/data-structures@1.0.3

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

新規APIとしてBidirectionalMap(@std/data-structures/unstable-bidirectional-map)が追加されています。

@std/encoding@1.0.5

@std/encoding@1.0.5がリリースされています。

@std/encoding@1.0.3で追加された各種APIのパスが変更されています:

変更前のパス変更後のパス
@std/encoding/base64url-stream@std/encoding/unstable-base64url-stream
@std/encoding/base32hex@std/encoding/unstable-base32hex
@std/encoding/hex-stream@std/encoding/unstable-hex-stream
@std/encoding/base64-stream@std/encoding/unstable-base64-stream
@std/encoding/base32hex-stream@std/encoding/unstable-base32hex-stream
@std/encoding/base32-stream@std/encoding/unstable-base32-stream

@std/front-matter@1.0.5

@std/front-matter@1.0.5がリリースされています。

@std/front-matter@1.0.3で追加されたfunction extract<T>(text: string, options?: ParseOptions): Extract<T>@std/front-matter/unstable-yamlへ移動されています。

@std/html@1.0.3

@std/html@1.0.3がリリースされました。

@std/html@1.0.1で追加された@std/html/is-valid-custom-element-name@std/html/iunstable-is-valid-custom-element-nameへリネームされています。

@std/io@0.224.8

@std/io@0.224.8がリリースされています。

@std/io/typesSeekerSeekerSyncが追加されました。これらはDeno v2で削除予定のDeno.SeekerDeno.SeekerSyncに対応する型です。

@std/net@1.0.3

@std/net@1.0.3がリリースされています。

@std/net@0.224.2で追加された@std/net/get-network-address@std/net/unstable-get-network-addressへリネームされています。

@std/path@1.0.5

@std/path@1.0.5がリリースされています。

@std/path@1.0.4で追加された各種URLオブジェクトへのサポートに関して、unstable-*形式のパスへ移行されています:

移行対象移行前のパス移行後のパス
function normalize(path: string | URL): string@std/path/normalize@std/path/unstable-normalize
function join(path?: URL | string, ...paths: string[]): string@std/path/join@std/path/unstable-join
function extname(path: string | URL): string@std/path/extname@std/path/unstable-extname
function basename(path: string | URL, suffix = ""): string@std/path/basename@std/path/unstable-basename
function dirname(path: string | URL): string@std/path/dirname@std/path/unstable-dirname

@std/streams@1.0.5

@std/streams@1.0.5がリリースされています。

@std/streams@1.0.1で追加された@std/streams/fixed-chunk-stream@std/streams@1.0.2で追加された@std/streams/to-linesのパスが変更されています。

変更前のパス変更後のパス
@std/streams/to-lines@std/streams/unstable-to-lines
@std/streams/fixed-chunk-stream@std/streams/unstable-fixed-chunk-stream

@std/text@1.0.6

@std/text@1.0.6がリリースされています。

@std/text@1.0.3で追加された@std/text/slugify@std/text/unstable-slugifyへ、@std/text@1.0.1で追加された@std/text/to-constant-case@std/text/unstable-to-constant-caseへリネームされています。