Deno v1.41がリリースされました。

この記事では主な変更点などについて解説します。

Deno API

Deno.FsFile

Deno.FsFileisTerminalsetRawメソッドが追加されています。

Deno.isattyは非推奨化されているため、Deno.FsFileDeno.stdinなどのisTerminalメソッドへの移行が推奨されます。

Deno.ConnectTlsOptions

Deno.ConnectTlsOptionscertkeyオプションが追加されています。

これに伴い、Deno.ConnectTlsOptionscertChainprivateKeyは非推奨化されているため、新しく追加されたこれらへの移行が推奨されます。

破壊的変更

パッケージシステム

パッケージシステム (deno publish)に関してもいくつか改善が行われています。

⚠️ jsr:に関しては、現在はwaitlistが公開されている段階で、まだ正式には利用できません。

deno lint

deno lintno-slow-typesルールが導入されています (#22430)

このルールはdeno.jsonname, version, 及びexportsフィールドが定義されている場合、自動で有効化されるようです。

このルールが有効化されている場合、fast checkが実行されるようです。

型チェックに関する改善

deno publishの実行時に型チェックが実行されるように変更されています (#22506)

デフォルトではローカルモジュールに対してのみfast checkが行われるようです。--allow-slow-typesを指定するとfast checkではなく通常の型チェックが行われるようです

また、fast checkに関しては、deno lintなどのコマンドと同様にSQLiteをベースにキャッシュの仕組みが導入されており、型チェックがより効率化されています。(#22485)

deno lsp

deno lspjsr:URL向けにimportの補完が実装されています (#22462)

deno compile

v1.40.5deno compile向けの軽量バイナリであるdenortが再導入されています。

Deno v1.41ではstripコマンドを実行することでdenortバイナリがさらに軽量化されています。Deno公式のリリースポストによると、今後、deno compileをする際に特定の機能のみを有効化したカスタムビルドをサポートすることで、さらにバイナリを軽量化することなども検討されているようです。

その他には、deno compiledeno.jsoncompilerOptionsなどが効かない問題が修正されています。

deno info

deno infoコマンドを実行した際もロックファイル(deno.lock)が生成されるように挙動が改善されています。

Node.js互換性

影響が大きそうな内容として、process.envからパーミッションが与えられていない環境変数にアクセスしようとした際に、パーミッションプロンプトが表示されるように挙動が変更されています。

それ以外には、node:testではDenoのテストサニタイザーの仕組みが無効化されています。

参考