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

2024/12/30〜2025/01/05の最新情報

直近のDenoの変更について まだマージされているわけではないのですが、いくつか面白そうなPRが作成されているため紹介します。 Geometry Interfaces Module Level 1 の実装について まだDraft状態ではありますが、DenoにGeometry Interfaces Module Level 1を実装するPRが作成されています: feat(ext/geometry): Geometry Interfaces Module Level 1 #27527 DOMPointやDOMQuad, DOMMatrixなどのAPIが実装されているようです。 Geometry interfaces OpenTelemetryサポートにおける@deno/otelの不要化について 今まで、DenoのOpenTelemetryサポートを利用してシグナルを送信するためには、Deno公式から公開されている@deno/otelパッケージの使用が想定されていました。 DenoのOpenTelemetryサポートを利用するに当たって、この@deno/otelの使用を不要とする対応が進められているようです: feat(unstable): no config npm:@opentelemetry/api integration #27541 このPRの対応が入ると、セットアップの手間が若干軽減されそうです。 deno_stdの今後の安定化に関する計画 deno_stdにおけるパッケージやunstableモジュールについての今後の計画が公開されています: Next STD Stabilization Iteration Plan #6299 @std/iniパッケージや@std/uuidにおけるUUIDv7サポートの安定化などが検討されているようです。 lint.deno.landからdocs.deno.comへの移行について 以前に紹介したdeno lintのLintルールに関するドキュメントのlint.deno.landからdocs.deno.comへの移行が正式に実施されたようです: chore: replace lint.deno.land with /lint/ page #1289 今後はhttps://docs.deno.com/lint/からドキュメントを参照することが推奨されそうです。

January 5, 2025

2024/12/23〜2024/12/29の最新情報

permission sets in deno.json まだDraft状態ですが、deno.jsonでパーミッションを管理する機能を追加するPRが作成されています: permission sets in deno.json #27483 このPRではdeno.jsonにpermissionSetsという項目が追加されており、複数のパーミッションセットを定義できるようです: { "permissionSets": { "default": { "read": ["data"], "net": ["http://localhost:3000/api"] }, "build": { "read": ["data"], "write": ["dist"] } } } Denoを実行する際に--permission-setオプションを指定することで、deno.jsonで定義されたパーミッションセットを適用する想定のようです: # デフォルトでは`default`という名前がついたパーミッションセットが適用されるようです $ deno run --permission-set main.ts # buildという名前がついたパーミッションセットを有効化します $ deno run --permission-set=build scripts/build.ts deno lint - JavaScriptプラグインでのセレクターのサポートについて deno lintのJavaScriptプラグインにセレクターの仕組みを実装するPRがマージされています: feat(unstable): support selectors in JS lint plugins #27452 サポートされている構文については上記のPRに詳しく記載されていますが、以下のように柔軟にノードの問い合わせを行うことができるようです:...

December 29, 2024

2024/12/16〜2024/12/22の最新情報

QUICとWebTransport APIのサポートについて QUICのサポート DenoのmainブランチにQUICを実装するPRがマージされています。Deno v2.2あたりでリリースされる可能性がありそうです: feat(unstable): Implement QUIC #21942 quinnをベースに以下のAPIが実装されており、利用には--unstable-netの指定が必要なようです: Deno.connectQuic Deno.listenQuic Deno.QuicBidirectionalStream (Deno.QuicConn#createBidirectionalStreamで作成できます) Deno.QuicConn (Deno.connectQuicなどから返却されます) Deno.QuicListener (Deno.listenQuicから返却されます) Deno.QuicReceiveStream (Deno.QuicConn.incomingUnidirectionalStreamsで取得できます) Deno.QuicSendStream (Deno.QuicConn#createUnidirectionalStreamで作成できます) WebTransport APIのサポート まだマージはされていませんが、先程のQUICサポートをベースにWebTransport APIを実装するPRも作成されています: feat(unstable): WebTransport #27431 このPRではWebTransport APIに加えてDeno.upgradeWebTransportというWebTransportサーバーを立てるための独自のAPIも実装されているようです。引数にDeno.QuicConnを渡すことで、WebTransportオブジェクトを返却してくれます。 WebTransport APIについてもQUICと同様に、利用するには--unstable-netの指定が必要なようです。 deno lint - JavaScriptプラグインを実行するための内部APIが追加 以前に紹介したdeno lintでのプラグインサポートの件についてですが、ひとまずDeno[Deno.internal].runLintPluginという内部的なAPIの実装(今のところdeno testコマンドの実行時以外では参照できないよう制御されています)がmainブランチへマージされています。 feat(unstable): add JS linting plugin infrastructure #27416 このPRではまだCLIオプションなどは実装されていないためまだ一般的に利用できる状況ではなさそうですが、JavaScriptプラグインに関するテストコードが追加されており、今後、プラグインを書く際などの参考になりそうです。 deno_stdのリリース deno_stdのリリースが行われています: release-2024.12.18 release-2024.12.20 @std/cli@1.0.9 @std/cli@1.0.9がリリースされています。 promptMultipleSelectが追加 以前に追加されたpromptSelect()に続いて、promptMultipleSelect() (@std/cli/unstable-prompt-multiple-select)というAPIが追加されています。promptMultipleSelect()は選択肢から複数の値を選択できます。 @std/fs@1.0.7 & @std/fs@1.0.8 @std/fs@1....

