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/02〜2024/09/08の最新情報

Deno v2.0.0-rc.1 Deno v2.0.0-rc.1がリリースされています。 どの変更内容がv2.0.0-rc.1に入っているかは不明なため、Deno v2.0.0-rc.0からの差分を参考に直近の変更内容についてまとめます (差分) deno lint jsr関連のlintルールの実行について deno.jsonでnameとexportsが定義されていればjsr関連のlintルールが実行されるように挙動が変更されています (今まではnameとexportsに加えてversionの3つのフィールドが定義されている必要がありました) fix(lint): support linting jsr pkg without version field #25230 deno lsp HTML/CSS/Yamlファイルのフォーマット deno lspでHTML/CSS/Yamlファイルのフォーマットがサポートされています。 feat(lsp): html/css/yaml file formatting #25353 deno add パッケージのサブパスの指定がサポート # 例: 以下の場合、`@std/dotenv`が追加されます $ deno add @std/dotenv/load feat(add): strip package subpath when adding a package #25419 deno install --entrypointがサポート このオプションが指定された場合、指定されたファイルの依存関係がダウンロードされます (deno cacheと同じように振る舞います) $ deno install --entrypoint main.ts feat(install): deno install with entrypoint #25411 TypeScript useUnknownInCatchVariablesがデフォルトで有効化 TypeScriptのuseUnknownInCatchVariablesがデフォルトで有効化されています。...

September 8, 2024

Deno v1.46

Deno v1.46がリリースされました。 この記事では主な変更点などについて解説します。 Deno v2.0について 今回のv1.46がDeno v1.xにおける最後のリリースのようです。 Deno v2.0については、正式リリース前にまずはRCバージョンから順次リリースされていく想定のようです (後述のdeno upgradeでもRCバージョンへのアップグレードがサポートされています) 今回のv1.46では、おそらくv2.0に向けて、CLIのオプションやUIに関する様々な改善が行われています。 CLI deno clean deno cleanという新しいコマンドが追加されました。 このコマンドを実行すると、Denoのグローバルキャッシュディレクトリ(DENO_DIR)を削除してくれます。 deno remove deno removeという新しいコマンドが追加されました。 引数で指定されたパッケージの定義がdeno.jsonとdeno.lockから削除されます。 # `deno.json`の`imports`と`deno.lock`から`@std/assert`を削除します $ deno remove @std/assert deno <entrypoint> deno runコマンドにおけるrunの指定の省略がサポートされました。 # `deno run --allow-read main.ts`と同様に動作します $ deno --allow-read main.ts deno run <task> deno runコマンドでdeno.jsonで定義されたタスクの実行がサポートされました。 例えば、以下のように実行すると、deno.jsonのtasks.devで定義されたスクリプトが実行されます (deno runの引数としてJavaScriptまたはTypeScriptファイルを指定した場合は、今まで通りそのスクリプトが実行されます) $ deno run dev この変更に合わせて、エントリポイントを指定せずにdeno runコマンドを実行した場合、deno.jsonのtasksで定義されたスクリプトの一覧を表示する機能が追加されています (引数なしでdeno taskコマンドを実行した場合と同じ振る舞いをします) $ deno run Available tasks: - dev deno serve --watch -R main....

August 25, 2024

2024/07/29〜2024/08/04の最新情報

