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やその内部構成などについて解説されています。