December 22, 2024

2024/12/09〜2024/12/15の最新情報

Deno v2.1.4 Deno v2.1.4がリリースされています。 Node.js互換性の改善 deno install --entrypointの挙動の改善と--unstable-npm-lazy-cachingの導入 今までDenoはnpmパッケージに依存したスクリプトを実行する際に、package.jsonで指定されたパッケージをすべてインストールしていました。 このリリースではdeno install --entrypointの挙動が変更され、指定したエントリポイントから依存されているnpmパッケージのみがキャッシュされるよう改善されています。 他のコマンドでもdeno install --entrypointと同様の振る舞いをさせたい場合は、--unstable-npm-lazy-cachingまたはDENO_UNSTABLE_NPM_LAZY_CACHINGを指定することで有効化できます。 feat(unstable): support caching npm dependencies only as they’re needed #27300 パスに@が含まれるモジュールを提供するパッケージの取り扱いの改善 npmパッケージからファイル名に@が含まれるモジュールをimportしようとするとエラーが発生する問題が修正されています。 fix: do not error when specifier subpath has an @ symbol #27290 node:fs readFile()でファイルディスクリプターの指定がサポートされています。 fix(ext/node): accept file descriptor in fs.readFile(Sync) #27252 node:v8 serialize()とdeserialize()でFloat16Arrayがサポートされています。 fix(ext/node): handle Float16Array in node:v8 module #27285 _http_common @mswjs/interceptorsなどのNode....

December 15, 2024

2024/12/02〜2024/12/08の最新情報

Deno v2.1.3 Deno v2.1.3がリリースされています。 deno task --recursiveオプション v2.1.0で追加された--recursiveオプションが動作していなかった問題が修正されています (--filter *を指定した場合と同様に動作します) # ワークスペース内の各パッケージで定義されたtestタスクを実行します $ deno task --recursive test fix(task): --recursive option not working #27183 (Unix環境向け) 子プロセスへのシグナルの転送がサポート Unix環境において、deno taskのプロセス向けに送信されたシグナルがタスクで起動された子プロセスへ転送されるよう挙動が改善されています。 fix(task): forward signals to spawned sub-processes on unix #27141 (Windows向け) 子プロセスの自動停止 Windowsにおいてdeno taskのプロセスを停止させた際に、deno taskによって起動された子プロセスも停止されるよう改善されています。 fix(task): kill descendants when killing task process on Windows #27163 タスクの依存関係が定義されている際の引数の取り扱いの変更 deno taskに追加の引数が渡された場合、その引数がルートのタスクにのみ渡されるよう修正されています (dependenciesで指定された子タスクには渡されません) # 例) a b cはbuildタスクにのみ渡され、dependenciesで指定された子タスクには渡されません $ deno task build a b c fix(task): only pass args to root task #27213 deno fmt HTMLファイルのフォーマットの安定性が改善 <script>タグを持つHTMLファイルに対するdeno fmtの安定性が改善されています。...

December 8, 2024

2024/11/25〜2024/12/01の最新情報

