2024/11/11〜2024/11/17の最新情報

Denoの直近の変更について 先週は特にDenoのリリースは行われていないため、直近でDenoのmainブランチにマージされている変更についていくつか紹介します。 deno task - オブジェクト形式でのタスクの定義がサポート deno.jsonでのタスクの定義においてオブジェクト形式がサポートされています。(おそらくdeno taskにおける依存関係の定義のサポートに向けた対応と思われます) { "tasks": { "test": { "command": "deno test --allow-read=. --doc", "description": "Run tests" } } } descriptionフィールドで指定した内容は、引数なしでdeno taskコマンドを実行した際のコメントとして表示されます: $ deno task Available tasks: - test // Run tests deno test --allow-read=. --doc このdescriptionフィールドの追加に伴い、引数なしでdeno taskコマンドを実行した際のdeno.jsoncで各タスクに記述されたコメントを認識してくれる機能が廃止されています: { "tasks": { // このコメントは引数なしでdeno taskを実行した際に表示されません "test": "deno test --allow-read=. --doc" } } feat(task): support object notation, remove support for JSDocs #26886 --unstable-detect-cjsの安定化 --unstable-detect-cjsが安定化されています。--unstable-detect-cjsを指定しなくても、package....

November 17, 2024

2024/11/04〜2024/11/10の最新情報

Deno v2.0.5 Deno v2.0.5がリリースされています。 Workspaces メンバーのワイルドカード形式での指定がサポート ワークスペースのメンバーの指定でワイルドカード形式がサポートされています: { "workspace": [ "./packages/*" ] } fix(workspace): support wildcard packages #26568 deno add/deno install package.jsonを更新する際の振る舞いの変更 Deno v2.0.0-rc.2では、package.jsonが存在する状態でdeno add/deno installによってnpmパッケージを追加しようとした場合、deno.jsonではなく常にpackage.jsonが更新されるよう挙動が変更されました。 Deno v2.0.5ではこの挙動が微調整され、deno.jsonとpackage.jsonの両方が検出された場合、package.jsonの配置場所がdeno.jsonよりも現在のパスに近いときだけpackage.jsonにnpmパッケージ(npm:)が追加されるよう変更されています。 fix(add): only add npm deps to package.json if it’s at least as close as deno.json #26683 deno fmt YAMLでのdeno-fmt-ignore-fileディレクティブのサポート # deno-fmt-ignore-fileから始まるYAMLファイルはdeno fmtコマンドによるフォーマット対象から除外されるように挙動が変更されています。 fix(fmt): ignore file directive for YAML files #26717 deno coverage コメントの集計対象からの除外 コメントの行がdeno coverageコマンドによる集計対象から除外されるよう振る舞いが改善されています。...

November 10, 2024

2024/10/28〜2024/11/03の最新情報

Deno v2.0.4 Deno v2.0.4がリリースされています。 deno lsp typescript.preferences.preferTypeOnlyAutoImports deno lspの設定項目としてtypescript.preferences.preferTypeOnlyAutoImportsがサポートされています。このオプションにtrueを設定すると、TypeScriptの型がAuto importされる際にimport typeが挿入されるようです。 このオプションに合わせて、以前に導入されたAuto importに関する振る舞いがデフォルトで無効化されているため、以前の振る舞いに戻したい場合は、typescript.preferences.preferTypeOnlyAutoImportsにtrueを設定する必要があります。 feat(lsp): “typescript.preferences.preferTypeOnlyAutoImports” setting #26546 (Windows) deno upgradeでのdeno lspの自動停止 Winodwsでdeno upgradeを実行した際に、実行中のdeno lspを自動で停止する機能が導入されています。 fix(upgrade): stop running deno lsp processes on windows before attempting to replace executable #26542 deno compile リダイレクトに関する取り扱いの修正 リダイレクトが発生するサードパーティモジュール(例: https://deno.land/std/http/mod.tsなど)に依存している場合、deno compileで生成した実行可能ファイルでエラーが発生する問題が修正されています。 fix(compile): regression handling redirects #26586 deno check compilerOptions.jsxImportSourceに関する修正 ソースコード中でJSXが使用されていない場合、compilerOptions.jsxImportSourceが解決されないよう挙動が改善されています。 fix(check): ignore resolving jsxImportSource when jsx is not used in graph #26548 deno add/deno install \r\nの取り扱いの修正 deno....

