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が開発された背景について解説する記事が公開されています。