Deno v1.39.2
Deno v1.39.2がリリースされました。
Node.js互換性
BYONMとImport Mapsを併用できるようになりました。
また、import.meta.resolve()でnpm:URLがサポートされています。
import.meta.resolve("npm:express"); // => "npm:express"
Node.jsの組み込みパッケージに関しても様々な改善が行われており、試せてはいないのですが、next buildが動作するようになったようです。
node:dgram:Socketのunref/refが実装node:http:ClientRequest#setNoDelayが実装node:crypto:aes-192-ecbとaes-256-ecbがサポートnode:process:process.abort()が実装node:os:os.machine()が実装node:os:os.cpus()の互換性の向上 (今まではダミーの値が返されていました。)node:test:TestContext#testで2段階以上のネストがサポートされました。
deno lsp
V8インスペクターへの接続がサポートされています。
vscode_deno v3.31.0で"deno.internalInspect"オプションが追加されており、これにtrueなどを設定すると有効化されるようです。
Debugger listening on ws://127.0.0.1:9222/ws/<id>
Visit chrome://inspect to connect to the debugger.
compilerOptions.jsxImportSourceで指定されたモジュールをdeno lspが自動でキャッシュするように挙動が改善されました。
Test code lensでDeno.test.only/Deno.test.ignoreを使用して定義されたテストケースが検出されるように改善されました。
deno check
deno checkコマンドでdeno.jsonのexcludeの内容が反映されるように改善されました。
Deno KV
DBがクローズされたらウォッチャー(Deno.Kv#watch)も自動で停止するように挙動が改善されています。
Object.groupBy
戻り値の型がRecord<Key, Item[]>からPartial<Record<Key, Item[]>>に変更されました。
deno_std v0.211.0
deno_std v0.211.0がリリースされました。
非推奨API・モジュールの削除
std/collections
group_by.tsが削除されています。 (Object.groupByへの移行が推奨されます)
std/crypto
keystack.tsが削除されています。(std/crypto/unstable_keystack.tsへの移行が推奨されます)
std/front_matter
以下の非推奨APIが削除されています。
- 各ファイルから
Formatが削除されています。("yaml"や"toml"などの文字列リテラルの使用が推奨されます。) {any,json,toml,yaml}.tsからdefault export(代わりにextractという名前でnamed importができます)とtest()(代わりにtest.tsから読み込めます)が削除されています。
std/http
以下のモジュールとAPIが削除されています
http_status.tsが削除されています。 (std/http/status.tsへの移行が推奨されます。)status.tsのStatusが削除されています。 (STATUS_CODEへの移行が推奨されます。)std/http/util.tsが削除されています。
std/path
posix.tsが削除されています。(std/path/posix/mod.tsへの移行が推奨されます。)win32.tsが削除されています。(std/path/windows/mod.tsへの移行が推奨されます。)
std
トップレベルのstd/types.d.tsが削除されています。
今のところはstd/io/types.d.tsへの移行が推奨されます。ただし、std/io/types.d.tsも非推奨化されており、こちらも将来的に削除されることが計画されているようです。
非推奨化
std/log
string形式のBaseHandler.formatterが非推奨化されています。(関数形式の値は引き続き利用できます。)
std/semver
compare_build.tsが非推奨化されました。test_comparator.tsが非推奨化されました。(compareの使用が推奨されます。)cmp.tsが非推奨化されました。(compareの使用が推奨推奨されます。)formatのstyle引数が非推奨化されました。(SemVerのプロパティを直接参照することが推奨されるようです。)rsortがreverseSortにリネームされています。
std/cli/spinner.ts
表示するメッセージを動的に切り替えられるようにするため、Spinner.messageがpublicプロパティに変更されました。
std/semver
std/expect
以下のAPIのJestとの互換性が改善されています。
expect().toEqual()でオブジェクト同士を比較する際に、値にundefinedが設定されているキーが比較対象から除外されるように変更されました。expect().toStrictEqual()でオブジェクト同士を比較する際に、参照ではなく各プロパティの内容もきちんと比較されるように変更されました。(assertEqualsと同様の振る舞いをします)
WASMやBlobなどのimportについて
Deno公式のYoutubeチャンネルで公開されている動画でWASMやBlobなどのimportのサポートが開発中であると発表されています。
deno_coreで開発が進められているようです。
unstable APIの型チェックに関する挙動の変更について
現状、deno checkコマンドなどでunstable APIを利用したコードの型チェックをする場合、--unstableオプションが指定されていなければ、型エラーが発生します。
この挙動を変更して、--unstableオプションが指定されていない状態であっても、型チェック時は常にunstable APIを有効化することが検討されているようです。
現在のunstable APIに関する型チェックの挙動は生産性に対して悪影響があることが考えられるということで、この変更が検討されたようです。
今のところ、この変更はDeno v1.40で導入されることが計画されているようです。
RustでWebバックエンドを書き始めてから1年くらい経った
「RustでWebバックエンドを書き始めてから1年くらい経った」という記事が公開されています。
Deno Deployやその内部構成などについて解説されています。