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 replでnullが適切に表示されない問題が修正されました。- 非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:assertObjectMatchでRegExp/Map/Setが適切に取り扱われるように修正されました。dotenv:dotenv/load.tsで.envが同期的に読み込まれるように修正されました。
https://github.com/denoland/deno_std/releases/tag/0.128.0
Deno.TcpConnとDeno.UnixConnの追加について
Deno.TcpConnとDeno.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ソケットへの接続時などにも利用されていましたが、そこにsetNoDelayやsetKeepAliveなどのメソッドが存在するのは不自然というのが理由のようです。
これらの変更は次のマイナーリリースである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_stdでDeno.Reader/WriterなどのGoスタイルAPIからStreams APIへの移行が開始されています。
例) Buffer(std/io/buffer.ts)のStreams APIへの移行
この移行が完了すれば、現在deno_stdで提供されている多くの機能がStreams APIをベースとして利用できるようになりそうです。
現在の進捗については下記issueから確認できます。
FreshでIsland architectureがサポート
FreshでIsland architectureがサポートされました。
これに合わせて、ディレクトリ構成が変更されています:
pages/ディレクトリがroutes/にリネームされました (routes/ディレクトリのコンポーネントは従来通りSSRされます)islands/ディレクトリが追加され、このディレクトリ内のコンポーネントのみ個別にクライアント上でレンダリングされます。routes.gen.tsがfresh.gen.tsへリネームされました(fresh.gen.tsはfresh manifestコマンドで自動生成されます)
これに合わせて、useData()フックや<Suspense>などが削除されています(近い将来に再度実装される予定のようです)