Deno v1.33.4
Deno v1.33.4がリリースされました。
Node.js互換性の改善
組み込みモジュールの改善
node:crypto:getDiffieHellman/createDiffieHellmanが実装されました。node:url:formatにURLオブジェクトを渡した際に、適切にフォーマットが行われなかった問題が修正されました。node:child_process:spawnのstdioオプションにStreamを渡せるようになりました。- これによりnpm-run-all が動くようになったようです。
Node-API
napi_add_finalizerが実装されました。- BigInt関連のAPIの互換性が改善されています。
npm
optionalDependenciesのサポートが改善されています。
Deno KV
Deno.Kv.close()の戻り値の型定義がPromise<void>からvoidへ変更されました。(実装は修正されていませんが、TypeScriptの型定義に誤りがあったようです)
Deno.serve()のバグ修正
リクエストがキャンセルされると、Denoがパニックすることがある問題が修正されました。
Web API
BroadcastChannelの型定義がlib.deno.unstable.d.tsへ移動されました。- unstable APIであるにも関わらず、
--unstableなしでも型定義を参照できてしまう問題があったようです。
- unstable APIであるにも関わらず、
WebSocketで短い時間内で多くのメッセージを送信すると、いくつかのメッセージが失われることがある問題が修正されました。fetch()でIPアドレスを指定してHTTPSリクエストを送信する(例:https://1.1.1.1/)とエラーが発生する問題が解消されました。
deno_std v0.188.0
deno_std v0.188.0がリリースされました。
std/flags
collectとdefaultを併用した際に、オプションにネストされた配列が設定される問題が修正されました。
import { parse } from "https://deno.land/std@0.188.0/flags/mod.ts";
const options = parse([], {
collect: ["values"],
default: {
values: ["foo", "bar"],
},
});
console.log(options);
// v0.188.0: `{ _: [], values: [ "foo", "bar" ] }`
// v0.187.0: `{ _: [], values: [ [ "foo", "bar" ] ] }`
Deno.serveの安定化について
まだマージはされていませんが、Deno.serve()を安定化するPRが作成されています。
これに合わせてDeno.serveの戻り値を変更するPRも作られています。
BREAKING(unstable): change return type of Deno.serve() API #19189
具体的には、戻り値がPromise<void>からDeno.Serverというオブジェクトへ変更されています。
今のところ、Deno.Serverは以下のようなプロパティ・メソッドが定義される想定のようです。
finished: HTTPサーバの終了時にresolveされるPromise(今までDeno.serveから返されていたPromiseと同様のタイミングでresolveされます)unref(): HTTPサーバがプロセスの終了をブロックしなくなります。ref(): HTTPサーバのunref状態を解除します。
これらの変更に合わせて、deno_std/http/server.tsのserve/serveTlsも非推奨化されることが検討されているようです。
kv-toolbox
Deno KVのユーティリティライブラリ
Deno KVのエントリサイズの制限を超過する値を、透過的に複数のチャンクへ分割して取り扱う機能などが提供されているようです。
Windmill
Airplaneなどの代替OSS
TypeScriptで書かれたスクリプトを実行するためにDenoが採用されているようです。
Denoの公式ブログで紹介記事が公開されています。