Deno v2.3.2 & v2.3.3
Deno v2.3.2とDeno v2.3.3がリリースされています。
deno lint
deno lint
プラグインでコメントの取得がサポートされています (#29189)
SourceCode
クラス (RuleContext.sourceCode
からアクセス可能) にgetAllComments()
/getCommentsBefore()
/getCommentsAfter()
/getCommentsInside()
メソッドが追加されています。
また、Program
にもcomments
プロパティーが追加されています。
deno coverage
deno coverage --html
で生成されるHTMLレポートで、OS設定に基づいてlight
とdark
テーマが切り替わるように改善されています (#29267)
deno jupyter
- 複数カーネルの管理がサポート
deno jupyter
コマンドで複数のカーネルをインストール・管理するための機能が導入されています (#29249)
--name
オプション
deno jupyter
コマンドに--name
オプションが追加されています。
--install
オプションとともに--name
オプションが指定されると、カーネルがインストールされる際のディレクトリ名を変更できます (デフォルトはLinuxだと~/.local/share/jupyter/kernels/deno
で、--name deno-canary
を指定すると~/.local/share/jupyter/kernels/deno-canary
にインストールされます)
--install
が省略された場合、--name
オプションによって指定された名前でkernel.json
がインストールされているか確認できます。
deno jupyter --install --display <name>
deno jupyter --install
に--display
オプションが追加されています。
このオプションを指定することで、kernel.json
のdisplay_name
をカスタマイズできます (デフォルトはDeno
)
deno jupyter --install --force
deno jupyter --install
に--force
オプションが追加されています。
このオプションを指定すると、カーネルがすでにインストール済みである際も強制的にカーネルを再インストールしてくれます。
deno check
Ambient moduleに関する挙動の改善
Ambient moduleによって型が定義されたパスに対して発生する型エラーが無視されるよう挙動が変更されています (#29135)
例えば、Ambient moduleによって*.svg
に対する型定義が定義されていたら、*.svg
に対するimport
によって型エラーが起きぬように改善されています。
deno.lock
deno.lock
の更新タイミングが型チェックの実行前から実行後へ変更されています (#29265)
型チェックの実行時にはじめて@types/node
が必要となるケースがあるため挙動が変更されたようです。
また、deno.lock
にすでに@types/node
が書き込まれている場合、@types/node@*
が書き込まれないよう改善されています (#29270)
deno fmt
Tagged template内のHTML/CSS/SQLで構文エラーがあった際の挙動の改善
Tagged template内のHTML/CSS/SQLに構文エラーが存在した場合、エラーが発生するよう改善されています (#29259)
fmt.useTabs
fmt.useTabs: true
が設定されている場合、fmt.indentWidth
が無視されるよう修正されています (#29205)
deno lsp
deno/taskDefinitions
deno/taskDefinitions
で各タスクのdescription
が返却されるよう改善されています (#29244)
巨大なファイルの取り扱いの改善
巨大なファイルのフォーマットで時間がかかることがある問題への改善が実施されています (#29162)
また、巨大なJSONファイルがimport
されている際のメモリ使用量の改善が実施されています (#29192)
10MB以上のJSONファイルは{}
型として取り扱うよう修正されているようです。
診断の改善
deno jupyter
におけるトップレベルのfor await
への警告が無効化されています (#29114)
また、型定義が見つからないnpmパッケージに対してno-export-npm
が返されないよう修正されています (#29180)
Quickfix
$node_modules
に対するQuickfixが表示されないよう改善されています (#29194)
deno cache
deno cache
コマンドで--env-file
がサポートされています (DENO_AUTH_TOKENS
の設定などが想定されている模様です) (#29160)
CLI
DENO_USE_CGROUPS
環境変数が導入
Linux向けにDENO_USE_CGROUPS
という環境変数が導入されています (#29078)
この環境変数が設定されると、システムのメモリ容量ではなく、cgroupのメモリ制限を考慮して Isolate のヒープ領域が確保されるよう挙動が変更されるようです。
今まで、Denoはシステムの最大メモリ容量を元に Isolate のヒープ領域を設定しており、Dockerなどのようにcgroupによってメモリ使用量が制限されている環境において、OOMによってプロセスが意図せず停止させられてしまうことがあった課題の解消が目的のようです (#29077)
--allow-import
のバグ修正
--allow-import
に不正な形式の値を指定すると、プロセスがパニックする問題が修正されています (#29118)
DENO_TRUST_PROXY_HEADERS
環境変数が導入
DENO_TRUST_PROXY_HEADERS
という環境変数が追加されています (#29296)
x-deno-client-address
ヘッダーについての詳細についてはわかっていないのですが、この環境変数に1
が設定されると、Denoが受け取るHTTPリクエストからx-deno-client-address
ヘッダーが削除されるようです。
OpenTelemetry
boot_failure
及びuncaught_exception
イベントが追加
以下のイベントが新しく実装されています (#29287)
イベント | 送信タイミング |
---|---|
boot_failure | Denoの起動に失敗したとき |
uncaught_exception | 未捕捉の例外が検出されたとき |
--env-file
のサポート
OTEL_DENO
やOTEL_EXPORTER_OTLP_PROTOCOL
などの各種OpenTelemetry関連の環境変数を--env-file
オプション経由で指定できるよう改善されています (#29240)
Worker
との併用
OpenTelemetryが有効化された状態でWorker
を作成するとプロセスがパニックする問題が修正されています (#29248)
Deno.serve()
DENO_SERVE_ADDRESS=duplicate,<address>
DENO_SERVE_ADDRESS
でduplicate,<address>
という形式がサポートされています (#29109)
Deno.serve()
のオプションとして指定されたアドレスに加え、duplicate,
の後に指定されたアドレスでもサーバーが起動されるようです:
// main.mjs
Deno.serve({
port: 3000,
hostname: "localhost",
}, req => new Response("OK"));
$ DENO_SERVE_ADDRESS=duplicate,tcp:127.0.0.1:8000 deno run --allow-net main.mjs
$ curl http://localhost:3000
OK
$ curl http://localhost:8000
OK
DENO_UNSTABLE_CONTROL_SOCK
に対する通知
Deno.serve()
によってサーバーが起動された際に、DENO_UNSTABLE_CONTROL_SOCK
が指定された状態で起動されたDenoプロセス (unconfigured jsruntime)が通知を受け取れるよう、該当のソケットへServing
という通知を送信する機能が導入されています (#29173, #29184)
Deno.createHttpClient()
- UNIXソケットによるプロキシーのサポート
Deno.createHttpClient
でproxy.transport: "unix"
がサポートされています (#29154)
FFI関連の型定義の改善
FFI関連の型定義において、Uint8Array
からUint8Array<ArrayBuffer>
を使用するように変更されています (#29127)
Deno.Command
のバグ修正
Deno.Command
にsignal
オプションが指定され かつ サブプロセスがすぐに終了した場合、該当のAbortSignal
がabort
された際にエラーが発生することがある問題が修正されています (#29193)
createImageBitmap()
のバグ修正
createImageBitmap()
にBlob
が与えられた際に、type
プロパティーの値を考慮しないよう修正されています (#28741)
precompiled JSX transform のバグ修正
precompiled JSX transform (compilerOptions.jsx: "precompile"
)が有効化された際に、props.children
に与えられた文字列がエスケープされるよう改善されています (#29200)
const thisStringShouldBeEscaped = "...";
<p>{thisStringShouldBeEscaped}</p>
TypeScript
Explicit Resource Managementのネイティブサポート
Deno v2.2.10でJavaScriptに対するExplicit Resource Managementのネイティブサポートが提供されました。
このリリースではTypeScriptコードにおいてもswcによるトランスパイルに依存せずV8によるExplicit Resource Managementのネイティブサポートが利用されるよう改善されています (#29282)
型定義の追加
以下のAPIに対する型定義が追加されています (#29186)
Promise.try()
RegExp.escape()
Atomics.pause()
Node.js互換性の改善
@types/node
Denoにおいてデフォルトで使用される@types/node
のバージョンが22.11.0
から22.15.14
へ更新されています (#28407)
node:dns
lookup()
にutil.promisify()
を適用した状態でall: true
オプションを設定して呼んだ際に、TypeError
が発生する問題が修正されています (#29167)
node:process
process.stdout.getColorDepth
が実装されています (#29176)
この改善により、create-vueが動作するようです。
また、loadEnvFile()
がnamed import
で読み込めるように改善されています (#29237))
node:http
ServerResponse.req
が実装されています (#29211)
また、request()
でsocketPath
オプションがサポートされています (#29182)
node:https
request()
及びAgent
でkey
/cert
/ca
オプションがサポートされています (#28937)
node:tls
Server#unref
がサポートされています (#29279)
connect()
でrejectUnauthorized
オプションがサポートされています (#29245)
また、connect()
でhost
オプションのデフォルト値としてlocalhost
が使われるよう修正されています (#29231)
node:test
TestContext
のskip()
及びtodo()
メソッドが実装されています (#29222)
node:assert
CallTracker
が実装されました (#29226)
node:sqlite
WindowsでDatabaseSync#close
を読んでも適切にファイルが閉じられない事がある問題が修正されています (#29210)
node:dgram
以下のAPIが実装されています:
Socket#addMembership
/dropMembership
(#29207)Socket#setBroadcast
(#29195)Socket#setMulticastLoopback
(#29241)Socket#setMulticastTTL
(#29232)
今回の改善により、multicast-dnsが動作するようです。
node:buffer
Buffer.compare()
に不正な入力が与えられた際にTypeError
ではなくERR_INVALID_ARG_TYPE
が発生するよう改善されています (#29275)
V8 137
v8 137へのアップデートが実施されています (#29166)
An Update on Fresh
Deno公式ブログでFresh v2に関する記事が公開されています:
Fresh v2において予定されている変更内容やFresh v2のリリースに関連したDeno本体やDeno Deployへの改善 (今後、発表予定とのことですが、Deno Deployにおいてビルドステップに関する改善などが行われているそうです) などについて解説されています。
また、Fresh v2の正式なリリース時期についても言及されており、2025年9月ごろでのリリースが計画されているようです。現在はプラグインシステムやバンドラーとの統合に関する改善などを中心に進められているそうです。
deno_std
のリリース
deno_std
のリリースが実施されています (release-2025.05.13)
@std/collections@1.1.0
@std/collections@1.1.0がリリースされています。
Iterable
サポートの安定化
以下のunstableモジュールでサポートされていたIterable
サポートが安定化されています (#6644)
@std/collections/unstable-chunk
@std/collections/unstable-drop-while
@std/collections/unstable-drop-last-while
@std/collections/unstable-intersect
@std/collections/unstable-sample
@std/collections/unstable-sliding-windows
@std/collections/unstable-sort-by
@std/collections/unstable-take-last-while
@std/collections/unstable-take-while
@std/collections/unstable-without-all
これらの@std/collections/unstable-*
モジュールは現在は削除され、unstable-*
プレフィックスがついていない対応するモジュールにマージされています (例: @std/collections/unstable-chunk
で提供されていたIterable
のサポートは、@std/collections/chunk
にマージされています)
@std/collections/unstable-cycle
の追加
@std/collections/unstable-cycle
という新規モジュールが追加されています (#6386)
@std/async@1.0.13
@std/async@1.0.13がリリースされています。
@std/async/abortable
abortable()
にrejectされたPromise
とabort済みのAbortSignalを渡すと、unhandledrejection
が発生する問題が修正されています (#6312)
@std/bytes@1.0.6
@std/bytes@1.0.6がリリースされています。
@std/bytes/concat
concat()
にreadonly
な配列を渡せるよう型定義が改善されています (#6639)
@std/data-structures@1.0.8
@std/data-structures@1.0.8がリリースされています。
@std/data-structures/unstable-binary-search-tree
@std/data-structures/unstable-binary-search-tree
モジュールが追加されています (#6544)
@std/data-structures/binary-search-tree
のBinarySearchTree
クラスが提供する各種メソッドに加え、ceiling()
/floor()
/higher()
/lower()
メソッドが提供されます。
@std/dotenv@0.225.4
@std/dotenv@0.225.4がリリースされています。
load()
でURL
がサポート
load()
/loadSync()
のenvPath
オプションでURL
オブジェクトによるパスの指定がサポートされています (#6621)
@std/expect@1.0.16
/@std/testing@1.0.12
@std/expect@1.0.16と@std/testing@1.0.12がリリースされています。
expect.hasAssertions()
及びexpect.assertions()
の改善
expect.hasAssertions()
とexpect.assertions()
の挙動が改善されています (#6646)
expect.hasAssertions()
がit()
の中以外から呼ばれた際に、適切にエラーが発生するよう改善されています。
また、expect.hasAssertions()
またはexpect.assertions()
が失敗した場合、他のテストケースもその影響を受けてしまう問題が修正されています。
@std/http@1.0.16
@std/http@1.0.16がリリースされています。
@std/http@/file-server
ブラウザーのキャッシュが適切に動作するよう、Date
ヘッダーに該当のファイルのアクセス日時を設定しないよう修正されています (#6610)
@std/toml@1.0.6
@std/toml@1.0.6がリリースされています。
@std/toml/stringify
stringify()
においてJavaScriptのNaN
がnan
としてフォーマットされるよう修正されています (#6638)
denoland/setup-deno v2.0.3
DENO_DIR
のキャッシュがサポート
ダウンロードされた依存関係などのキャッシュがサポートされています:
- feat: add built-in caching via inputs #89
- feat: include a hash of deno.lock files in the cache key automatically #98
cache: true
オプションによって有効化できます。
また、cache-hash
オプションによってキャッシュキーの一部として利用されるハッシュ値をカスタマイズできます。(デフォルトは${{ hashFiles('**/deno.lock') }}
)
LTSバージョンのサポート
deno-version
でlts
を指定すると、DenoのLTSバージョンがダウンロードされます (#97)
Prisma v6.8.0
Prisma v6.8.0がリリースされています。
このリリースではprisma-client-jsからDenoのサポートが削除され、prisma-clientジェネレーターへの移行が行われており、DenoからPrismaを利用する際の設定方法などが変更されているようです。