Fresh v2のアルファバージョンが公開

Fresh v2向けに開発されていたコードがmainブランチに取り込まれています。

major: import Fresh 2.0 code (denoland/fresh#2449)

合わせて、Fresh v2のアルファバージョンとして公開されています。

現状、大きな変更として以下のような内容がありそうです。

  • FreshのJSRへの公開
  • preactesbuildなどのパッケージがnpm:経由で読み込まれるように変更されています (例: www/deno.json)
  • ExpressライクなAPIの採用 (例: www/main.ts)
  • ハンドラーやページコンポーネントなどの定義方法の改善 (例: www/routes/showcase.tsx)

現状、わかっている変更点などを少しずつ以下のページにまとめているため、もし興味がありましたら参照ください。

Deno v1.43.6

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

Node.js互換性の改善

JestやVitest, avaなどのテストフレームワーク向けの対応を中心に進められています。

  • node:worker_threads: Workerを介して転送されるメッセージの中にMessagePortがあった場合に、addListenerなどのメソッドが未定義になってしまう問題が修正されています (vitestなど向けの対応)
  • node:module: avaを動かせるようにするため、findSourceMapの空実装が追加されています。
  • node:process: process.listeners()'SIG*'を渡した際に、きちんとリスナー数が返却されるように改善されています。

deno task

deno.jsonnodeModulesDir: true設定されていて かつ node_modulesディレクトリがない場合に、deno taskの実行に失敗してしまう問題が修正されています。

deno serve

deno serveコマンドで指定されたエントリポイントでfetchが引数を受け取らない形式で定義されている場合に、TypeErrorが発生する問題が修正されています。

URL.{canParse,parse}の型定義の改善

  • URL.canParseの第2引数にURLオブジェクトを渡せるように型定義が改善されています。
  • URL.parseの型定義が追加されています。

deno_stdのリリース

deno_stdのリリースが行われています。主要な変更点についてのみ紹介します。

@std/collections@1.0.0-rc.1

@std/collections v1のRCバージョンが公開されています。近いうちにv1がリリースされる可能性がありそうです。

@std/streams@0.224.1

新規APIとしてconcatReadableStreamsが追加されています。

import { concatReadableStreams } from "jsr:@std/streams@0.224.1/concat-readable-streams";

const result = await Array.fromAsync(concatReadableStreams(
  ReadableStream.from([1]),
  ReadableStream.from([2, 3]),
  ReadableStream.from([4, 5, 6]),
));
console.info(result); // => [ 1, 2, 3, 4, 5, 6 ]

deno installと各種パッケージマネージャーとの相互運用性の改善

deno installコマンドでnpm/pnpm/Yarn/Bunなどが生成するロックファイルをサポートすることで、より相互運用性を高めることが検討されているようです。

FUTURE: deno install should interop with other package managers #23909

この機能が入ると、BYONMなどと合わせることで、少しずつDenoへの移行などはやりやすくなる可能性もありそうです。

deno_coreARCHITECTURE.mdが追加

deno_coreの仕組みなどについて解説したARCHITECTURE.mdというファイルが追加されています。

chore: ARCHITECTURE.md (denoland/deno_core#737)