What we got wrong about HTTP imports
DenoにおいてHTTPインポートが実装された背景やそのトレードオフ、JSRが開発された背景などについて解説された記事がDenoの公式ブログで公開されています。
HTTPインポートについては今後も削除される予定はないものの、ある程度の規模のプロジェクトにおいてはImport MapsとJSRを併用することが推奨されています。
また、この記事によると、Deno v2のリリースは今年の9月に実施されることが検討されているようです。
node:sqliteのサポートについて
Node.jsで最近実装されたnode:sqliteのサポートに関するissueがlittledivy氏によって作成されています。
現在はクローズされていますが、過去にDeno本体にSQLiteドライバーを追加するPRが作成されていたことがあったので、もしかしたらDenoでnode:sqliteが実装される可能性もありそうな気はします。
Deno v1.45.5
Deno v1.45.5がリリースされています。
Node.js互換性の改善
package.json
importsのワイルドカードが認識されるように改善されています。
node:child_process
IPC(fork)の再実装:
以下のような点などが改善されているようです:
TypedArrayをやり取りができない問題が解消- IPCチャネルを作成すると、イベントループが停止しなくなる問題が解消
nullを渡そうとすると、チャネルが終了してしまう問題が解消
この改善により、--pool=forkを指定した際もvitestが動作するようです。(これはvitest v2のデフォルトの挙動のようです)
--v8-options:
各種APIによってDenoを子プロセスとして実行する際に、Node.jsの--v8-optionsがDenoの--v8-flags=--helpとして解釈されるように挙動が修正されています。これにより、Denoでv8flagsが動作するようです。
node:fs/promises
watch()がNode.jsと同様にAsyncIterableを返却するように修正されています。
node:timers/promises
scheduler.{wait,yield}が実装されています。
Web API
GPUOutOfMemoryErrorが発生すると、プロセスがクラッシュしてしまう問題が修正されています。
Response#cloneのパフォーマンスが改善されています(perf(ext/fetch): speed up resp.clone() (#24812))
deno compile
BYONMが有効化されている場合、カレントディレクトリ直下にないファイルをdeno compileしようとすると、生成されたバイナリーの実行時にプロセスがパニックしてしまう問題が修正されています。
deno_stdのリリース
deno_stdがリリースされています。
@std/testing@1.0.0
@std/testing@1.0.0がリリースされています。
このリリースに合わせて、FakeTimeからthrowされる例外がTimeErrorからRangeErrorとTypeErrorへ変更されています。
@std/http@1.0.0
@std/http@1.0.0がリリースされています。
このリリースに合わせて、eTag()のシグネチャーの改善とETagSource型の削除が行われています。
@std/semver@1.0.0
@std/semver@1.0.0がリリースされています。
このリリースに合わせて、以下のAPIの振る舞いが微調整されています。
format()-NaNやInfinityなどの不正な値を持つSemVerオブジェクトの取り扱いが変更されています (#5587)tryParse()- 引数がoptionalから必須に変更されていますcanParse()- 例外をthrowしないように修正されていますparseRange()- 不正な値が渡された際に
TypeErrorがthrowされるように改善されています operatorとversionの間にスペースがあった際の振る舞いが改善されています
- 不正な値が渡された際に
@std/fmt@1.0.0
@std/fmt@1.0.0がリリースされています。
このリリースに合わせて、PrettyDurationOptionsがFormatOptionsへリネームされています。
@std/net@1.0.0
@std/net@1.0.0がリリースされています。
@std/csv@1.0.0-rc.6
@std/csv@1.0.0-rc.6がリリースされています。
CsvParseStreamでfieldsPerRecordオプションがきちんと動作するように改善されています。
また、エラーメッセージにおいて、該当の行や列が0ベースではなく1をベースに表示されるように改善されています。
@std/url@1.0.0-rc.3
@std/url@1.0.0-rc.3がリリースされています。
このリリースに合わせて@std/urlは非推奨化されており、今後は@std/path/posixの使用が推奨されるようです。
@std/html@1.0.1
@std/html@1.0.1がリリースされています。
実験的なAPIとしてisValidCustomElementName(@std/html/is-valid-custom-element-name)が追加されています。指定された名前がカスタムエレメントの名前として妥当かどうかを検証してくれます。
@std/ini@1.0.0-rc.3
@std/ini@1.0.0-rc.3がリリースされています。
破壊的変更として、FormattingOptionsがprivate APIに変更されています。また、stringify()からcommentCharとdeduplicate, assignmentオプションが削除されています。
それ以外にはparse()に型パラメータが追加されており、ダブルクォートで囲まれた値がきちんと取り扱われるようにする改善も行われています。
codesign for deno compile binaries
deno compileで生成されたバイナリーをcodesignなどによって署名できるようにする対応がマージされています。
おそらく、Deno v1.46あたりで入る可能性がありそうです。