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.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.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.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
へリネームされています。