Deno v1.34.2

Deno v1.34.2がリリースされました。

Node.js互換性

  • node:http2が追加されました。
    • http2.connecthttp2.createServerの基本的な実装が追加されています。
  • node:fs/promises: FileHandleの以下のメソッドが実装されました。
    • readFile()
    • read()
    • write()
    • close()
  • node:child_process: spawnstdioオプション[0, 1, 2]の指定がサポートされました。
  • node:process: process.stdoutにpipeされたReadableストリームがクローズされた際に、process.stdoutも一緒にクローズされてしまう問題が修正されています。

Web API

  • 巨大なArrayBufferconsole.logなどで表示しようとした際に、誤ってdetached状態として表示される問題が修正されました。
  • EventTargetのリスナ内で同一イベントへのリスナを新しく登録した際に、登録されたばかりのリスナが即座に呼ばれてしまう問題が修正されました。

パフォーマンス改善

主にHTTPサーバ(Deno.serve)に対して、様々なパフォーマンス改善が実施されています。

deno_std v0.191.0

deno_std v0.191.0がリリースされました。

std/{csv,http,path}: 非推奨化されたファイル・APIの削除

std/htmlが追加

新しいモジュールとしてstd/htmlが追加されました。

HTMLエンティティのエスケープ・アンエスケープを行うための機能が提供されているようです。

std/async/retry.ts

retry()jitterオプションが追加されました。(デフォルトは1)

0を指定するとjitterを無効化できます。

std/collections

  • std/collectionsの各APIが配列だけでなくIterable<T>を引数として受け取るように改善されました。
  • sortBy()options引数が追加されました。
    • orderオプション("asc" | "desc")によってソート時の並び順を指定できます。(デフォルトはasc)

std/crypto

crypto.digestBLAKE2B-224がサポートされました。

std/toml/stringify.ts

stringify()で以下のバグが修正されています。

  • オブジェクトのキーに空文字列があった際に、不正なTOMLが出力される
  • 値に空のオブジェクトが含まれていた際に、適切にTOMLが出力されない
  • インラインオブジェクトのキーに/などの特殊なキーがあると、適切にTOMLが出力がされない

Deno.listenDatagramの安定化について

Deno.listenDatagramを安定化するためのPRが作成されています。

feat(net): stabilize Deno.listenDatagram with udp #19380

この変更は、Deno v1.35でのリリースが検討されているようです。

今のところUDPソケット(transport: "udp")のみが安定化される予定のようで、Unixドメインソケット(transport: "unixpacket")についてはこの変更では安定化されない予定のようです。

denoland/publish-folder

まだ開発中のため使用は推奨されないようですが、deno.land/xへ特定のディレクトリを公開するためのGitHubアクションが公開されています。

esm.sh v125

esm.sh v125がリリースされました。

Deno v1.33.2以上のバージョンが使用されている際は、?target=denonextが自動で適用されるように変更されたようです。


https://twitter.com/jexia_/status/1666370421720219648

deno_tui v2

DenoのTUIライブラリであるdeno_tuiのv2がリリースされています。

主な変更点:

  • 各コンポーネント名からComponentサフィックスが削除 (例: ButtonComponent -> Button)
  • リアクティブにUIを更新するために、SignalComputedなどが導入
  • パフォーマンスの改善

など