Deno v2.1.2 Deno v2.1.2がリリースされています。 WASMモジュール .wasmモジュールから提供される関数以外の要素の読み込みがサポートされています。 fix: support non-function exports in Wasm modules #26992 TypeScript deno checkコマンドでJSDocの@importタグがサポート .jsファイルにおける@importタグによる型チェックがサポートされています。 fix(check): support jsdoc @import tag #26991 resolution-mode属性のサポート TypeScriptのresolution-mode属性のサポートが追加されています。 fix(node): correct resolution of dynamic import of esm from cjs #27071 deno fmt --check - .sqlファイルに対してエラーが発生する問題の修正 .sqlファイルに対してdeno fmt --checkを実行すると、常にエラーが発生する問題が修正されています。 fix(fmt): Return None if sql fmt result is the same #27014 deno init --npm scopedパッケージのサポート deno init --npmでscopedパッケージがサポートされています (例: deno init --npm @foo/barを実行すると、@foo/create-barパッケージが実行されます)...

December 1, 2024

2022/12/19〜2022/12/25の最新情報

今週はDenoでリリースが行われていないため、直近の話題や変更などについて紹介いたします。 Flash(Deno.serve)の書き換えについて 現在、Flash(Deno.serve)の書き換えが検討されているようです。 Flashで報告されている様々な問題の解決などが目的のようです。 以下のissueで解決予定の問題が列挙されています。 Flash HTTP server rewrite - umbrella issue (denoland/deno#17146) Deno.coreの削除について 現在、Denoの内部APIであるDeno.coreの削除が検討されているようです。 refactor: remove Deno.core (denoland/deno#16881) ひとまずはDeno.coreはDeno[Deno.internal].coreへ移動される予定のようで、deno_stdではすでに対応が実施されています。 refactor: handle Deno[Deno.internal].core (denoland/deno_std#3029) ただし、将来的にはDeno[Deno.internal].core自体も削除が予定されているようなので、もしDeno.coreを使用されている場合は、今のうちに対応をしておくとよいかもしれません。 deno_lintへのguard-for-inルールの追加 deno_lintでguard-for-inルールが実装されているようです。 feat: Add guard-for-in rule (denoland/deno_lint#1105) 次のDenoのリリースあたりでdeno lintコマンドから利用できるようになる可能性がありそうです。

December 25, 2022

2021/09/27〜2021/10/03の最新情報

DenoのNode.js互換モードについて denoland/deno#12295のissueで、DenoにNode.jsの互換モードを提供することが提案されています。 Denoを実行する際に--compatオプションを指定すると、Node.jsの組み込みモジュールの読み込みが有効化されるように提案されています。 $ deno run --compat main.mjs こちらの機能の実装はdenoland/deno#12293のPRにて進行中です。 今のところ、Import mapsとdeno_std/nodeを併用することで、Node.jsの組み込みモジュールを読み込めるように実装されているようです。 https://github.com/denoland/deno/issues/12295 https://github.com/denoland/deno/pull/12293 Deno v1.14.2 Deno v1.14.2がリリースされました。 このリリースはバグ修正やパフォーマンスの最適化などがメインです。 主な変更点: deno fmtやdeno testで.mkd, .mkdn, .mdwn, .mdown, 及び.markdownの拡張子のファイルがサポートされました 一度取り消しされたパーミッションが再び許可されないように修正されました Deno.HttpConnがすでに閉じられている場合にrespondWithを呼ぶと、プロセスがパニックする問題が修正されました 祖先のワーカーが閉じられたときまたは終了したときに、合わせて子孫のワーカーも閉じるまたは終了するように修正されました 祖先のワーカーが終了したもののその子孫に生きているワーカーが存在する場合、プロセスがパニックする問題が修正されました WindowsでDeno.killがサポートされました Request/Response/Eventオブジェクトの生成、Headersオブジェクトの内部実装、パーミッションチェックなどが最適化されました https://github.com/denoland/deno/releases/tag/v1.14.2 deno_std v0.109.0 deno_std v0.109.0がリリースされました 変更点: node: stream/webの部分的なサポートが追加されました node/events: EventEmitter.callを呼べない問題が修正されました node/module: .mjsファイルをrequireできないように修正されました https://github.com/denoland/deno_std/releases/tag/0.109.0 lint.deno.landがDeno Deployへ移行 deno_lintの公式サイトであるlint.deno.landがDeno Deployへ移行されました。 それに合わせて、内部実装がdext.ts+Tailwind CSSからFresh+Twindへ移行されています。 DenoやDeno Deployなどでフロントエンド開発を行う際に参考になるかもしれないため、興味のある方はソースコードも見てみるとよいかもしれません。 https://github.com/denoland/deno_lint/pull/905

October 3, 2021