What we got wrong about HTTP imports DenoにおいてHTTPインポートが実装された背景やそのトレードオフ、JSRが開発された背景などについて解説された記事がDenoの公式ブログで公開されています。 What we got wrong about HTTP imports HTTPインポートについては今後も削除される予定はないものの、ある程度の規模のプロジェクトにおいてはImport MapsとJSRを併用することが推奨されています。 また、この記事によると、Deno v2のリリースは今年の9月に実施されることが検討されているようです。 Denoでpackage.jsonやnpmパッケージのサポートが入った理由について node:sqliteのサポートについて Node.jsで最近実装されたnode:sqliteのサポートに関するissueがlittledivy氏によって作成されています。 Tracking issue for node:sqlite (#24828) 現在はクローズされていますが、過去にDeno本体にSQLiteドライバーを追加するPRが作成されていたことがあったので、もしかしたらDenoでnode:sqliteが実装される可能性もありそうな気はします。 feat: Add Deno.sqlite bindings (#14627) Deno v1.45.5 Deno v1.45.5がリリースされています。 Node.js互換性の改善 package.json importsのワイルドカードが認識されるように改善されています。 Subpath patterns node:child_process IPC(fork)の再実装: 以下のような点などが改善されているようです: TypedArrayをやり取りができない問題が解消 IPCチャネルを作成すると、イベントループが停止しなくなる問題が解消 nullを渡そうとすると、チャネルが終了してしまう問題が解消 この改善により、--pool=forkを指定した際もvitestが動作するようです。(これはvitest v2のデフォルトの挙動のようです) --v8-options: 各種APIによってDenoを子プロセスとして実行する際に、Node.jsの--v8-optionsがDenoの--v8-flags=--helpとして解釈されるように挙動が修正されています。これにより、Denoでv8flagsが動作するようです。 node:fs/promises watch()がNode.jsと同様にAsyncIterableを返却するように修正されています。 node:timers/promises scheduler.{wait,yield}が実装されています。...

August 4, 2024

2024/07/22〜2024/07/28の最新情報

Deno v1.45.3 Deno v1.45.3がリリースされています。 Node.js互換性の改善 npm workspaces npm workspace内の複数のメンバー間で特定のパッケージのバージョンがコンフリクトした際に、それぞれのメンバー配下にnode_modulesが作られるように挙動が改善されています。(例: ./workspace-aと./workspace-bがそれそれ@foo/barパッケージのv1とv2に依存している場合、./workspace-a/node_modulesと./workspace-b/node_modulesが作られるようです) --allow-scripts deno.jsonでnodeModulesDir: trueが未設定の場合であっても、コマンドラインで--node-modules-dirが指定されていれば--allow-scriptsが動作するように改善されています。 node:fs exists(Sync)のパフォーマンスが最適化されています (#24613) また、WindowsでStats.modeに適切な値が設定されるように改善されています (chokidarがWindowsで動かない問題があったようです) node:http request()でBufferのsubarrayをボディに指定すると、データが欠損してしまう問題が修正されています。 node:tty WriteStreamでhasColors()とgetColorDepth()メソッドが実装されています。 deno publish deno publishコマンドにLICENSEファイルが含まれていない場合に警告を表示する機能が追加されています。 現状では警告が表示されるようですが、エラーとするように挙動を変更することも検討されているようです。(Error when missing license file for deno publish (denoland/deno#24676)) ライセンスファイルの一覧 deno lsp deno lspでnpm workspacesがサポートされています。 また、依存関係のキャッシュに失敗するとLSPがフリーズする問題が修正されています。 deno compile deno compileで生成されたバイナリーでNode-APIがサポートされました。 その他 console.logなどでErrorのcauseプロパティの内容がフォーマットして出力されるように改善されています。 また、lib.deno_web.d.tsのlib.dom.d.tsやlib.webworker.d.tsとの互換性が改善されています。(#24599) Deno v1.45.4 Deno v1.45.4がリリースされています。 deno lint no-sloppy-importsルール sloppy importsに関する警告がdeno lintへ移動されています。deno lintに--unstable-sloppy-importsを指定するとno-sloppy-importsルールが有効化されるようです。 構文エラーの報告 構文エラーなどが検出された際に、deno lintがエラーを報告してくれるように挙動が改善されています。 deno lsp Infer function return typeによってnpmパッケージから提供される型が推論される際に、常にfile:形式のURLが挿入されてしまう問題が修正されています (#24344)...

July 28, 2024

Deno v1.45

Deno v1.45がリリースされました。 この記事では主な変更点などについて解説します。 ワークスペース 先週紹介したワークスペースに関する改善が正式にリリースされました。 deno.jsonでワークスペースを定義するためのworkspacesキーがworkspaceにリネームされています。 また、オブジェクト形式でワークスペースに関する設定が定義できるようになりました (cli/schemas/config-file.v1.json#L607-L629) { "workspace": { "members": ["./member1", "./member2"] } } 現時点では設定項目としてworkspace.membersのみが存在しますが、今後、追加される可能性もありそうです。 このworkspace.membersにはdeno.jsonを含むディレクトリだけでなく、package.jsonを含むディレクトリをワークスペースのメンバーとして指定することもできるようです。 deno_stdでもすでに新しいフォーマットへ移行されているようです。 chore: use new format for workspaces and re-enable using Deno canary and v1.x (denoland/deno_std#5375) Node.js互換性の改善 npm workspacesのサポート 先週紹介したnpm workspacesに関するサポートが正式にDenoに導入されました。Denoがpackage.jsonのworkspacesキーを認識してくれます。 以下のようなワイルドカード形式でのワークスペースメンバーの指定もサポートが導入されています。 { "workspaces": ["packages/*"] } また、deno publishコマンドでもnpm workspacesに関するサポートが導入されているようです。#24507によると、以下のような構成のプロジェクトにおいてdeno publishを実行すると、packages/member-1とpackages/member-2がJSRに公開されるようです。 project/ package.json ("workspaces": ["packages/*"]が設定) packages/ member-1/ pakcage.json jsr.json member-2/ package.json jsr....

July 14, 2024

2024/05/27〜2024/06/02の最新情報

Deno v1.44 Deno v1.44がリリースされています。 以下に内容をまとめたため、よろしければこちらを参照いただければと思います。 Deno v1.44 deno_stdのリリース deno_stdがリリースされています。 @std/uuid@0.224.3 @std/uuid/v1 generateのbufとoffset引数が非推奨化されています。 また、V1OptionsがGenerateOptionsにリネームされています。 @std/data-structures@0.225.0 BinarySearchNodeがprivate APIに変更されています Hono v4.4.0 Hono v4.4.0がリリースされています。 HonoがJSRに公開されています。 @hono/hono

June 2, 2024

2024/05/13〜2024/05/19の最新情報

Deno v1.43.4 Deno v1.43.4がリリースされました。このリリースはバグ修正やパフォーマンス改善などがメインです。 deno publish expandoプロパティのサポート deno publish(fast check)やdeno docでexpandoプロパティが認識されない問題が修正されています。 --dry-runの改善 deno publish --dry-runの実行時に、以下のケースでエラーが発生するように挙動が改善されています。 バージョン指定がないjsr:specifierが検出された場合 deno.jsonが存在しない場合 Node.js互換性の改善 node:worker_threads メインスレッドとWorkerスレッドでモジュールキャッシュが分離されました。SvelteKitなどのパッケージがこの挙動に依存しているようです。(#23461) node:os homedirの互換性が改善されています。 node:fs EISDIRが発生する状況下でReferenceErrorが発生してしまう問題が修正されています。 Deno API "junction"に関する型定義の追加 Deno.SymlinkOptionsのtypeプロパティの型定義に"junction"が追加されています。 "junction"のサポートは以前に実装されていたものの、型定義が追加されていなかったようです。 ReadableStream ReadableStreamのSymbol.asyncIteratorメソッドが返却する非同期イテレーターに対して.return()の直後に.next()を呼ぶと、.next()が返却したPromiseが.return()が返却したものよりも先に解決される問題が修正されています。 Update ongoing promise in async iterator return() method #22389 その他 DenoがTypeScriptなどのファイルをトランスパイルする際に、トランスパイル後のソースからコメントが削除されてしまう問題が修正されています。 Deno v1.43.5 Deno v1.43.5がリリースされています。 Deno v1.43.4でいくつかのnpmパッケージを使おうとするとエラーが発生していたため、その修正が行われています。(#23862) deno_stdのリリース deno_stdのリリースが行われています。主要な変更点だけ抜粋します。 @std/collections@0.224.2 invertとinvertByが追加されています。オブジェクトのキーと値を入れ替えることができます。 const actual = invert({ "foo": 1, "bar": 2 }); const expected = { "1": "foo", "2": "bar" }; assertEquals(actual, expected); freshのホームページの新デザイン freshのホームページのデザインが更新されています。...

May 19, 2024

2024/05/06〜2024/05/12の最新情報

Deno v1.43.2 Deno v1.43.2がリリースされています。 N-API napi_get_elementとnapi_set_elementがオブジェクトでも動作するように改善されています。この改善により、duckdb-nodeのexampleが動くようです。 deno lsp いくつかのQuickfixの実行時にDebug Failureが発生することのある問題が修正されています。 また、deno lspからnpmパッケージがキャッシュできないことがある問題も修正されています。 deno publish パッケージでクラスがexportされていて かつ その基底クラスがパッケージでexportされていない場合、deno publishが失敗する問題が修正されています。 deno test deno test --docで適切に型チェックが行われなくなっていた問題が修正されています。 ランタイム Deno v1.43から/etc配下のファイルへの読み書きに--allow-allフラグが要求されていた問題が修正されています。 Web API createImageBitmapにBlobオブジェクトを渡すとTypeErrorが発生する問題が修正されています。 また、importScriptsでスクリプトが並列に読み込まれるように改善されています。 TypeScript Denoに組み込まれたTypeScriptがv5.4.3からv5.3.5へアップデートされています。 Deno v1.43.3 Deno v1.43.3がリリースされています。 ランタイム Homebrewなどでインストールした場合にDenoがパニックする問題が修正されています。 また、v1.43.2での/etcに関する変更に合わせて、/dev/fd配下のファイルを--allow-allを指定しないと読み込めなかった問題が修正されています。 deno lsp usingまたはawait usingを使っている場合でも補完が動作するように改善されています。 deno task deno taskでnpx <npmバイナリ> ...のように定義されたスクリプトを実行する際に、対象のnpmバイナリをうまく検出できないことがあった問題が修正されています。 deno_stdのリリース (2024/05/07) deno_stdの以下のパッケージで最新バージョンがリリースされています (release-2024.05.07) @std/assert@0.225.1 @std/bytes@1.0.0-rc.1 @std/cli@0.224.1 @std/collections@0.224.1 @std/log@0.224.1 deno_std v1向けに、各モジュールごとに独立してリリースする運用が開始されたようです。 主要な変更についていくつか紹介します。 @std/bytes@1.0.0-rc.1 特に大きな変更はないものの、@std/bytesのv1に向けたRCバージョンが公開されています。 @std/cli@0.224.1 @std/cli/spinner.tsでNO_COLOR環境変数によってスピナーに色を付けないように制御できるような改善が導入されています。 @std/collections@0.224.1 chunkに不正なサイズが与えられた際に、ErrorではなくRangeErrorがthrowされるように改善されています。 @std/log@0.224.1 FileHandlerにバッファーサイズを調節するためのbufferSizeオプションが追加されています。...

May 12, 2024