Deno v2.8

はじめに Deno v2.8がリリースされました。 この記事では主な変更点などについて紹介します。 グローバルAPIに関する破壊的変更 タイマーAPI globalThis.setTimeout()やglobalThis.setInterval()などのタイマーAPIにおいて、Web標準ではなくNode.jsベースの実装が使用されるように変更されています (#33249) これにより、これらのAPIからはnumber型ではなくnode:timersモジュールのTimeoutやImmediateなどのオブジェクトが返却されます。 また、この変更に伴い、TypeScriptで自動的にlib: ["node"]が設定されるように変更されています (#33823) URLSearchParams globalThis.URLSearchParamsがNode.js互換となるように修正されています (#34119) 軽微ですが、コンストラクター引数としてnullやundefinedを渡した際の振る舞いが若干異なるようです。 deno add/deno install npm:プレフィックスの指定の省略がサポート deno addの引数に指定したパッケージでnpm:及びjsr:が省略された場合、デフォルトでnpm:が指定されたものとみなすよう挙動が変更されています (#33246, #34290) # 下記は`deno add npm:zod`と同様に振る舞います $ deno add zod --prod/--skip-types deno installコマンドに--prod/--skip-typesオプションが追加されています (#33248) --prodオプションを指定すると、package.jsonのdevDependenciesに指定されたパッケージのインストールがスキップされます。 --skip-typesオプションは--prodとの併用が想定されており、指定されるとpackage.json及びdeno.jsonで指定された@types/*パッケージのインストールがスキップされます。 --package-json deno add/deno install/deno remove/deno uninstallコマンドに--package-jsonオプションが追加されています (#33199) package.jsonとdeno.jsonが併用されたプロジェクトにおいてこれらのコマンドを実行するとデフォルトではdeno.jsonが更新されます。--package-jsonオプションを指定することで、更新対象のファイルをdeno.jsonからpackage.jsonに変更できます。 --os/--arch --os及び--archオプションが追加されています (#32785) Denoはデフォルトで現在のプラットフォームに基づいてnpmパッケージのoptionalDependenciesにおける適切なプラットフォーム向けの依存関係のみをダウンロードしますが、--os及び--archを使用することでこの挙動を変更し、指定されたOS/アーキテクチャー向けの依存関係のダウンロードを行わせることが可能です。 --archと既存のDENO_INSTALL_ARCH環境変数を併用した場合、--archが優先されます。 deno test OpsサニタイザーとResourcesサニタイザーがデフォルトで無効化 OpsサニタイザーとResourcesサニタイザーをデフォルトで無効化する変更が実施されています (#33250) これらを有効化するために、下記いずれかの手段が提供されています。 1. Deno.test Deno.test()の下記オプションをtrueに設定することで、該当テストケースでサニタイザーを有効化できます: sanitizeOps sanitizeResources また、テストファイル内でDeno.test.sanitizer()を実行することで、該当のテストファイル内のすべてのテストケースでサニタイザーを有効化できます。 Deno.test.sanitizer({ ops: true, resources: true, }); Deno....

May 24, 2026

2026/02/09〜2026/02/15の最新情報

Deno v2.6.9 Deno v2.6.9がリリースされています。 deno doc Markdownファイルのプレビューがサポートされています (#32024) $ deno doc README.md deno docコマンドに--agentsオプションの追加 (#31987) が検討されており、それに向けた対応であると思われます。 --agentsオプションの追加についてはまだマージはされていませんが、すでにPRも作成されています (#32044) deno upgrade --checksumが追加されています (#31804)。ダウンロードされたアーカイブが改ざんされていないか検査できます。 $ deno upgrade --checksum 8a677a4b0cea1a25aaecfc70d6c6a288f9ad69af0a92e9e9d513cabaaf3c688f チェックサムはGitHub Releaseページの Assets として配置してあります。 deno compile npm:をエントリーポイントに指定した場合、デフォルトで/tmp/deno_nm/yyyy-mm-ddディレクトリにnode_modulesを作成し、そこに依存パッケージをインストールしてコンパイルするよう挙動が修正されています (#32084) node:worker_threads 下記APIが実装されています: threadName (#32072) Worker#cpuUsage() (#32050) BroadcastChannel#ref() & BroadcastChannel#unref() (#32036) Worker#[Symbol.asyncDispose]() (#32051) また、MessageChannelの一方のMessagePortがcloseされたら、もう一方のMessagePortでもcloseイベントが発火されるよう改善されています (#32092) node:sqlite DatabaseSync#setAuthorizer()が実装されています (#32009) node:child_process ChildProcessのstdin/stdout/stderrにReadable/Writableではなく Socket (node:net) インスタンスが設定されるよう改善されています (#31975, #32071) また、シグナルによってプロセスが停止した場合は ChildProcess.exitCodeがnullに設定されるよう挙動が修正されています (#32081) node:zlib ZstdCompress/ZstdDecompressが実装されています (#32025) node:tty isatty()に0, 1, または2以外の値が渡された際も適切に動作するよう実装が改善されています (#31912)...

February 15, 2026

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を設定する必要があるようです。

May 11, 2025

2023/10/09〜2023/10/15の最新情報

fresh v1.5 fresh v1.5がリリースされました。 以下に内容をまとめたため、よろしければそちらを参照いただければと思います。 fresh v1.5 Deno v1.37.2 Deno v1.37.2がリリースされました。 Deno.serve Deno.serveでUnixドメインソケットがサポートされています。(unstable) Deno.serveのpathオプションを指定することで有効化されます。 また、Deno.serveから返却されるDeno.Serverがthenableオブジェクトではなくなりました。 これにより、async関数から直接Deno.Serverをreturnできなかった問題が解消されたようです。 TransformStreamでキャンセルがサポート (cancelオプションの追加) readableがキャンセルされたタイミング または writableが中断されたタイミングでcancelオプションに指定された関数が呼ばれるようです。 TransformStream cleanup using “Transformer.cancel” (whatwg/streams#1283) deno jupyter deno.land/x/displayのDeno本体への追加 deno.land/x/displayがDeno本体に取り込まれたようです。 これにより、以下のAPIが追加されています。 Deno.jupyter.display Deno.jupyter.md Deno.jupyter.html Deno.jupyter.svg Deno.jupyter.format Deno.jupyter.broadcast Deno.jupyter.broadcastに以下のオプションが追加されています。 metadataオプション buffersオプション (バイナリデータを送信したい場合に使用できます) Deno.testのサポート deno replやdeno jupyterでDeno.testがサポートされています。 $ deno repl Deno 1.37.2 exit using ctrl+d, ctrl+c, or close() > Deno.test(function ok() {}); ok ....

October 15, 2023