Deno v2.0.3

Deno v2.0.3がリリースされました。

deno lsp

Interactive Inlay Hints for Types

Interactive Inlay Hints for Typesが実装されています。Inlay Hintsの内容をクリックすることで、その定義元へジャンプできるようです。


import-map-remap quickfix

type imports (import type)に対してもimport-map-remap quickfixが利用できるよう改善されています。


deno compile

Node-APIのサポート

deno compileで生成されたバイナリでNode-APIがサポートされています。


deno check

--frozenのサポート

deno checkコマンドで--frozenオプションの指定がサポートされています。


deno fmt

--extの挙動の変更

deno fmt--extオプションを指定した際に、引数でのファイルの指定が必須に変更されています。


HTMLファイルに対するdeno-fmt-ignore-*のサポート

HTMLファイルに対してdeno fmtコマンドを実行する際にdeno-fmt-ignore-*コメントが動作していなかった問題が修正されています。


deno add/deno install

deno.jsonの更新時の振る舞いの改善

deno adddeno removeなどのコマンドでdeno.json(c)package.jsonが更新される際に、元のインデントやコメントなどを維持してくれるよう振る舞いが改善されています。


引数なしでdeno installを実行した際の振る舞いの変更

引数なしでdeno installを実行した際に、JSRパッケージのexportsで定義されたすべてのファイルがダウンロードされるように挙動が変更されています。(今までは依存されているファイルのみがダウンロードされていました)


型定義ファイルのみを含むファイルの取り扱いが改善

deno installでJSRパッケージをダウンロードする際に、型定義だけを含むファイルがダウンロードされない問題が修正されています。


package.jsonに対するdeno.lockサポートの改善

プロジェクトにpackage.jsonだけが存在するときにdeno addなどのコマンドを実行した際もdeno.lockが更新されるように改善されています。


.npmrcサポート

deno installdeno add.npmrcの設定が適用されない問題が修正されています。


Node.js互換性の改善

Next.jsやPlaywright, Vitestのサポートの改善などが実施されています。

(Windows) スレッドプールサイズの増加

Windowsでnext buildを実行すると、利用可能なCPUコア数によってはプロセスがハングしてしまう問題を解消するため、Denoの内部で利用されているスレッドプールのサイズが調整されています。


サードパーティーレジストリの取り扱いの改善

AWS CodeArtifactなどのサードパーティーレジストリのサポートのため、npmレジストリからscoped packageを要求する際にURLが適切にエンコードされるよう挙動が改善されています。


node:child_process

VitestやPlaywrightサポートの改善に向けて、IPCの使用時に意図せずWouldBlockBrokenPipeエラーが起きることのある問題が修正されています。

node:fs

readlink()のエラーハンドリングが改善され、ERROR_NOT_A_REPARSE_POINTの発生時にEINVALが返されるように修正されています。Windowsでnext buildが失敗する問題を解消することが目的のようです (#26179)

また、WindowsにおいてERROR_INVALID_NAMEEINVALではなくENOENTへマッピングされるよう修正されています (#26475)

node:util

styleTextformat引数で配列がサポートされました。


node:tls

connect()から返却されたTLSSocketに対してalpnProtocolプロパティが設定されるように改善されています。


FFI

u64/i64の取り扱いの変更

u64/i64型がNumberではなくbigintとして返却されるように挙動が変更されています。


Deno v2.1向けの変更について

まだマージはされていませんが、直近でDeno v2.1向けと思われる機能の開発が進められているため、いくつか紹介します。(⚠️ここで紹介している機能についてはまだマージはされていないため、今後、使い方などに変更が発生する可能性もあります)

deno task - タスクの依存関係の定義について

まだDraft状態ですが、deno taskで各タスク間の依存関係を定義できるようにする対応が進められているようです:

現状ではwireitを参考に、各タスク間の依存関係を定義できるようにする想定のようです:

{
  "tasks": {
    "check": {
      "command": "deno check mod.ts",
      "dependencies": ["lint:fmt", "lint:dlint"]
    },
    "lint:fmt": "deno fmt --check",
    "lint:dlint": "deno lint"
  }
}

deno compileでのV8コードキャッシュのサポート

deno compileV8コードキャッシュのサポートを追加するPRが作成されています:

deno compileで作成された実行可能ファイルの初回実行時に/tmpへコードキャッシュを保存し、その実行可能ファイルの2回目以降の実行時に読み込むことで、バイナリーの起動速度の高速化が図られるようです。

もしこのコードキャッシュの生成と読み込みを無効化したい場合、deno compile--no-code-cacheを指定する必要があるようです。

複数の.envファイルのサポート

--env-fileで複数の.envファイルを読み込めるようにする対応が進められています:

.envファイル間で環境変数の衝突が見つかった場合、後で指定されたファイルの値が優先される想定のようです。

$ deno run --env-file=".env.default" --env-file=".env.development" main.ts

@deno/nextjs-start

@deno/nextjs-startというJSRパッケージが公開されています:

内部的にはnext/dist/cli/next-start.jsが利用されているようで、このパッケージをDeno Deployのエントリポイントとして指定することで、next startを実行した際と同様にDeno Deploy上でNext.jsの本番サーバーを起動できるようです。

deno_stdのリリース

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

@std/async@1.0.7

@std/async@1.0.7がリリースされています。

@std/async/unstable-throttle

新規APIとしてthrottleが実装されています。基本的にlodashのthrottle()と同様の機能を提供してくれるようです。

@std/collections@1.0.9

@std/collections@1.0.9がリリースされています。

@std/collections/unstable-sliding-windows

slidingWindowsIterableのサポートが追加されています。

@std/expect@1.0.6

@std/expect@1.0.6がリリースされています。

expect.objectContainingが実装されています。

@std/text@1.0.8

@std/text@1.0.8がリリースされています。

@std/text/unstable-slugify

slugifyoptions引数(SlugifyOptions)が追加されています。transliterateオプションが提供されており、any-asciiなどのパッケージとの併用が想定されているようです。