Deno v2.8.3
Deno v2.8.3がリリースされています。
deno compile
deno compileに--exclude-unused-npmオプションが追加されています (#34741)。実行可能ファイルの作成時にアプリケーションにおいてimportされていないnpmパッケージを実行可能ファイルから除外してくれるようです。Deno v2.8.2で実装されたdeno compile --bundleと同様に、実行可能ファイルのサイズの削減が期待されそうです。
また、deno compileで--watchがサポートされています (#34860)
deno x
deno xコマンドに--ignore-scriptsオプションが追加されています (#34952)。このオプションに引数を指定しない場合、すべてのnpmパッケージのライフサイクルスクリプトが無効化されます。引数が指定された場合、指定されたnpmパッケージに対してのみライフサイクルスクリプトの実行が無効化されます。
deno lsp
以下の改善が実施されています:
Deno.test()に対するDebugcode lens がサポートされています (#34742)textDocument/codeAction:Deno.test()に対するignore/onlyオプションのトグルがサポートされています (#34861)deno.jsonのimportMapで指定されたImport mapファイルに対する診断がサポートされています (#34864)- LSPが
deno doc --lint及びdeno publish --dry-run相当の診断を実施してくれるように改善されています。JSRパッケージ中の各エントリーポイントにおける公開APIのJSDocコメントや型定義について検査してくれます (#34733, #34740)
deno test --doc
deno test --docがコードブロック中のshebangを解釈してくれるように改善されています。shebangで指定されたパーミッションフラグに基づいてDeno.test()のpermissionsオプションが自動で設定されます (#35052)
deno fmt
json.trailingCommasオプションが追加されています (#33383)
{
"fmt": {
"json.trailingCommas": "jsonc"
}
}
deno add
deno addやdeno updateなどの各種依存関係管理用のコマンドで--env-fileオプションがサポートされています (#34843)。.envでDENO_AUTH_TOKENSが定義されているようなケースなどが想定されています。
また、パッケージインストール時のバージョンの範囲指定がサポートされています (#34799)
$ deno add 'jsr:@david/dax@>=0.48.0'
deno outdated/deno update
catalog/catalogsで定義されたパッケージを認識してくれるように改善されています (#34977)
deno bump-version
deno bump-versionコマンドに--configオプションが追加されています (#34770)。package.jsonとdeno.jsonが併用されたプロジェクトにおいて--config package.jsonを指定することにより、deno.jsonではなくpackage.jsonのversionを更新したいケースでの使用が想定されています。
deno bundle
deno bundleコマンドで--checkオプションがサポートされています (#33514)。型チェックを実施してからバンドルしてくれます。
deno clean
--exceptの指定なしでのdeno clean --dry-runの実行がサポートされています (#34846)
$ deno clean --dry-run
Removed /path/to/.deno (2737 files, 98.07MB)
Aborting due to --dry-run flag
deno publish
deno publishコマンドでwith { type: "text" }を含むパッケージがサポートされています (#34692)
deno jupyter
Jupyterカーネルにおいて受信したメッセージのHMAC署名が検証されるように改善されています (#34825)
links
deno.jsonのlinksにおいてglobがサポートされています (#34849)。パターンに基づいて複数のローカルパッケージを一括で指定できます。
パーミッション
--deny-readまたは--deny-writeに指定されたパスよりも祖先のパスに対する読み書きが拒否されてしまう問題が修正されています (#34504)
Deno.stat()などのAPIで/procなどの特殊ファイルを読もうとすると、--allow-readしか要求されない問題が修正されています (#34393)
また、Workerにdeno.permissionsオプションが設定されている場合、そのWorker内で静的に読み込み先モジュールを特定できないtext/bytesファイルに対するimport()を使用している場合、deno.permissionsオプションではなく親のパーミッションがWorkerに適用されてしまう問題が修正されています (#34707)
ワークスペース
ワークスペース中のpackage.jsonを持つメンバーにて定義されたライフサイクルスクリプトが実行されるように改善されています (#34615)
Deno API
Deno.serve()
HTTP/1.1向けの実装におけるhyperへの依存が削除されています (#34446, #35049)。これによりパフォーマンス改善などが期待されるようです。
FFI
FFI 関連のAPIでUint8Array<ArrayBufferLike>型の値がサポートされています (#34999)
Deno.listen()/Deno.listenDatagram()
Deno.listen()及びDeno.listenDatagram()においてportまたはpath (transport: "unixpacket") の省略がサポートされています (#31681)。portが省略された場合は0がデフォルトで使用されます。pathが省略された場合は送信専用のソケットが作成されます。
Stream
Deno.stdin.readableなどの特定リソースに紐づくReadableStreamをキャンセルした際に、 読み込みが適切にキャンセルされるように改善されています (#34986)
また、Deno.Conn.writableなどの特定リソースに紐づくWritableStreamへ任意のArrayBufferまたはArrayBufferViewの書き込みがサポートされています (#35020)
Web API
BroadcastChannel
BroadcastChannel間でのSharedArrayBufferのやり取りがサポートされています (#34961)
Fetch API
Requestコンストラクターでpriorityオプションがサポートされています (#34716)
Web Crypto API
WICG/webcrypto-modern-algosに関連して下記の改善が実施されています:
SubtleCrypto.supports()が実装されています (#34903)ML-DSA-44/ML-DSA-65/ML-DSA-87:SubtleCrypto#importKey()及びSubtleCrypto#exportKey()においてJWK形式がサポートされています(#34914)getPublicKey()メソッドがCryptoKeyからSubtleCryptoへ移動しています (#34913)ChaCha20-Poly1305:importKey()/exportKey()におけるrawフォーマットが廃止され、代わりにraw-secretフォーマットがサポートされています。また、encrypt()/decrypt()のnonceパラメーターが削除され、代わりにivが追加されています (#34915)ML-KEM-512/ML-KEM-768/ML-KEM-1024:SubtleCrypto#importKey()及びSubtleCrypto#exportKey()においてraw-seed及びjwk形式がサポートされています (#34924)ML-DSA-44/ML-DSA-65/ML-DSA-87におけるraw-privateフォーマットでのSubtleCrypto#importKey()/SubtleCrypto#exportKey()及びSHAKE128/SHAKE256のサポートが削除されています (cSHAKE128/cSHAKE256にて代替可能なため) (#34941)raw-publicフォーマットがrawのエイリアスとして機能するように改善されています (#34920)
OpenTelemetry
node:http2が計装されています。 (#34510)
また下記環境変数がサポートされています:
- Span
- Sampling
Node.js互換性の改善
node:http
NODE_USE_ENV_PROXYなどのプロキシー関連の環境変数が--allow-envなしで読み込まれるように挙動が修正されています (#34807)
また、DENO_UNSTABLE_CONTROL_SOCKのサポートが追加されています (#34949)
node:test
mock.property()が実装されています (#34959)
node:url
fileURLToPathBuffer()が実装されています (#34883)
node:child_process
spawnSync()のmaxBufferオプションがサポートされています (#34053)
node:net
Socket#setKeepAlive()が実装されています(#34865)
NODE_OPTIONS
DenoがNODE_OPTIONSに指定された--inspect関連のオプションを認識してくれるように改善されています (#34717)
Denoの直近の開発について
まだマージはされていませんが、直近でいくつか面白そうなPRが作成されているため、紹介いたします。
"jsxImportSource": "deno-jsx:preact"
まだマージされていませんが、設定なしでJSXを動作させるための機能を導入するPRが作成されています:
現時点においては、ユーザーがjsxImportSourceを設定していない場合に限り、jsxImportSourceのデフォルト値としてdeno-jsx:preactが設定されます。deno-jsx:preactが設定されている場合、Deno本体に組み込まれたPreactベースの内部モジュールを使用することで機能が実現される想定のようです。
本機能については2.9.0のマイルストーンに含まれています。
Deno.McpServer & Deno.S3Client
Draft状態のため、マージされるかどうかはまだわかりませんが、Deno.McpServer及びDeno.S3Clientを実装するPRが作成されています:
- feat(unstable):
Deno.McpServerAPI for writing MCP servers #35178 - feat(unstable): Deno.S3Client and Deno.s3 #35180
Deno.McpServerはMCPサーバーを実装するためのAPIで利用するためには--unstable-mcpの指定が必要な想定のようです。
もう一方のDeno.S3ClientはS3互換のオブジェクトストレージ向けのクライアントで、利用するためには--unstable-s3の指定が必要なようです。
denoland/orchid
ここ最近、Deno本体の開発で使用されていると思われるorchidというツールのリポジトリが公開されています:
GitHubのIssueごとにAIエージェントのオーケストレーションをしてくれるツールのようです。