2025/05/26〜2025/06/01の最新情報

Deno v2.3.4 & v2.3.5 Denoのv2.3.4とv2.3.5がリリースされています。 CLI --unstable-subdomain-wildcardsが追加 --unstable-subdomain-wildcardsオプションが追加されています (#29327) --allow-netにおいてサブドメインに対するワイルドカード指定が有効化されます: $ deno run --unstable-subdomain-wildcards --allow-net='*.github.com' main.mjs DENO_UNSTABLE_SUBDOMAIN_WILDCARDS環境変数によって有効化することも可能です。 DENO_USR2_MEMORY_TRIM環境変数の導入 DENO_USR2_MEMORY_TRIMという環境変数が導入されています (#29295) この環境変数が設定された場合、SIGUSR2シグナルが受信された際に、Denoがmalloc_trim(0)でヒープの開放を行ってくれます。この環境変数はLinuxでのみ利用可能です。おそらく、後述するDeno Deploy Early Accessに関連した変更ではないかと思われます。 --frozenオプションの拡充 deno uninstallやdeno docなどの一部コマンドで--frozenオプションがサポートされていなかった問題が修正されています (#29508) Web API globalThis.performanceの取り扱いの変更 ユーザーコードとnpmパッケージとの間でglobalThis.performanceが同一のオブジェクトが共有されるよう挙動が変更されています (#29323) 今までは、ユーザーコードとnpmパッケージ中のコードにおいてglobalThis.performanceが異なるオブジェクトを参照していました。具体的には、ユーザーコードではWeb Performance APIsにおけるPerformanceオブジェクト、npmパッケージ中のコードではnode:perf_hooksモジュールのPerformanceオブジェクトがそれぞれ参照されていました。 今回のリリースに伴い、ユーザーコードとnpmパッケージ中のコードの両方がglobalThis.performanceによってnode:perf_hooksモジュールのPerformanceオブジェクトを参照するよう挙動が変更されています。 WebGPU Deno.UnsafeWindowSurfaceにresize()というメソッドが実装されています (#29254) このメソッドはウィンドウのサイズが変更された際に呼ばれることが想定されています。 また、GPUQueue#onSubmittedWorkDoneが実装されています (#29255) deno lsp deno/testRunの改善 deno lspから実行したテストが失敗した際に、Deno.test()の行ではなく実際にエラーが発生した行にエラーが表示されるよう改善されています (#29221) プロジェクト外のdeno.jsonの参照がサポート .vscode/settings.jsonのdeno.configにおいて、プロジェクト外のdeno.jsonの指定がサポートされています (#29420) Auto importの改善 Workspaceメンバーに対する相対パス形式ではなく bare specifier によってimportが追加されるよう改善されています (#29304) また、deno.jsonのpatchで指定されたjsrパッケージに対して、相対パス形式でimportが追加される問題が修正されています (#29437) deno task - タスクのワイルドカード指定に関するバグ修正 deno task check:*のようにワイルドカード形式でタスクを指定した場合、先頭一致ではなく部分一致によってタスクが探索されてしまう問題が修正されています (#29343)...

June 1, 2025

2025/05/12〜2025/05/18の最新情報

Deno v2.3.2 & v2.3.3 Deno v2.3.2とDeno v2.3.3がリリースされています。 https://github.com/denoland/deno/blob/395878c5fb72d87a44f7c88ce9f391acc31feab3/Releases.md#233--20250516 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が必要となるケースがあるため挙動が変更されたようです。...

May 18, 2025

Deno v2.3

はじめに Deno v2.3がリリースされました。 この記事では主な変更点などについて解説します。 v2.3のRCバージョンでの変更内容に関しては以下を参照いただければと思います: Deno v2.3.0-rc.1〜rc.3 また、Deno v2.3に関する公式ブログではすでに実装されていたnpmパッケージへのパッチ機能やvsockのサポートなどについても正式にアナウンスされています。 deno.lock v5 deno.lockのv5 ("version": "5")がデフォルトで有効化されました。 今後、deno.lockが新しく作成される際はv5がデフォルトで有効化されます。 deno add --npmと--jsrオプションがサポート deno addとdeno installコマンドで--npmと--jsrオプションがサポートされています (#28666) 複数のJSRまたはnpmパッケージをまとめて追加する際の記述を若干簡略化できます: # `jsr:@std/uuid`と`jsr:@std/ulid`を追加 $ deno add --jsr @std/uuid @std/ulid # `npm:koa`を追加 $ deno add --npm koa # `--jsr`オプションを指定した状態でnpmパッケージをインストールする場合、`npm:`を明示する必要があります $ deno add --jsr @std/uuid @std/ulid npm:koa deno check 引数なしでのdeno checkがサポート deno checkを引数なしで実行した際に、deno check .と同等の振る舞いをするよう改善されています (#28655) tsconfig.jsonの自動検出 deno.jsonもしくはpackage.jsonがある際は、tsconfig.jsonが自動で検出されるよう改善されています (#29092) deno.jsonでcompilerOptionsが定義されている際はこの検出機能は無効化されます。 compilerOptions.erasableSyntaxOnlyのサポート 後述するTypeScript v5.8へのアップデートに合わせて、compilerOptions.erasableSyntaxOnlyがサポートされています (#29097) deno compile FFIとNode....

May 4, 2025

2025/03/31〜2025/04/06の最新情報

Deno v2.2.7 Deno v2.2.7がリリースされています。 panic.deno.com Denoのプロセスがパニックした際に、panic.deno.comというサイトへのリンクが表示されるよう改善されています (#28470) エラーメッセージ中のリンクから詳細なスタックトレースを閲覧できるようです。 panic.deno.comのソースコードは以下にあります: https://github.com/denoland/panic OpenTelemetry V8 JS Engine Runtime metrics のサポート V8 JS Engine Runtime metricsのサポートが実施されています (#28592) OTEL_DENOまたはOTEL_DENO_METRICSによってMetricsが有効化されていれば、自動でヒープやGCなどに関する各指標が収集されます。 Node.js互換性の改善 npmライフサイクルスクリプト Denoにおいてnpmのライフサイクルスクリプトは、Node.jsのCLIフラグの有無などに応じてNode.jsまたはDenoのいずれかを使用して実行されます。 このリリースではnpmのライフサイクルスクリプトの実行において、より多くの場面でDenoが使用されるよう変更されています (#28715) これに合わせて、Denoでnpmライフサイクルスクリプトを実行する際に追加で以下のオプションが適用されるよう変更されています: --unstable-bare-node-builtins --unstable-detect-cjs --unstable-node-globals --unstable-sloppy-imports --unstable-unsafe-proto node:dns dns.lookup()の互換性が改善されています (#27936) node:netのconnect()においてホスト名を指定した場合、今まではDNSサーバーと解決したいホスト名の両方を--allow-netで許可する必要があったものの、この変更に合わせて解決したいホスト名の指定だけで動作するよう改善されているようです。 node:sqlite 空のBLOBがnullではなく空のUint8Arrayとして返却されるよう修正されています (#28674) node:process process.cpuUsage()でpreviousValue引数がサポートされています (#28550) deno lsp vscodeにおいて、deno lspでsettings.json (User settings)をフォーマットできるよう改善されています (#28706) その他 Error.isError Error.isErrorの型定義が追加されています (#28679) WebGPU 以下のAPIに関して変更が行われています (#28650) isFallbackAdapterプロパティーがGPUAdapterからGPUAdapterInfoへ移動 GPUSupportedLimits 各プロパティーがreadonlyに変更 maxBindGroupsPlusVertexBuffersとmaxInterStageShaderVariablesプロパティーが追加 Deno v2....

April 6, 2025

2025/03/17〜2025/03/23の最新情報

Deno v2.2.5 Deno v2.2.5がリリースされています。 npmパッケージに対するパッチが実験的にサポート ⚠️Deno v2.3がリリースされるまでは、この機能の利用には"unstable": ["npm-patch"]の指定が必要なようです。今後、破壊的変更が加わる可能性もありそうです。 deno.jsonのpatchフィールドによるnpmパッケージへのパッチがサポートされています (#28512) この機能を利用するためにはnode_modulesが必要なため"nodeModulesDir": "manual"や"nodeModulesDir": "auto"などとの併用が必要なようです。 使い方はjsrパッケージにおけるパッチと同様で、patchフィールドにpackage.jsonを持つディレクトリへのパスを指定することで、該当のpackage.jsonの"name"フィールドの値に一致するパッケージがpatchフィールドで指定されたディレクトリの内容へ置き換えられます: { "nodeModulesDir": "auto", "patch": ["./path/to/patched-npm-package"], "unstable": ["npm-patch"] } このnpmパッケージのパッチ機能はnodeModulesDirの設定値によって振る舞いが若干変わるようです: nodeModulesDir 振る舞い "manual" パッチの内容を変更するたびにdeno installの実行が要求されるようです "auto" スクリプト実行のたびにnode_modulesが作り直されるため、起動時間が少し伸びるようです OpenTelemetry Span Eventsのサポート Span Eventsの基本的なサポートが実施されています (#28552) これによって、Span#addEventが利用できるようです。 意図せぬTypeErrorの修正 OpenTelemetryサポートを利用する際にTypeErrorが発生することがある問題が修正されています (#28538) Node.js互換性の改善 node:sqlite Denoのパーミッションシステムとの兼ね合いを考慮して、ATTACH DATABASEの使用が無効化されました (#28513) また、StatementSync#runから返却されるchangesフィールドに誤った値が設定される問題が修正されています (#28506) node:util getCallSites()が実装されています (#28546) その他 Deno本体のV8が135へアップデートされています (#28562) また、Error.stackTraceLimitの型定義が追加されています (#28539)...

March 23, 2025

2025/03/10〜2025/03/16の最新情報

Deno v2.2.4 Deno v2.2.4がリリースされています。 OpenTelemetry Context propagationのサポート Context propagationがサポートされています (#28460) OTEL_PROPAGATORS環境変数にカンマ区切りでPropagatorを設定可能です (デフォルト値はtracecontext,baggage) 現時点ではtracecontextとbaggageのみがサポートされているようです。 その他の改善 node:httpのrequest()が計装されています (#28463) また、fetch()で発生したエラーが適切に取り扱われるよう改善されています (#28480) deno check - package.jsonに基づいた型定義の解決に関する改善 package.jsonに関する以下のサポートが追加されています: "exports"フィールドにおけるtypes@{selector}形式 (#28450) typesVersionsフィールド (#28468) deno install プライベートなnpmパッケージに関する改善 ワークスペースのメンバーにプライベートなnpmパッケージが指定されている場合に、deno installが失敗しないように改善されています (#28401) file:のサポート package.jsonのdependenciesにおいてfile:形式での依存の指定がサポートされています (#28396) deno lint - プラグインシステムに関するバグの修正 プラグインシステムに関する以下のバグが修正されています: !==が!=として解釈されていた問題が修正されています (#28403) ({ a = b } = {}のようなコードがDeno.lint.ObjectPatternとDeno.lint.AssignmentPatternの組み合わせで表現されるよう改善されています (#28402) Node.js互換性の改善 CommonJSサポートの改善 CommonJSモジュールからESM形式のモジュールの再exportがサポートされています (#28379) module.exports = require("./index.mjs"); また、deno compileでrequire(esm)が動いてなかった問題も修正されているようです。 node:http STATUS_CODESがNode.jsと同様の形式に修正されています (#28489) その他 FORCE_COLOR環境変数のサポート FORCE_COLOR環境変数がサポートされています (#28490)...

March 16, 2025

2025/03/03〜2025/03/09の最新情報

Deno v2.2.3 Deno v2.2.3がリリースされています。 deno lint プラグインシステムにおけるセレクターの改善 セレクターにおいて、以下のように特定のプロパティを保持するノードのみの問い合わせがサポートされています (#28324) const plugin: Deno.lint.Plugin = { name: "sample-plugin", rules: { "some-rule": { create: (ctx) => { const visitor = { ".callee": (node) => { // `.callee`を保持するNodeのみを問い合わせる }, }; return visitor; }, }, }, }; また、セレクターの構文における:has()/:is()/:where()/:not()や属性に対する正規表現によるマッチング (例: MemberExpression[property.name=/Object/])がサポートされています (#28348, #28340) これらの機能の追加に合わせて、公式ドキュメントも改善されています (https://github.com/denoland/docs/pull/1508) プラグイン実行時のパーミッションの取り扱いの変更 プラグインの実行時に--no-promptが有効化されるよう挙動が変更されています (#28305) deno lspとdeno lintでJavaScriptプラグインを実行する際の方式を統一することを目的とした変更のようです。 現状、deno lintにおいては--allow-readなどのパーミッションフラグを指定する方法はありませんが、要望はすでに挙げられているようです:...

March 9, 2025

Deno v2.2

Deno v2.2がリリースされました。 この記事では主な変更点などについて解説します。 deno lint JavaScriptプラグインシステムの導入 deno lintのJavaScriptプラグインシステムが正式に導入されました。 プラグインを適用する際は、deno.jsonのlint.pluginsで有効化できます。 注意点として、JavaScriptプラグインを有効化している際はdeno lintのインクリメンタルキャッシュの仕組みが無効化されるようです (#28026) インクリメンタルキャッシュについては今後の対応が検討されているようです。 コミュニティーからいくつかプラグインがJSRに公開されています: https://github.com/NfNitLoop/deno-lints https://github.com/uki00a/deno-lint-plugin-extra-rules React/JSX関連のルールの追加 deno_lintで実装されていたReactやJSX関連のlintルールがDeno本体で有効化されました。 $ deno lint --rules --json | jq '.rules | map(select(.tags | (contains(["jsx"]) or contains(["react"])))) | .[].code' "jsx-boolean-value" "jsx-button-has-type" "jsx-curly-braces" "jsx-key" "jsx-no-children-prop" "jsx-no-comment-text-nodes" "jsx-no-duplicate-props" "jsx-no-unescaped-entities" "jsx-no-useless-fragment" "jsx-props-no-spread-multi" "jsx-void-dom-elements-no-children" "react-no-danger" "react-no-danger-with-children" "react-rules-of-hooks" 新しく追加されたこれらのルールにはjsxもしくはreactタグが付与されています。React関連のルールはrecommendedタグがついていなさそうなので、必要に応じてdeno.jsonのlint.rules.tagsなどで有効化するとよさそうです: { "lint": { "rules": { "tags": ["fresh", "react", "recommended"] } } } --rulesの挙動の変更 deno lint --rulesの挙動が変更されています。...

February 23, 2025

2025/01/27〜2025/02/02の最新情報

Deno v2.1.8/v2.1.9 Deno v2.1.8とv2.1.9がリリースされています。 OpenTelemetry HTTPSエンドポイントのサポート HTTPSエンドポイントへのSignalsの送信がサポートされています (#27743) 以下の環境変数によって設定が可能です: OTEL_EXPORTER_OTLP_CERTIFICATE OTEL_EXPORTER_OTLP_CLIENT_KEY OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE deno check ワークスペースの各メンバーでのcompilerOptionsのサポート ワークスペースの各メンバーのdeno.jsonにおけるcompilerOptionsの定義がサポートされています (#27785) 今まではワークスペースのルートでしかcompilerOptionsを定義できませんでしたが、今後は各メンバーごとに柔軟に型チェックなどに関する振る舞いを設定できそうです。 npmパッケージに含まれる.tsファイルの取り扱いの改善 型チェックにおけるnpmパッケージ中の.tsファイルの取り扱いが改善されています (#27853) deno checkの実行時に限定して、型チェック時に.d.tsが見つからない際は追加で.tsファイルも探索してくれるようです。 deno install -gが指定され かつ deno.jsonが検出された際の警告について deno install -gの実行時にdeno.jsonが検出され かつ--configオプションが指定されていない場合に以下の警告が表示されるよう改善されています (#27745) Warning discovered config file will be ignored in the installed command. Use the --config flag if you wish to include it. deno lsp Ambient modulesに関する修正 Ambient modulesに対するimportでエラーが発生しないように修正されています (#27855) SvelteKitなどを使用したプロジェクトを想定した修正のようです。 deno publish .d.tsに関する改善 jsrパッケージのモジュール内でsloppy importsが使用されており かつ 対応する....

February 2, 2025

2025/01/06〜2025/01/12の最新情報

Deno v2.1.5 Deno v2.1.5がリリースされています。 QUICサポート QUICのサポートがリリースされました。 feat(unstable): Implement QUIC #21942 Deno.connectQuic()などのAPIが実装されています (利用するには--unstable-netの指定が必要です) deno lint - JavaScriptプラグイン向けの内部的な基盤の追加 deno lintにおけるプラグインシステムの内部APIであるDeno[Deno.internal].runLintPluginやセレクターの仕組みなどの実装がリリースされています。 deno.jsonにおけるlint.pluginsオプションの実装はリリースされていないため、まだ一般的な利用はできない状態です。 OpenTelemetry @deno/otelの不要化 OpenTelemetryサポートを利用するに当たり、@deno/otelの使用が不要化されています。 OTEL_DENO=trueと--unstable-otelさえ指定されていれば@opentelemetry/apiとの連携ができます。DenoがあらかじめglobalThis[Symbol.for("opentelemetry.js.api.1")]にTracerProviderなどを登録してくれるため、@opentelemetry/apiとの連携が自動で行われるようです。 まだ、Denoの公式ドキュメントにもOpenTelemetryサポートに関するドキュメントが追加されています (Add docs for OpenTelemetry in Deno (denoland/docs#1305)) feat(unstable): add OTEL MeterProvider #27240 feat(unstable): replace SpanExporter with TracerProvider #27473 feat(unstable): no config npm:@opentelemetry/api integration #27541 WASMモジュール jsrパッケージにおけるサポートの改善 jsrパッケージ内に含まれる.wasmモジュールが読み込めるよう改善されています。 fix(jsr): Wasm imports fail to load #27594 deno check モジュールが見つからなかった際のエラー形式の変更 モジュールが見つからなかった際のエラーメッセージがTypeScriptのdiagnosticsとして報告されるよう改善が行われています (#27533)...

January 12, 2025