November 3, 2024

2024/10/21〜2024/10/27の最新情報

Deno v2.0.3 Deno v2.0.3がリリースされました。 deno lsp Interactive Inlay Hints for Types Interactive Inlay Hints for Typesが実装されています。Inlay Hintsの内容をクリックすることで、その定義元へジャンプできるようです。 feat(lsp): interactive inlay hints #26382 import-map-remap quickfix type imports (import type)に対してもimport-map-remap quickfixが利用できるよう改善されています。 fix(lsp): import-map-remap quickfix for type imports #26454 deno compile Node-APIのサポート deno compileで生成されたバイナリでNode-APIがサポートされています。 feat: support node-api in denort #26389 deno check --frozenのサポート deno checkコマンドで--frozenオプションの指定がサポートされています。 fix(check): support --frozen on deno check #26479 deno fmt --extの挙動の変更 deno fmtに--extオプションを指定した際に、引数でのファイルの指定が必須に変更されています。...

October 27, 2024

2024/10/14〜2024/10/20の最新情報

Deno v2.0.1/v2.0.2 Denoのv2.0.1とv2.0.2がリリースされています: v2.0.1 v2.0.2 Node.js互換性の改善 CommonJSサポートの改善やWrangler/SvelteKit/Next.jsなどに関するサポートの改善が行われています。 --unstable-detect-cjs --unstable-detect-cjsという新しいオプションが追加されています (deno.jsonで"unstable": ["detect-cjs"]を指定して有効化することも可能です) このオプションを指定すると、package.jsonで"type": commonjsが指定されたパッケージの.jsファイルが.cjsファイル(CommonJS形式)として認識されます。 feat(unstable): --unstable-detect-cjs for respecting explicit "type": "commonjs" #26149 node:net: Socket#setNoDelayが実装 新規APIとしてSocket#setNoDelayが実装されました。 このAPIによってnode-postgresなどのパフォーマンスの改善が期待されるようです。 fix(ext/node): implement TCP.setNoDelay #26263 node:child_process: fork()での--no-warningsのサポート fork()のexecArgvオプションでNode.jsの--no-warningsがサポートされています (Denoの--quietオプションにマッピングされます) Wranglerを動作させるための対応のようです。 fix(child_process): map node --no-warnings flag to --quiet #26288 node:dns: lookup()の互換性の改善 lookup()でlocalhostを解決する際の振る舞いがNode.jsと一致するよう挙動が改善されています。 fix(ext/node): fix dns.lookup result ordering #26264 node:process (Windows) 未サポートのシグナルの取り扱いの変更 Windowsにおいて未サポートのシグナルに対して警告を発するのではなく、単純に無視されるように振る舞いが変更されています。パッケージによっては多くの警告が出てしまうこともあったようです。 fix: don’t warn on ignored signals on windows #26332 process....

October 20, 2024

2024/10/07〜2024/10/13の最新情報

