Deno v1.41がリリースされました。
この記事では主な変更点などについて解説します。
Deno API
Deno.FsFile
Deno.FsFileにisTerminalとsetRawメソッドが追加されています。
Deno.isattyは非推奨化されているため、Deno.FsFileやDeno.stdinなどのisTerminalメソッドへの移行が推奨されます。
Deno.ConnectTlsOptions
Deno.ConnectTlsOptionsにcertとkeyオプションが追加されています。
これに伴い、Deno.ConnectTlsOptionsのcertChainとprivateKeyは非推奨化されているため、新しく追加されたこれらへの移行が推奨されます。
破壊的変更
Deno.DatagramConnとDeno.HttpClientからridプロパティが削除されました。Deno.CreateHttpClientOptionsのcertChainがcert、privateKeyがkeyにリネームされました。
パッケージシステム
パッケージシステム (deno publish)に関してもいくつか改善が行われています。
⚠️
jsr:に関しては、現在はwaitlistが公開されている段階で、まだ正式には利用できません。
deno lint
deno lintにno-slow-typesルールが導入されています (#22430)
このルールはdeno.jsonにname, version, 及びexportsフィールドが定義されている場合、自動で有効化されるようです。
このルールが有効化されている場合、fast checkが実行されるようです。
型チェックに関する改善
deno publishの実行時に型チェックが実行されるように変更されています (#22506)
デフォルトではローカルモジュールに対してのみfast checkが行われるようです。--allow-slow-typesを指定するとfast checkではなく通常の型チェックが行われるようです
また、fast checkに関しては、deno lintなどのコマンドと同様にSQLiteをベースにキャッシュの仕組みが導入されており、型チェックがより効率化されています。(#22485)
deno lsp
deno lspでjsr:URL向けにimportの補完が実装されています (#22462)
deno compile
v1.40.5でdeno compile向けの軽量バイナリであるdenortが再導入されています。
Deno v1.41ではstripコマンドを実行することでdenortバイナリがさらに軽量化されています。Deno公式のリリースポストによると、今後、deno compileをする際に特定の機能のみを有効化したカスタムビルドをサポートすることで、さらにバイナリを軽量化することなども検討されているようです。
その他には、deno compileでdeno.jsonのcompilerOptionsなどが効かない問題が修正されています。
deno info
deno infoコマンドを実行した際もロックファイル(deno.lock)が生成されるように挙動が改善されています。
Node.js互換性
影響が大きそうな内容として、process.envからパーミッションが与えられていない環境変数にアクセスしようとした際に、パーミッションプロンプトが表示されるように挙動が変更されています。
それ以外には、node:testではDenoのテストサニタイザーの仕組みが無効化されています。