Deno v1.43.0について
Deno v1.43.0は先週にリリース予定だったようですが、延期されることになりました。
ただし、直近でv1.43.0向けと思われる機能がいくつか入っていたので紹介します。(⚠️正式にリリースされる際には仕様などが変わる可能性があります)
deno serve
コマンド
deno serve
コマンドが追加されています。
以下のようにfetch
関数を実装したオブジェクトをdefault export
したファイルを用意します。
// main.ts
export default {
fetch(req: Request) {
return new Response("OK");
},
};
このファイルを指定してdeno serve
コマンドを実行すると、HTTPサーバーが起動されます。
$ deno serve main.ts
deno serve: Listening on http://localhost:8000/
$ curl http://localhost:8000
OK
ポートはデフォルトで8000
が使用されますが、--port
オプションで変更が可能です。
Deno.serve
でRequest.signal
がサポート
Deno.serve
のハンドラーに渡されれるRequest
オブジェクトでsignal
プロパティがサポートされています。先程のdeno serve
コマンドでも利用可能です。
export default {
fetch(req: Request) {
// レスポンスがクライアントへ送信されると`abort`が発火します
req.signal.addEventListener("abort", () => console.info("aborted"));
return new Promise<void>((resolve) => {
setTimeout(() => {
resolve(new Response("OK"));
}, 5000);
});
},
};
V8コードキャッシュ
V8によって生成されたコードキャッシュを保存する仕組みが導入されています。
この仕組みはデフォルトで有効化されており、任意で--no-code-cache
を指定することで無効化できるようです。
V8が生成したコードキャッシュは、DENO_DIR
配下にv8_code_cache_v1
というSQLiteデータベースファイルが作られ、そこで管理されるようです。
その他
UnsafeWindowSurface
でのWaylandのサポートやFloat16Array
の実験的なサポートなどが追加されています。
- https://github.com/denoland/deno/compare/0a7f46b8c29d67b579e4ffd4681aa5d0b7e30c6b...8321106b78abf63233fc78f55b47dc5ebc4997e9
- https://github.com/denoland/deno/blob/8321106b78abf63233fc78f55b47dc5ebc4997e9/Releases.md
deno_std v0.224.0
deno_std v0.224.0がリリースされています。
std/semver
testRange
がsatisfies
(std/semver/satisfies.ts
)にリネームされています。
バグの修正
std/bytes/equals.ts
Uint8Array
のsubarray
を渡した場合に、equals
が意図した通りに動作しない問題が修正されています。
std/csv/stringify.ts
columns
オプションに空の配列が渡された際に、先頭に空のヘッダーが出力される問題が修正されています。
std/fs/ensure_dir.ts
ensureDir
にディレクトリへのシンボリックリンクが指定された場合に、エラーが発生する問題が修正されています。
JSR Is Not Another Package Manager
Deno公式ブログでJSRが開発された背景について解説する記事が公開されています。