Deno v2がリリース Deno v2が正式にリリースされました。公式ブログとYoutubeでアナウンスが行われています: https://deno.com/blog/v2.0 https://www.youtube.com/watch?v=d35SlRgVxT8 新しい発表について 大きな点として、LTSリリースチャネルが発表されています。Deno v2.1からLTSチャネル向けにリリースから6ヶ月間の間は、重要度の高いバグ修正などがバックポートされ続ける想定のようです。 また、Webサイトだけ先に公開されていたDeno for Enterpriseについても正式に発表されました。 周辺ライブラリでの対応 Oakではすでに対応が行われており、v17.1.0にてすでにDeno v2サポートがリリースされています: Release v17.1.0 Honoについてもまだリリースはされていなさそうですが、早速、Deno v2の対応が入れられています (ci: use Deno v2 #3506) 各種パッケージマネージャーを抽象化してくれるni.zshでも、Deno v2のリリースに合わせて、Denoのサポートが導入されたようです (v1.3.0) deno_stdのリリース deno_stdがリリースされています。 @std/cbor 新規パッケージとして@std/cborが追加されています。CBORの実装が提供されます。 @std/collections@1.0.8 @std/collections@1.0.8がリリースされています。 Iterableのサポート @std/collections@1.0.7に続けて、以下のAPIでもIterableオブジェクトのサポートが追加されています: takeLastWhile (@std/collections/unstable-take-last-while) dropWhile (@std/collections/unstable-drop-while) intersect (@std/collections/unstable-intersect) dropLastWhile (@std/collections/unstable-drop-last-while) @std/async@1.0.6 @std/async@1.0.6がリリースされています。 @std/async/unstable-mux-async-iteratorが追加 @std/async/unstable-mux-async-iteratorではMuxAsyncIteratorが提供されており、振る舞いとしては既存の@std/async/mux-async-iteratorにおける同名APIと同じですが、コンストラクタ引数に複数のAsyncIterableを可変長引数として渡すことができる点が異なります。 @std/streams@1.0.7 @std/streams@1.0.7がリリースされています。 @std/streams/unstable-to-byte-stream toByteStream (@std/streams/unstable-to-byte-stream)が追加されています。ReadableStream<Uint8Array>をreadable byte streamへ変換してくれます。 @std/io@0.225.0 @std/io@0.225.0がリリースされています。 非推奨APIの削除 非推奨化された以下のAPIが削除されています。APIによっては@std/streamsに対応するものがあるため、そちらへの移行が推奨されます。 削除対象 移行先 補足 StringReader Buffer....

October 13, 2024

2024/09/30〜2024/10/06の最新情報

The Final Touches: What’s New In v2.0.0-rc.10 後述するDeno v2.0.0-rc.10に関する記事がDeno公式ブログで公開されています: The Final Touches: What’s New In v2.0.0-rc.10 上記の記事によると、Deno v2の正式リリースについては今週に予定されているようです。 Deno Deploy NextGen Deno公式からDeno Deploy NextGenが公開されています: Deno Deploy NextGen これはKubernetesクラスター上でユーザーがDeno Deployのインフラストラクチャーを実行するための基盤のようで、現時点だとAWSとAzureがサポートされているようです。 Deno v2.0.0-rc.8/v2.0.0-rc.9/v2.0.0-rc.10がリリース Denoのv2.0.0-rc.8〜v2.0.0-rc.10がリリースされています: v2.0.0-rc.7からv2.0.0-rc.8までの差分 v2.0.0-rc.8からv2.0.0-rc.9までの差分 v2.0.0-rc.9からv2.0.0-rc.10までの差分 破壊的変更 URLPattern#execの振る舞いの変更 Deno v1.46.0で導入され、 Deno v1.46.1で取り消されたURLPattern#execの振る舞いの変更が改めて実施されました。 URLPattern#execでパターンにマッチするグループがない場合にgroups[key]にundefinedが設定されるように振る舞いが変わります。 Revert “fix(urlpattern): fallback to empty string for undefined group values” #25961 $DENO_DIR/depsが$DENO_DIR/remoteへリネーム リモートからダウンロードされた依存関係のグローバルキャッシュとして利用される$DENO_DIR/depsディレクトリが$DENO_DIR/remoteへリネームされました。 DENO_DIRの操作を行うツールやライブラリなどを除いて、基本的にはこの変更による影響は特にないはずです。 BREAKING: rename “deps” remote cache folder to “remote” #25969 deno lsp npm:@types/*を追加するQuick fixのサポート 自前で型定義を持たないnpmパッケージに対して// @deno-types=\"npm:@types/*"を追加するQuick fixが実装されています。(Add @deno-types directive for \"<package>\")...

October 6, 2024

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

