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の公式ブログで紹介記事が公開されています。