Deno v1.32.5
Deno v1.32.5がリリースされました。
KV
Deno.AtomicOperation.sumが実装されました。
const kv = await Deno.openKv(":memory:");
const result = await kv.set(["key"], new Deno.KvU64(1n));
const ok = await kv.atomic()
.check({ key: ["key"], versionstamp: result.versionstamp })
.mutate({ type: "sum", key: ["key"], value: new Deno.KvU64(2n) })
.commit();
assert(ok);
const result2 = await kv.get(["key"]);
assert(result2.value instanceof Deno.KvU64);
assert(result2.value.value === 3n);
Node.js互換性
node:http
:ClientRequest.socket.remoteAddress
が実装されましたnode:crypto
: createVerifyが実装されましたnode:path
:fromFileUrl
などのNode.jsでは提供されないシンボルがexportされていた問題が修正されましたnpm
: ロックファイルで指定されたバージョンがキャッシュに見つからなかった場合に、そのバージョンのパッケージをダウンロードするように挙動が変更されました (このような場合、今まではエラーが起きていました)
バグ修正
deno lsp
: Unix系のOSでstatusページが返ってこなくなっていた問題が修正されましたdeno test --watch
の実行中にSIGINTを送信しても、プロセスを停止できない問題が修正されましたDeno.upgradeWebSocket()
で取得したWebSocket
オブジェクトのsend()
メソッドが、クライアントからいずれかのフレームを受信するまでブロックされてしまう問題が修正されました (#18700)
deno_std v0.184.0
deno_std v0.184.0がリリースされました。
std/encoding
- 非推奨化されたファイルの削除
非推奨化された以下のファイルが削除されています。
削除されたファイル | 移行先 |
---|---|
std/encoding/front_matter/* | std/front_matter/mod.ts |
std/encoding/jsonc.ts | std/jsonc/mod.ts |
std/encoding/toml.ts | std/toml/mod.ts |
std/encoding/yaml.ts | std/yaml/mod.ts |
std/encoding/csv.ts | std/csv/mod.ts |
std/encoding/csv/* | std/csv/mod.ts |
std/encoding/json/stream.ts | std/json/mod.ts |
std/console
の追加
新規モジュールとしてstd/consoleが追加されました。
これはRustのunicode-widthをTypeScriptにポートしたもののようです。
import { unicodeWidth } from "https://deno.land/std@0.184.0/console/mod.ts";
unicodeWidth("foobar"); // => 6
unicodeWidth("あいうえお"); // => 10
unicodeWidth("🦕"); // => 2
std/testing/bdd.ts
: it.skip
/describe.skip
が追加
挙動としてはit.ignore
/describe.ignore
と同様です。
JestやMochaなどのフレームワークでは.ignore
ではなく.skip
が提供されており、それらとの互換性を高めることが目的のようです。
std/http/file_server
: serveFile()
の改善
serveFile()でRangeリクエストを適切に処理できるように改善されました。
“What’s next for Deno?” by Ryan Dahl (NodeCongress ‘23)
NodeCongressでのRyan Dahl氏の発表がYoutubeで公開されました。
以下の内容などについて解説されています。
node:
やnpm:
のサポートについて- Deno KVの紹介
- Deno DeployでのDeno KVのサポートについて (バックエンドとしてFoundationDBが採用される予定のようです)
- Deno 2.0のリリース時期 (今年の夏頃に予定されているようです)
- キャッシュや永続キュー、バックグラウンドワーカーなどの開発について
Deno.serve(handler, options)
形式のオーバーロードが削除
以下のPRでDeno.serve
の安定化に向けて、APIのシグネチャの見直しが行われています。
BREAKING(unstable): remove “Deno.serve(handler, options)” overload #18759
具体的には、以下のような呼び出しができなくなるようです。
const handler = (request) => {
// ...
return new Response(body);
};
const ac = new AbortController();
Deno.serve(handler, {
signal: ac.signal,
});
上記と同様のことがしたい場合は、以下のように指定できます。
const handler = (request) => {
// ...
return new Response(body);
};
const ac = new AbortController();
Deno.serve({
signal: ac.signal,
}, handler);
// または以下でも可
Deno.serve({
handler,
signal: ac.signal,
});
esm.sh v116
esm.sh v116がリリースされました。
GitHubリポジトリからのファイルのimportがサポートされています。
対象リポジトリのルートにpackage.json
があれば、https://esm.sh/gh/<オーナー>/<リポジトリ>/path/to/file
のように指定することで、特定のファイルをimportできるようです。
Oak v12.2.0
Oak v12.2.0がリリースされました。
Flashサーバのサポートが削除されています。