Deno v1.19.2

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

リモートスクリプトでのdeno.json(c)の自動読み込みが無効化

Deno v1.18でdeno.json(c)の自動読み込みがサポートされました。

このリリースでは、リモートスクリプト実行時のdeno.json(c)の自動探索が無効化されています。

リモートスクリプトを実行する際に、ローカルのdeno.json(c)が読まれてしまうことによる不整合を防止することが目的のようです。


Proposal: disable auto-discovery of config file for deno run

deno testの実行時はデフォルトで--no-promptが有効化

Deno v1.19で--promptがデフォルトで有効化されました。

しかし、deno testの実行時は--promptオプションの必要性が薄いため、このリリースで無効化されています。

その他の変更点

  • deno replnullが適切に表示されない問題が修正されました。
  • 非TTY環境でconsoleを使用した際の色付けが無効化されない問題が修正されました。

https://github.com/denoland/deno/releases/tag/v1.19.2

deno_std v0.128.0

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

新機能

streamsモジュールにTextLineStreamが追加されています。

import { TextLineStream } from "https://deno.land/std@0.128.0/streams/delimiter.ts";

const file = await Deno.open("./path/to/file.txt");
const readable = file.readable
  .pipeThrough(new TextDecoderStream())
  .pipeThrough(new TextLineStream());

for await (const line of readable) {
  console.log(line);
}

また、node/cryptoへのcrypto.webcryptoの追加も実施されています。

その他の変更点

  • testing/asserts: assertObjectMatchRegExp/Map/Setが適切に取り扱われるように修正されました。
  • dotenv: dotenv/load.ts.envが同期的に読み込まれるように修正されました。

https://github.com/denoland/deno_std/releases/tag/0.128.0

Deno.TcpConnDeno.UnixConnの追加について

Deno.TcpConnDeno.UnixConnという新しいクラスを追加するPRがマージされています。

feat: Add Deno.TcpConn class, change return type from Deno.connect (#13714) feat(net): add Deno.UnixConn interface (#13787)

これに合わせて、Deno.connect()のシグネチャが変更されています:

  • transport: "tcp"を指定した際の戻り値がDeno.ConnからDeno.TcpConnへ変更
  • transport: "unix"を指定した際の戻り値がDeno.ConnからDeno.UnixConnへ変更

また、元々Deno.Connに定義されていたsetNoDelay()setKeepAlive()などのメソッドもDeno.TcpConnへ移動されています。

変更の背景としては、Deno.ConnはUnixソケットへの接続時などにも利用されていましたが、そこにsetNoDelaysetKeepAliveなどのメソッドが存在するのは不自然というのが理由のようです。

これらの変更は次のマイナーリリースであるDeno v1.20に含まれる可能性が高そうです。

ネイティブHTTPサーバでのレスポンスの自動圧縮について

ネイティブHTTPサーバ(Deno.serveHttp())にレスポンスの自動的な圧縮をサポートするPRがマージされました。

feat(ext/http): auto-compression of fixed response bodies #13769

こちらも次のv1.20でリリースされる可能性がありそうです。

deno_stdでのGoスタイルAPIからStreams APIへの移行について

deno_stdDeno.Reader/WriterなどのGoスタイルAPIからStreams APIへの移行が開始されています。

例) Buffer(std/io/buffer.ts)のStreams APIへの移行

この移行が完了すれば、現在deno_stdで提供されている多くの機能がStreams APIをベースとして利用できるようになりそうです。

現在の進捗については下記issueから確認できます。

tracking: Deno streams to web streams conversion #1986

FreshでIsland architectureがサポート

FreshIsland architectureがサポートされました。

Reimagining fresh to be “island” based (#97)

これに合わせて、ディレクトリ構成が変更されています:

  • pages/ディレクトリがroutes/にリネームされました (routes/ディレクトリのコンポーネントは従来通りSSRされます)
  • islands/ディレクトリが追加され、このディレクトリ内のコンポーネントのみ個別にクライアント上でレンダリングされます。
  • routes.gen.tsfresh.gen.tsへリネームされました(fresh.gen.tsfresh manifestコマンドで自動生成されます)

これに合わせて、useData()フックや<Suspense>などが削除されています(近い将来に再度実装される予定のようです)