Deno v1.39

Deno v1.39がリリースされました。

以下に内容をまとめたため、よろしければそちらを参照いただければと思います。

deno_std v0.209.0

deno_std v0.209.0がリリースされました。

非推奨モジュール・APIの削除

以下の非推奨化されていたモジュールやAPIが削除されています。

  • std/fs/eol.ts: EOLenumから文字列("\n" | "\r\n")に変更されています。
  • std/async/deferred.tsが削除されています。(Deno v1.38からPromise.withResolversがサポートされたため)
  • std/bytes/concat.ts: スプレッド形式のシグネチャ(concat(...buf: (Uint8Array | Uint8Array[])[]): Uint8Array)が削除されました。
  • std/collections: binary_heap.tsなどのデータ構造に関わるファイルが削除されています。
    • deno_std v0.207.0std/data_structuresが追加されていて、今回削除されたデータ構造はそちらから利用できます。
  • std/datetime/to_imf.tsが削除されました。(Date#toUTCString()の使用が推奨されます。)
  • std/http/server_sent_event.tsが削除されました。(std/http/server_sent_event_stream.tsの使用が推奨されます。)

既存モジュール・APIの非推奨化

  • std/types.d.tsが非推奨化されました。
    • 今後はWeb Streams APIの使用が推奨されます。
    • また、std/io/types.d.tsが追加されており、こちらはdeno_std v1までは維持されるようなので、もしstd/types.d.tsを利用したいケースではこちらの利用が推奨されます。
  • std/log: LogLevelsenumから通常のオブジェクトへ変更されています。(これに伴い、一部フィールドが非推奨化されています。)
    • これに合わせてLogLevel型が追加されており、v0.211.0でログレベルをnumber型として扱っていた箇所がLogLevelに変更される予定のようです。
  • std/front_matter: Formatが非推奨化されています。

std/webgpuが追加

Deno v1.39でのWebGPU APIの再導入に伴い、deno_stdstd/webgpuモジュールが追加されています。

WebGPU APIに関連するユーティリティが提供されているようです。

std/netが追加

新規モジュールとしてstd/netが追加されています。

現在はgetAvailablePort()というシステムの空きポートを返してくれる機能のみが提供されています。

std/iniが追加

新規モジュールとしてstd/iniが追加されています。

INIファイルの解析やJavaScriptオブジェクトからの生成がサポートされています。

std/cli/prompt_secret.tsが追加

promptSecret()というAPIが提供されています。

window.promptと同様にユーザーに入力を求めることができますが、入力内容が*でマスキングされます。

import { promptSecret } from "https://deno.land/std@0.209.0/cli/prompt_secret.ts";

const password = promptSecret("> ");
assert(typeof password === "string");

std/assert/std/expect

assertIsError()expect().toThrow()で正規表現がサポートされています。

import { assertIsError } from "https://deno.land/std@0.209.0/assert/assert_is_error.ts";

assertIsError(new Error("foo"), Error, /^f..$/);

std/http/unstable_signed_cookie.tsが追加

Cookieの署名(signCookie)や検証(verifyCookie)などのためのAPIが提供されています。

import { signCookie } from "https://deno.land/std@0.209.0/http/unstable_signed_cookie.ts";
import { setCookie } from "https://deno.land/std@0.209.0/http/cookie.ts";

const headers = new Headers();
// ...
const value = await signCookie("value", key);
setCookie(headers, {
  name: "cookie-name",
  value,
});
assert(headers.has("Set-Cookie"));

その他の改善

  • std/assert: assertEqualsなどで長い文字列を持つオブジェクトどうしを比較する際に、diffが部分的に切り取られてしまう問題が修正されています。
  • std/toml: 複数行文字列に含まれるCRLFがきちんと取り扱われるように改善されています。

Deno.Kv.watchのアナウンス

Deno.Kv.watchの解説がDeno公式で公開されています。

@deno/kvパッケージの解説

Node.jsなどからDeno KVに接続するための@deno/kvパッケージに関する解説記事がDeno公式で公開されています。

Deno KVのベンチマーク

Deno公式でDeno KVやCloudflare Workers KV, Upstash Redisなどのベンチマーク結果や比較などが公開されています。