Deno v1.40.4

Deno v1.40.4がリリースされています。

Deno.FsFile.lock(Sync)/unlock(Sync)

Deno.FsFilelock(Sync)unlock(Sync)メソッドが追加されています。

挙動については既存のDeno.flockなどと同様です。

ARM64ビルド

ARM64向けのビルドがサポートされています。

これに合わせてdeno-arm64も非推奨化されているようです。


Symbol.metadata

Symbol.metadataが追加されています。

CLI

  • DENO_AUTH_TOKENS環境変数でIPアドレスの指定がサポートされています。
  • v1.40.3deno jupyterが動かなくなっていた問題が修正されています。(#22231)
  • deno testコマンドで../がうまく認識されない問題が修正されています。
  • --allow-sysに指定できる値としてcpus(--allow-sys=cpus)がサポートされていいます。node:oscpus()などの使用を許可できます。

deno_std v0.215.0

deno_std v0.215.0がリリースされています。

破壊的変更

std/log/levels.ts

LogLevels.WARNINGが削除されています。(LogLevels.WARNへの移行が推奨されます)

std/path

std/path/glob.tsが削除されています。下記への移行が推奨されます。

また、std/path/separator.tsも削除されています。(std/path/constants.tsへの移行が推奨されます)

std/semver

以下のファイルが削除されています。

削除対象移行先
std/semver/test_comparator.tsstd/semver/test_range.ts
std/semver/try_parse_comparator.tsstd/semver/try_parse_range.ts
std/semver/range_format.tsstd/semver/format_range.ts
std/semver/sort.tsArray#sort + std/semver/compare.ts

非推奨化 (std/semver)

以下のAPIが非推奨化されています。

非推奨API移行先
ltr()lessThan
gtr()greaterThan
reverseSort()versions.sort((a, b) => compare(b, a))

std/expect

expect.addEqualityTesters()が実装されています。


dax v0.39.0

dax v0.39.0がリリースされています。

daxがNode.jsからも利用できるようnpmレジストリに公開(dax-sh)されています。以下では作者のdsherret氏による解説が公開されています。

破壊的変更として、PathRefPathにリネームされています。(PathRefは非推奨化)

また、$.requestでタイムアウトが発生した際にTimeoutErrorがthrowされるように挙動が変更されています。


esbuild_deno_loader v0.9.0

esbuild_deno_loader v0.9.0がリリースされています。

Deno v1.40で導入されたImport Mapsにおけるnpm:URLの取り扱いの改善がesbuild_deno_loaderにも導入されています。

また、jsr:URLのサポートが追加されています。"portable"ローダーと併用したい場合はlockfileの存在が必須のようです。

Slint v1.4.0

GUIツールキットであるSlintのv1.4.0がリリースされています。

このリリースにより、DenoからもSlintが利用できるようになったようです。


https://twitter.com/Linda_pp/status/1753339084343558365

Hono v4

Hono v4がリリースされています。

SSGのためのhono/ssghono/jsxをクライアントサイドで動かすためのhono/jsx/domなどが追加されています。

また、Hono+ViteベースのメタフレームワークであるHonoXが公開されています。


Oak v13.1.0

Oak v13.1.0がリリースされています。

このリリースではFetch APIとの相互運用性の改善を図るため、以下のようなAPIが追加されています。

serve()

Fetch APIのRequestオブジェクトとServeContextを引数として受け取りResponse | Promise<Response>を返却する関数を渡すと、Oakのミドルウェアを返却してくれます。

import { Application, serve } from "https://deno.land/x/oak@v13.1.0/mod.ts";

const app = new Application();
app.use(serve((req, ctx) => {
  console.assert(req instanceof Request);
  return new Response("OK");
}));

route()

Fetch APIのRequestオブジェクトとRouteContextを引数として受け取りResponse | Promise<Response>を返却する関数を渡すと、RouterMiddlewareを返却してくれます。

import { Application, route, Router } from "https://deno.land/x/oak@v13.1.0/mod.ts";

const app = new Application();
const router = new Router();
router.get("/users/:id", route((req, ctx) => {
  console.assert(req instanceof Request);
  return new Response("foo");
}));

ctx.request.source

ContextからFetch APIのRequestオブジェクトにアクセスできます。Node.jsでOakを利用する際はこのプロパティは未設定のようです。


ctx.response.with()

このAPIを使うとFetch APIのResponseオブジェクトを使ってレスポンスを返却できます。