QUICとWebTransport APIのサポートについて

QUICのサポート

DenoのmainブランチにQUICを実装するPRがマージされています。Deno v2.2あたりでリリースされる可能性がありそうです:

quinnをベースに以下のAPIが実装されており、利用には--unstable-netの指定が必要なようです:

  • Deno.connectQuic
  • Deno.listenQuic
  • Deno.QuicBidirectionalStream (Deno.QuicConn#createBidirectionalStreamで作成できます)
  • Deno.QuicConn (Deno.connectQuicなどから返却されます)
  • Deno.QuicListener (Deno.listenQuicから返却されます)
  • Deno.QuicReceiveStream (Deno.QuicConn.incomingUnidirectionalStreamsで取得できます)
  • Deno.QuicSendStream (Deno.QuicConn#createUnidirectionalStreamで作成できます)

WebTransport APIのサポート

まだマージはされていませんが、先程のQUICサポートをベースにWebTransport APIを実装するPRも作成されています:

このPRではWebTransport APIに加えてDeno.upgradeWebTransportというWebTransportサーバーを立てるための独自のAPIも実装されているようです。引数にDeno.QuicConnを渡すことで、WebTransportオブジェクトを返却してくれます。

WebTransport APIについてもQUICと同様に、利用するには--unstable-netの指定が必要なようです。

deno lint - JavaScriptプラグインを実行するための内部APIが追加

以前に紹介したdeno lintでのプラグインサポートの件についてですが、ひとまずDeno[Deno.internal].runLintPluginという内部的なAPIの実装(今のところdeno testコマンドの実行時以外では参照できないよう制御されています)がmainブランチへマージされています。

このPRではまだCLIオプションなどは実装されていないためまだ一般的に利用できる状況ではなさそうですが、JavaScriptプラグインに関するテストコードが追加されており、今後、プラグインを書く際などの参考になりそうです。

deno_stdのリリース

deno_stdのリリースが行われています:

@std/cli@1.0.9

@std/cli@1.0.9がリリースされています。

promptMultipleSelectが追加

以前に追加されたpromptSelect()に続いて、promptMultipleSelect() (@std/cli/unstable-prompt-multiple-select)というAPIが追加されています。promptMultipleSelect()は選択肢から複数の値を選択できます。

@std/fs@1.0.7 & @std/fs@1.0.8

@std/fs@1.0.7@std/fs@1.0.8がリリースされています。

Deno APIのポート

先週に紹介した@std/fsをNode.jsで動作させる対応に向けて、以下の2つのモジュールが追加されました:

  • @std/fs/unstable-stat
  • @std/fs/unstable-lstat

@std/testing@1.0.7 & @std/testing@1.0.8

@std/testing@1.0.7@std/testing@1.0.8がリリースされています。

@std/testing/bdd - Sanitizersに関するカスタマイズが実験的にサポート

@std/testing/bddにおいてSanitizersに関する設定をカスタマイズできるようにするために、configureGlobalSanitizers (@std/testing/unstable-bdd)という実験的APIが追加されています。

@std/testing/bdd - describe.ignoreの修正

describe.ignoreに渡した関数が実行されてしまう問題が修正されています。

@std/cbor@0.1.4

@std/cbor@0.1.4がリリースされています。

Mapのサポート

encodeCbor (@std/cbor/encode-cbor)と decodeCbor (@std/cbor/decode-cbor)でMapがサポートされています。

@std/encoding@1.0.6

@std/encoding@1.0.6がリリースされています。

@std/encoding/unstable-base32crockfordが追加

@std/encoding/unstable-base32crockfordという新規モジュールが追加されています。Crockford’s Base32が実装されています。

@std/expect@1.0.10

@std/expect@1.0.10がリリースされています。

expect.arrayContainingexpect.objectContainingを併用した際に意図通りに動作しない問題が修正されています。

lint.deno.landからdocs.deno.comへの移行について

deno lintに関する各種Lintルールのドキュメントがlint.deno.landからdocs.deno.comへの移行が進められているようです。

今まで、DenoのCLIと各種Lintルールは別々のリポジトリで開発が進んでいる関係で、lint.deno.landではDenoのCLIにまだ含まれていないルールも表示される課題などがありましたが、docs.deno.comへドキュメントを統合することで、この課題などの解消が目的とされているようです:

直近ですでに移行が開始されており、docs.deno.com/lintからもLintルールを閲覧できます:

次世代JSランタイム(Deno,Bun)の使い方

Zennにおいて次世代JSランタイム(Deno,Bun)の使い方というDenoとBunの使い方について解説したドキュメントが公開されています: