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.filesfmt.filestest.filesbench.files
今後はlint.excludeやfmt.includeなどへの移行が推奨されます。
--unstableの削除
すべてのunstable APIを有効化する--unstableオプションが削除されています。
今後は--unstable-*やdeno.jsonのunstableフィールドへの移行が推奨されます。
非推奨化されていたDeno APIの削除
非推奨化されていた以下のAPIが削除されています (移行先についてはDeno 1.x to 2.x Migration Guideで解説されています):
Deno.serveHttp関連の型定義Deno.BufferDeno.FsFile.prototype.constructor(Deno.FsFileの直接のインスタンス生成が禁止されます)- 下記の
ridプロパティに関する型定義Deno.stdinDeno.stdoutDeno.stderr
- 下記オブジェクトの
ridプロパティDeno.TlsConnDeno.ConnDeno.TcpConnDeno.UnixConnDeno.ListenerDeno.FsFile
Deno.fdatasync(Sync)Deno.Reader(Sync)Deno.Writer(Sync)Deno.CloserDeno.fsync(Sync)Deno.connectTlsの下記オプションcertChaincertFileprivateKey
Deno.listenTlsの下記オプションcertChaincertFilekeyFile
廃止されたTemporal APIの削除
Deno v1.46に続いて、廃止されたTemporal APIの削除が行われています (#25505)
以下のAPIが削除されているようです:
Temporal.Instant#toZonedDateTimeTemporal.PlainDate#getISOFieldsTemporal.PlainDateTime#getISOFieldsTemporal.PlainTime#getISOFieldsTemporal.PlainYearMonth#getISOFieldsTemporal.ZonedDateTime.epochSecondsTemporal.ZonedDateTime.epochMicrosecondsTemporal.ZonedDateTime.#getISOFieldsTemporal.CalendarTemporal.TimeZone
また、Temporal.CalendarとTemporal.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
StreamがEventEmitterのインスタンスとなるよう修正されています。
node:v8
serializeとdeserializeが再実装されています。
これに伴い、Support Parcel #20613がクローズされており、Parcelが動かせるようになる可能性がありそうです。
node:fs
FileHandle#writeFileが実装されました。
Float16Arrayに関する型定義の修正
Float16Arrayに関する型の名前が誤ってFloat16と定義されていた問題が修正されています。
deno_stdにおける実験的機能の取り扱いについて
deno_stdにおける実験的機能の取り扱いについて解説したドキュメントが追加されています:
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/typesにSeekerとSeekerSyncが追加されました。これらはDeno v2で削除予定のDeno.SeekerとDeno.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へリネームされています。