Deno v2.0.0-rc.5/v2.0.0-rc.6/v2.0.0-rc.7がリリース Denoのv2.0.0rc.5〜v2.0.0 rc.7がリリースされています: v2.0.0-rc.4からv2.0.0-rc.5までの差分 v2.0.0-rc.5からv2.0.0-rc.6までの差分 v2.0.0-rc.6からv2.0.0-rc.7までの差分 --allow-importの導入 --allow-importという新しいパーミッションフラグが導入されています (短縮形式は-I) Deno v2からリモートモジュールの読み込みを許可するホストに制限がかかるようです。必要に応じて--allow-importにリモートモジュールの読み込みを許可するホストを指定する必要があります。 ただし、デフォルトで以下のホストからのモジュールのimportが許可されるようなので、基本的なケースにおいては今まで通り利用できると思われます: deno.land jsr.io esm.sh raw.githubusercontent.com 例えば、unpkg.comからモジュールをimportしようとすると、上記のいずれのホストにも当てはまらないため、権限が要求されます: import ky from "https://unpkg.com/ky@1.7.2"; const res = await ky.get("https://api.github.com/repos/uki00a/deno-weekly").json(); この場合、以下のように権限が求められます: $ deno run --allow-net main.js ┏ ⚠️ Deno requests import access to "unpkg.com:443". ┠─ Requested by `import()` API. ┠─ Learn more at: https://docs.deno.com/go/--allow-import ┠─ Run again with --allow-import to bypass this prompt. ┗ Allow? [y/n/A] (y = yes, allow; n = no, deny; A = allow all import permissions) > --allow-importによってunpkg....

September 29, 2024

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

Deno 2.0 Release Candidate Denoの公式ブログでDeno v2.0.0のRCバージョンについての解説記事が公開されています。 Deno 2.0 Release Candidate 今までリリースされたv2.0.0のRCバージョンで行われた変更点について解説されています。 Deno v2.0.0-rc.3/v2.0.0-rc.4 Deno v2.0.0-rc.3とv2.0.0-rc.4がリリースされています。 v2.0.0-rc.2からv2.0.0-rc.3までのコミット v2.0.0-rc.3からv2.0.0-rc.4までのコミット 破壊的変更 deno add deno addでJSRパッケージを追加する場合にjsr:プレフィックスの指定が必須になりました: $ deno add @david/dax error: @david/dax is missing a prefix. Did you mean `deno add jsr:@david/dax`? feat: require jsr prefix for deno install and deno add #25698 deno cache deno cacheコマンドを--helpに表示しないようにする対応が行われています。 今後はdeno cacheではなくdeno install --entrypointの使用が推奨されるようです。 feat: suggest deno install --entrypoint instead of deno cache #25228 deno run Deno v1....

September 22, 2024

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

Deno v2.0.0-rc.2 Deno v2.0.0-rc.2がリリースされています。 どの変更内容がv2.0.0-rc.2に入っているかは不明なため、Deno v2.0.0-rc.1からの差分を参考に直近の変更内容についてまとめます (差分) 破壊的変更 Deno.errors.NotCapableの導入 Deno.errors.NotCapableという新しいエラーが追加されています。 今までは、OSによる権限エラーとDenoによる権限エラー(--allow-*の指定漏れ)の両方がDeno.errors.PermissionDeniedによって表現されていました。 これからはOSによる権限エラーはDeno.errors.PermissionDenied、Denoによる権限エラーはDeno.errors.NotCapableによって表現されます。 feat(cli): use NotCapable error for permission errors #25431 deno.json deno.jsonから下記フィールドが削除されています: lint.files fmt.files test.files bench.files 今後はlint.excludeやfmt.includeなどへの移行が推奨されます。 --unstableの削除 すべてのunstable APIを有効化する--unstableオプションが削除されています。 今後は--unstable-*やdeno.jsonのunstableフィールドへの移行が推奨されます。 非推奨化されていたDeno APIの削除 非推奨化されていた以下のAPIが削除されています (移行先についてはDeno 1.x to 2.x Migration Guideで解説されています): Deno.serveHttp関連の型定義 Deno.Buffer Deno.FsFile.prototype.constructor (Deno.FsFileの直接のインスタンス生成が禁止されます) 下記のridプロパティに関する型定義 Deno.stdin Deno.stdout Deno.stderr 下記オブジェクトのridプロパティ Deno.TlsConn Deno.Conn Deno.TcpConn Deno.UnixConn Deno.Listener Deno.FsFile Deno.fdatasync(Sync) Deno.Reader(Sync) Deno.Writer(Sync) Deno....

September 15, 2024