OpenTelemetryサポートの安定化について DenoのOpenTelemetryサポートを安定化するPRが作成されています: feat(otel): Stabilize OpenTelemetry support #29822 今後は--unstable-otelの指定は不要化され、OTEL_DENOなどの指定のみで利用できそうです。 このPRは2.4.0のマイルストーンに含まれており、Deno v2.4でのリリースが検討されているようです。 deno publishでのnpmパッケージの公開について deno publishでnpmパッケージの公開をサポートするため、--npmオプションを追加するPRが作成されています: feat(publish): allow publishing to npm #29823 現状ではまだ実装途中の段階のようですが、今のところdeno runコマンド経由でnpm (npm:npm@11.4.2) を実行することでnpmパッケージを公開できるようにすることが想定されているようです (cli/tools/publish/npm.rs#L15) このPRについては2.4.0のマイルストーンに含まれていないため、リリースは少し先になるかもしれません。 Freshにおけるesbuild_deno_loaderから@deno/esbuild-pluginへの移行について Freshでは長らくesbuild_deno_loaderというesbuildプラグインが使用されていました。Freshにおいてこのesbuild_deno_loaderから先週に紹介した@deno/esbuild-pluginへ移行が行われています: fix(core): move to new esbuild deno plugin #3034 まだリリースは行われていないものの、この変更によって、Deno本体とFreshにおけるモジュール解決の振る舞いの互換性がより改善されそうです。 Hono v4.8.0 Hono v4.8.0がリリースされています。 hono/routeが追加 hono/route (Route Helper)という新しいモジュールが追加されており、Contextオブジェクトを引数に渡すことでクライアントから要求されたパスなどの情報を取得することが可能です。 hono/ssg - プラグインシステムが実装 hono/ssgにおいてプラグインシステムが実装されています。 toSSG()に追加されたpluginsオプションでプラグインを指定可能で、フックを実装することによってページの生成に関する振る舞いのカスタマイズなどができるようです。 各種ミドルウェアの改善 各種ミドルウェアで様々な改善が実施されています: ミドルウェア 変更内容 hono/jwt Authorization以外のヘッダーがサポート (headerNameオプション) hono/cors allowMethodsオプションで関数の指定がサポート hono/jsx/streaming <StreamingContext>が追加 (<script>へのnonce属性の設定がサポート) hono/jwk allow_anonオプションが追加 (trueを指定すると、有効なトークンが見つからない場合でも次のミドルウェアーが実行されます) hono/cache cacheableStatusCodesオプションが追加, キャッシュ対象のステータスコードを指定できます (デフォルトは200のみ) Hono#fireの非推奨化 代わりにhono/service-workerのfire()への移行が推奨されています。...
2025/06/09〜2025/06/15の最新情報
Deno v2.3.6 Deno v2.3.6がリリースされています。 deno.json - patchからlinksへのリネーム deno.jsonのpatchがlinksへリネームされています (#29677, #29714) deno.jsonのpatchは元々、JSRパッケージやnpmパッケージにパッチを適用するために導入された機能で、今回のlinksへのリネームに伴い、特に利用法などに変更はないようです。 patchについてはまだサポートされているようですが、将来的に削除される予定のようです。 esbuildベースのdeno bundleコマンド esbuildをベースにdeno bundleコマンドが再実装されました (#29470, #29706, #29651, #29683, #29680) $ cat main.js import pc from "npm:picocolors@1.1.1"; console.info(pc.green("foo")); $ deno bundle --output bundle.js main.js ⚠️ deno bundle is experimental and subject to changes bundled in 28ms $ deno run --allow-env bundle.js foo 今後、Freshとの統合も検討されているようです: https://x.com/rough__sea/status/1933244186104639839 deno deploy 以前に紹介したdeno deployサブコマンドがリリースされています。Deno Deploy Early Accessに関連した変更だと思われます。 利用するためにはDENO_DEPLOY_SUBCOMMAND環境変数によって明示的に有効化する必要があるようです。 $ DENO_DEPLOY_SUBCOMMAND=1 deno deploy --help Usage: deno deploy [OPTIONS] [args]....
2025/06/02〜2025/06/08の最新情報
直近のDenoの変更について 直近でDeno v2.4向けと思われる変更がいくつか実施されているため、紹介します。 --node-conditionsオプションのサポート Denoに--unstable-node-conditionsオプションを追加するPRがマージされています。 feat: stabilize –node-conditions flag #29628 これはNode.jsの--conditionsに相当するオプションで、react-server conditionを有効化したい場合などに利用できそうです: $ deno run --unstable-node-conditions react-server -A main.mjs このオプションはv2.4で安定化が計画されているようで、すでにドキュメントも公開されています: feat: stabilize –node-conditions flag (denoland/deno#29628) add docs for –unstable-node-conditions (denoland/docs#1800) --preload/--importオプション まだマージはされていませんが、Denoに--preload (--import) オプションを追加するPRが作成されています: feat: add support for –preload/–import flag #29626 これはNode.jsの--requireや--importに相当するオプションのようで、エントリーポイントとして指定したモジュールの実行前に読み込みたいモジュールを指定できます。 $ deno run --import @std/dotenv/load main.mjs esbuildベースのdeno bundleコマンド 先週に紹介したesbuildベースのdeno bundleコマンドがマージされています。後述の@deno/rolldown-pluginなども含め、Denoから利用できるバンドラーの選択肢が増えそうです。 @deno/rolldown-plugin Deno公式からRolldownプラグインが公開されています: JSRパッケージ: @deno/rolldown-plugin リポジトリ: denoland/deno-rolldown-plugin @deno/loader Deno公式から@deno/loaderというパッケージが公開されています: JSRパッケージ: @deno/loader リポジトリ: denoland/deno-js-loader 各種バンドラーなど向けに、Denoの内部でも使用されているdeno_graphや各種モジュール解決の仕組みなどをベースに、Denoと同様の振る舞いに基づいて specifier や依存解決などの機能を提供することが目的のパッケージのようです。先程の@deno/rolldown-pluginを実装するために利用されています。
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)...
2025/05/19〜2025/05/25の最新情報
Reports of Deno’s Demise Have Been Greatly Exaggerated Denoの公式ブログで以下のような記事が公開されています: Reports of Deno’s Demise Have Been Greatly Exaggerated この記事では、先週の Fresh v2 に関する紹介に続けて、現在のDeno DeployやDeno KVにおいての直近での取り組みや今後について紹介されています。具体的には以下のような取り組みなどが進められているようです: 特定のリージョンへのアプリケーションの固定のサポート 自身のクラウド内でのアプリケーション実行のサポート (推測ではありますが、Deno Deploy NextGenのことを指している可能性が高いのではないかと思います) Deno Deployから関係データベースの利用をよりシンプルにするための取り組み Cloudflare Durable Objectsに影響を受けた状態管理のための仕組み これらについては、今後、詳細が共有される計画のようです。 deno deployサブコマンドについて まだマージはされていませんが、Deno本体にdeno deployサブコマンドを実装するPRが作成されています: feat: deploy subcommand (denoland/deno#29407) 内部的には@deno/deployパッケージを実行している模様で、プロジェクト内の各ファイルをDeno Deployにアップロードする機能などが提供されているようです。 先程紹介したDeno公式の Reports of Deno’s Demise Have Been Greatly Exaggerated の記事において、Denoは単純なJavaScriptランタイムではなくプラットフォームであることを意識されているようで、この変更もその一環ではないかと思われます。 参考 1461910 jsr:@deno/deploy@0.0.2 Deno SvelteKit adapter (@deno/svelte-adapter) Deno公式からSvelteKit向けのアダプター (@deno/svelte-adapter) が公開されています:...
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が必要となるケースがあるため挙動が変更されたようです。...
2025/05/05〜2025/05/11の最新情報
Lume v3 Lume v3がリリースされています。 https://lume.land/blog/posts/lume-3/ https://github.com/lumeland/lume/releases/tag/v3.0.0 いくつか破壊的変更が実施されており、マイグレーションガイドが公開されています。 Site#addの追加とプラグインの振る舞いの変更 Site#copyにおいてコピー対象のファイルが Processor で処理されない問題を改善するため、Site#addが追加されています。このAPIの追加に合わせて、Site#loadAssetsとSite#copyRemainingFilesが削除されています (Site#copyもv3.0.0で削除されていましたが、v3.0.1で改めて追加され直されています) Site#addの追加に合わせてプラグインの振る舞いが変更されており、各プラグイン自身はファイルの読み込みは行わず、Site#addで明示的に追加されたファイルのみを処理するよう挙動が変更されているようです。 また、一部のプラグインにおいて、正しい順番でプラグインを登録しないと動作しないよう挙動が変更されています。今まで、プラグインの登録順に関わらず各プラグインが動作するよう設計されていましたが、複数のプラグイン間に依存関係がある場合、この挙動は混乱を招いてしまうということで振る舞いが見直されたようです。この変更に関する移行を補助するため、deno lint向けのプラグインが追加されています (lume/lint.ts) jsxプラグインの刷新とjsx_preact/liquidプラグインの削除 jsxプラグインがReactからSSXベースへ移行されています。LumeにおいてReactの一部機能はサポートされておらず、混乱を招いてしまうことなどが背景のようです。この移行により、パフォーマンスの改善や非同期コンポーネントのサポートなどが実現されるようです。 jsxプラグインの変更に合わせて、jsx_preactプラグインが削除されています。 また、liquidプラグインも削除されています。LumeでサポートされているNunjucksに文法が近いことや関数が実行できないことなどが背景のようです。 esbuildプラグインの改善 esbuildプラグインにおいてesbuild_deno_loaderが使用されるように変更されています。Deno本体との挙動の互換性が改善されそうです。 dnt v0.42.0 dnt v0.42.0がリリースされています。 Workspaceのサポートが行われ, これに合わせてdeno.jsonも自動で検出されるように改善されています (#462) また、build()にcompilerOptions.experimentalDecoratorsオプションが追加されています (#442)。この変更の影響で、legacy decoratorsを有効化したい場合はこのオプションに明示的にtrueを設定する必要があるようです。
2025/04/28〜2025/05/04の最新情報
Deno v2.3.0 Deno v2.3.0がリリースされました。 以下のページに変更内容をまとめているため、よろしければ参照ください: Deno v2.3 Deno v2.3.1 Deno v2.3.1がリリースされています。 このリリースではDeno v2.3.0において誤ったバージョンが表示されてしまう問題が修正されています。 deno_stdでBunを使用してパッケージのテストコードを実行する仕組みが導入 deno_stdでBunを使用してパッケージのテストコードを実行する仕組みが導入されています: chore: run some test cases in bun in CI #6635 この仕組みによってテストされているパッケージ (_tools/node_test_runner/run_test.mjs) については、Bunでも安定して利用ができる可能性が高そうです。
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....
2025/04/21〜2025/04/27の最新情報
Deno v2.2.12 Deno v2.2.12がリリースされています。 Windowsにおけるdeno compileのバグ修正 Deno v2.2.11におけるWindows環境で発生するdeno compileの問題が修正されています。deno compileによって生成した実行可能ファイルがエラーが出ずに実行が終了する問題の修正 (#28986)や、リソースの読み込みに失敗してしまう問題への一時的な対策 (#29005, #29039)などが実施されています。 後述するv2.2.3のRCバージョンにもこれらの変更は取り込まれています。 Deno v2.3について リリース時期について deno.newsにて、Deno v2.3のリリースについて言及されています: Deno v2.3 is almost here まもなくリリース予定のようです。直近でv2.3向けと思われる機能がいくつか追加されているため、紹介します。 Deno.connectでのAbortSignalのサポート Deno.connectにsignalオプションが追加されています (#27113) AbortSignalを指定することで、接続をキャンセルすることができます。現状ではTCP接続のキャンセルのみがサポートされています。 TypeScript v5.8 Deno本体に搭載されたTypeScriptをv5.7からv5.8へアップデートする対応が実施されています: feat: TypeScript 5.8 #29041 このPRはすでにマージされており、Deno v2.3で正式に導入される可能性が高そうです。 DENO_EMIT_CACHE_MODE環境変数 DenoにおいてDENO_EMIT_CACHE_MODEという環境変数をサポートするPRがマージされています: feat(cache): add DENO_EMIT_CACHE_MODE #29025 この環境変数にdisableという値を指定しておくと、DenoがTypeScriptからJavaScriptへトランスパイルした結果のファイルシステムへのキャッシュが無効化されるようです。 Deno v2.3.0-rc.1〜rc.3 Deno v2.3.0のrc.1, rc.2, 及びrc.3がリリースされています: v2.3.0-rc.0〜rc.1 v2.3.0-rc.1〜rc.2 v2.3.0-rc.2〜rc.3 deno lsp 診断 (diagnostics) リダイレクトに関する診断 (The import of \"${from}\" was redirected to \"${to}\"....