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氏によって作成されています。

Tracking issue for node:sqlite (#24828)

現在はクローズされていますが、過去にDeno本体にSQLiteドライバーを追加するPRが作成されていたことがあったので、もしかしたらDenoでnode:sqliteが実装される可能性もありそうな気はします。

feat: Add Deno.sqlite bindings (#14627)

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からRangeErrorTypeErrorへ変更されています。

@std/http@1.0.0

@std/http@1.0.0がリリースされています。

このリリースに合わせて、eTag()のシグネチャーの改善とETagSource型の削除が行われています。

@std/semver@1.0.0

@std/semver@1.0.0がリリースされています。

このリリースに合わせて、以下のAPIの振る舞いが微調整されています。

  • format() - NaNInfinityなどの不正な値を持つSemVerオブジェクトの取り扱いが変更されています (#5587)
  • tryParse() - 引数がoptionalから必須に変更されています
  • canParse() - 例外をthrowしないように修正されています
  • parseRange()
    • 不正な値が渡された際にTypeErrorthrowされるように改善されています
    • operatorversionの間にスペースがあった際の振る舞いが改善されています

@std/fmt@1.0.0

@std/fmt@1.0.0がリリースされています。

このリリースに合わせて、PrettyDurationOptionsFormatOptionsへリネームされています。

@std/net@1.0.0

@std/net@1.0.0がリリースされています。

@std/csv@1.0.0-rc.6

@std/csv@1.0.0-rc.6がリリースされています。

CsvParseStreamfieldsPerRecordオプションがきちんと動作するように改善されています。

また、エラーメッセージにおいて、該当の行や列が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()からcommentChardeduplicate, assignmentオプションが削除されています。

それ以外にはparse()に型パラメータが追加されており、ダブルクォートで囲まれた値がきちんと取り扱われるようにする改善も行われています。

codesign for deno compile binaries

deno compileで生成されたバイナリーをcodesignなどによって署名できるようにする対応がマージされています。

feat: codesign for deno compile binaries (#24604)

おそらく、Deno v1.46あたりで入る可能性がありそうです。