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.jsonnameexportsが定義されていればjsr関連のlintルールが実行されるように挙動が変更されています (今まではnameexportsに加えてversionの3つのフィールドが定義されている必要がありました)


deno lsp

HTML/CSS/Yamlファイルのフォーマット

deno lspHTML/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がデフォルトで有効化されています。


Node.js互換性の改善

.cjsの実行がサポート

deno runによる.cjsファイルの実行がサポートされています。

また、npmパッケージ内からの.cjsモジュールのimportもサポートされています。


AbortSignal関連のユーティリティー

AbortSignal関連の以下のユーティリティー関数が実装されています:

  • node:events: addAbortListener()
  • node:util: aborted()

node:stream

getDefaultHighWaterMark()が実装されました。


node:process

execArgvexecPathが追加されました。


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 --jsondeno lint --jsonなどのJSONを出力する各コマンドの出力結果にversionフィールドが追加されています。


破壊的変更

deno uninstallのデフォルトの挙動が変更

deno uninstallコマンドがデフォルトでdeno removeコマンドのaliasとして機能するように挙動が変更されています。

今までの挙動に戻したい場合は--globalまたは-gオプションを指定する必要があります。


deno bundleコマンドの削除

非推奨化されていたdeno bundleコマンドが削除されました。

deno_emitesbuildなどへの移行が推奨されます。


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]の出力結果からemitmapが削除されています。


DNS関連のAPIに関する型がリネーム

DNS関連のAPIの型がリネームされています。

例) Deno.CAARecordDeno.CaaRecord, Deno.MXRecordDeno.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.runclearEnv/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

非推奨されていた以下の型定義が削除されました:

削除された型移行先
ReadableByteStreamControllerCallbackUnderlyingByteSource["pull"]
ReadableStreamErrorCallbackUnderlyingSourceCancelCallback
ReadableStreamDefaultControllerCallback(controller: ReadableStreamDefaultController<R>) => void | PromiseLike<void>
PipeOptionsStreamPipeOptions
QueuingStrategySizeCallbackQueuingStrategySize
WritableStreamDefaultControllerCloseCallbackUnderlyingSinkCloseCallback
WritableStreamDefaultControllerStartCallbackUnderlyingSinkStartCallback
WritableStreamDefaultControllerWriteCallbackUnderlyingSinkWriteCallback
WritableStreamErrorCallbackUnderlyingSinkAbortCallback
TransformStreamDefaultControllerCallbackTransformerFlushCallback
TransformStreamDefaultControllerTransformCallbackTransformerTransformCallback
PostMessageOptionsStructuredSerializeOptions

Deno v1.46.3

Deno v1.46.3がリリースされています。

deno publish

SLSA Provenance仕様どおりに生成されるように改善されています。


deno upgrade

deno upgradeの引数に不正な形式でバージョンを指定した際のエラーメッセージが改善されています。

deno jupyter

Deno.jupyter.displayDeno.jupyter.formatの戻り値に誤りがあった問題が修正されています。

deno_stdのリリース

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

@std/uuid@1.0.3

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

UUIDv7の実験的サポートが追加されています (@std/uuid/v7)

@std/tar

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

このパッケージではTarStreamUntarStreamという2つのAPIが提供されています。

既存のTarUntarなどの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に公開してくれるようです。