Deno v2.0.0-rc.1
Deno v2.0.0-rc.1がリリースされています。
どの変更内容がv2.0.0-rc.1に入っているかは不明なため、Deno v2.0.0-rc.0からの差分を参考に直近の変更内容についてまとめます (差分)
deno lint
jsr関連のlintルールの実行について
deno.json
でname
とexports
が定義されていればjsr関連のlintルールが実行されるように挙動が変更されています (今まではname
とexports
に加えてversion
の3つのフィールドが定義されている必要がありました)
deno lsp
HTML/CSS/Yamlファイルのフォーマット
deno lsp
でHTML/CSS/Yamlファイルのフォーマットがサポートされています。
deno add
パッケージのサブパスの指定がサポート
# 例: 以下の場合、`@std/dotenv`が追加されます
$ deno add @std/dotenv/load
deno install
--entrypoint
がサポート
このオプションが指定された場合、指定されたファイルの依存関係がダウンロードされます (deno cache
と同じように振る舞います)
$ deno install --entrypoint main.ts
TypeScript
useUnknownInCatchVariables
がデフォルトで有効化
TypeScriptのuseUnknownInCatchVariables
がデフォルトで有効化されています。
- feat(check): turn on useUnknownInCatchVariables #25465
- https://github.com/denoland/deno_config/releases/tag/0.33.2
Node.js互換性の改善
.cjs
の実行がサポート
deno run
による.cjs
ファイルの実行がサポートされています。
また、npmパッケージ内からの.cjs
モジュールのimport
もサポートされています。
AbortSignal
関連のユーティリティー
AbortSignal
関連の以下のユーティリティー関数が実装されています:
node:events
:addAbortListener()
node:util
:aborted()
node:stream
getDefaultHighWaterMark()
が実装されました。
node:process
execArgv
とexecPath
が追加されました。
process
グローバル変数
process
グローバル変数がnpmパッケージ以外からでもアクセスできるよう挙動が変更されています。
BYONM
workspaceのルートディレクトリにpackage.json
がある場合だけBYONMが有効化されるように挙動が変更されています。workspaceの特定のメンバーがpackage.json
を持っている場合にもBYONMが有効化される問題があったようです。
CLI
--allow-run
に関するセキュリティの改善
--allow-run
に指定された実行可能ファイルは、Denoの起動時に絶対パス形式で解釈された状態で--deny-write
に自動で設定されるよう挙動が変更されています。
allow-listにおけるコンマのエスケープ
--allow-read
などのようにコンマ区切りでパスのリスト(allow-list)を指定できるコマンドラインオプションにおいて、,,
のようにコンマを2回続けることでエスケープができるように改善されています。
DENO_LOG
Deno内部のデバッグ用のログ出力を制御するRUST_LOG
環境変数がDENO_LOG
という名前に置き換えられています。
JSONを出力する各種コマンドにバージョンが追加
deno doc --json
やdeno lint --json
などのJSONを出力する各コマンドの出力結果にversion
フィールドが追加されています。
破壊的変更
deno uninstall
のデフォルトの挙動が変更
deno uninstall
コマンドがデフォルトでdeno remove
コマンドのaliasとして機能するように挙動が変更されています。
今までの挙動に戻したい場合は--global
または-g
オプションを指定する必要があります。
deno bundle
コマンドの削除
非推奨化されていたdeno bundle
コマンドが削除されました。
deno_emitやesbuildなどへの移行が推奨されます。
deno vendor
コマンドが削除
非推奨化されていたdeno vendor
コマンドが削除されています。
deno.json
の"vendor": true
などへの移行が推奨されます。
--jobs
オプションが削除
--jobs
オプションが削除されています。--parallel
オプションとDENO_JOBS
環境変数への移行が推奨されます。
--ts
オプションが削除
--ts
オプションが削除されています。今後は--ext=ts
オプションへの移行が推奨されます。
--trace-ops
オプションが削除
--trace-ops
オプションが削除されています。今後は--trace-leaks
オプションへの移行が推奨されます。
--allow-none
オプションが削除
--allow-none
オプションが削除されました。--permit-no-files
オプションへの移行が推奨されます。
--allow-hrtime
オプションが削除
--allow-hrtime
と--deny-hrtime
オプションが削除されました。
deno info --json [entrypoint]
の出力結果の変更
deno info --json [entrypoint]
の出力結果からemit
とmap
が削除されています。
DNS関連のAPIに関する型がリネーム
DNS関連のAPIの型がリネームされています。
例) Deno.CAARecord
がDeno.CaaRecord
, Deno.MXRecord
がDeno.MxRecord
へリネームされています。
Deno.serve
に関する型定義の改善
Deno.serve
に関する以下の型に型パラメータが追加されています:
Deno.ServeInit
Deno.ServeHandlerInfo
Deno.ServeHandler
Deno.ServeOptions
それに伴い、下記の型定義が削除されました:
Deno.ServeTlsOptions
Deno.ServeTlsInit
Deno.ServeUnixHandlerInfo
Deno.ServeUnixHandler
非推奨APIの削除
Deno API
非推奨化されていた以下のAPIが削除されています。移行先についてはマイグレーションガイドにまとめられています。
Deno.metrics
Deno.resources
Deno.shutdown
Deno.futime(Sync)
Deno.close
Deno.iter(Sync)
Deno.flock(Sync)
Deno.run
のclearEnv
/gid
/uid
オプションDeno.run
に関する型定義Deno.customInspect
Deno.copy
Deno.fstat(Sync)
Deno.writeAll(Sync)
Deno.ftruncate(Sync)
Deno.readAll(Sync)
Deno.write(Sync)
Deno.read(Sync)
Deno.File
Deno.FsWatcher.rid
Deno.seek(Sync)
Deno.funlock(Sync)
Web API
非推奨されていた以下の型定義が削除されました:
削除された型 | 移行先 |
---|---|
ReadableByteStreamControllerCallback | UnderlyingByteSource["pull"] |
ReadableStreamErrorCallback | UnderlyingSourceCancelCallback |
ReadableStreamDefaultControllerCallback | (controller: ReadableStreamDefaultController<R>) => void | PromiseLike<void> |
PipeOptions | StreamPipeOptions |
QueuingStrategySizeCallback | QueuingStrategySize |
WritableStreamDefaultControllerCloseCallback | UnderlyingSinkCloseCallback |
WritableStreamDefaultControllerStartCallback | UnderlyingSinkStartCallback |
WritableStreamDefaultControllerWriteCallback | UnderlyingSinkWriteCallback |
WritableStreamErrorCallback | UnderlyingSinkAbortCallback |
TransformStreamDefaultControllerCallback | TransformerFlushCallback |
TransformStreamDefaultControllerTransformCallback | TransformerTransformCallback |
PostMessageOptions | StructuredSerializeOptions |
Deno v1.46.3
Deno v1.46.3がリリースされています。
deno publish
SLSA Provenanceが仕様どおりに生成されるように改善されています。
deno upgrade
deno upgrade
の引数に不正な形式でバージョンを指定した際のエラーメッセージが改善されています。
deno jupyter
Deno.jupyter.display
とDeno.jupyter.format
の戻り値に誤りがあった問題が修正されています。
deno_std
のリリース
deno_stdがリリースされています。
@std/uuid@1.0.3
@std/uuid@1.0.3がリリースされています。
UUIDv7の実験的サポートが追加されています (@std/uuid/v7
)
@std/tar
新しいパッケージとして@std/tarが追加されました。
このパッケージではTarStream
とUntarStream
という2つのAPIが提供されています。
既存のTar
やUntar
などのAPIについては@std/archiveに残っており、これらのAPIが将来的にどういう扱いになりそうかはまだわかりません (もしかしたら、今回追加された@std/tarに移動される可能性もあるかもしれません)
@std/path@1.0.4
@std/path@1.0.4がリリースされています。
以下のAPI引数でURL
オブジェクトのサポートが追加されています:
normalize()
basename()
の第一引数join()
の第一引数dirname()
extname()
@std/async@1.0.5
, @std/csv@1.0.3
, @std/fmt@1.0.2
以下のパッケージがリリースされています。
これらのパッケージの以下のAPIにおけるオプションのデフォルト値の取り扱いが改善されています (あるオプションに明示的にundefined
が指定された場合に、そのオプションのデフォルト値が使われます)
retry
(@std/async/retry
)CsvParseStream
(@std/csv/parse-stream
)format
(@std/fmt/duration
)
Oak v17.0.0
Oak v17.0.0がリリースされています。
リクエストボディ(ctx.request.body
)からの読み込みを複数回行えるように挙動が改善されているようです。
また、Deno v2に向けて、Denoのcanaryバージョンでの動作確認が開始されているようです。
mirror-jsr-to-npm
mirror-jsr-to-npm
というツールが公開されています。
このツールはJSR形式のパッケージをnpmに公開してくれるようです。