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.ServeInitDeno.ServeHandlerInfoDeno.ServeHandlerDeno.ServeOptions
それに伴い、下記の型定義が削除されました:
Deno.ServeTlsOptionsDeno.ServeTlsInitDeno.ServeUnixHandlerInfoDeno.ServeUnixHandler
非推奨APIの削除
Deno API
非推奨化されていた以下のAPIが削除されています。移行先についてはマイグレーションガイドにまとめられています。
Deno.metricsDeno.resourcesDeno.shutdownDeno.futime(Sync)Deno.closeDeno.iter(Sync)Deno.flock(Sync)Deno.runのclearEnv/gid/uidオプションDeno.runに関する型定義Deno.customInspectDeno.copyDeno.fstat(Sync)Deno.writeAll(Sync)Deno.ftruncate(Sync)Deno.readAll(Sync)Deno.write(Sync)Deno.read(Sync)Deno.FileDeno.FsWatcher.ridDeno.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に公開してくれるようです。