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

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

2024/08/26〜2024/09/01の最新情報

Deno v2.0.0-rc.0 Deno v2.0.0-rc.0がリリースされています。 アップデートについて 今回、GitHub Releaseは作成されていないようなので、deno upgradeによってアップデートする必要がありそうです。RCバージョンへのアップデートはDeno v1.46でサポートが入っているため、それ以前のバージョンをお使いの場合は、一度、v1.46を経由してからアップデートする必要がありそうです。 $ deno upgrade 2.0.0-rc.0 もし現在のDenoの実行可能ファイルを上書きしたくない場合は、--outputオプションを使えば回避できます: # `./deno-2.0.0-rc.0`に保存します $ deno upgrade --output deno-2.0.0-rc.0 2.0.0-rc.0 直近の変更点について コミットログを参考に、v2.0.0-rc.0に入っている可能性がありそうな内容について紹介します ⚠️ここで書いている内容には推測も含まれています。もし機能が入っていなそうでしたら、すみません🙏 DENO_FUTURE=1設定時の振る舞いのデフォルト化 DENO_FUTURE=1を設定した際の振る舞いがデフォルト化されたようです。 BREAKING: DENO_FUTURE=1 by default, or welcome to Deno 2.0 (#25213) 具体的には、以下のような変更がデフォルトで適用されます: Deno.*配下の非推奨APIが削除されます window変数が削除されます FFIやWebGPU APIなどが--unstable-*なしでも有効化されます Import Assertionが無効化されます package.jsonがあればBYONMがデフォルトで有効化されます --node-modulesオプション Deno v2 向けに--node-modulesというフラグが追加されています。 ⚠️上記のコミットログ内に含まれているため紹介しますが、試したところうまく動いていないようにも見えるので、もしかしたらこの変更はまだv2.0.0-rc.0には入っていない可能性もあるかもしれません🙏 feat(config): Node modules option for 2.0 (#25299) 以下の3種類のモードが指定できるようです: モード 説明 備考 local-auto おそらく、Denoがnode_modules/を作成してくれるモード local-manual おそらく、BYONMが有効化されます v2ではpackage....

September 1, 2024

2024/08/19〜2024/08/25の最新情報

Deno v1.46.0 Deno v1.46.0がリリースされています。 以下に内容をまとめたため、よろしければこちらを参照いただければと思います。 Deno v1.46 Deno v1.46.1 Deno v1.46.1がリリースされています。 URLPattern#exec Deno v1.46.0による変更の影響で、URLPattern#execの振る舞いが変わっていたため、元の挙動に戻されています (ただし、Deno v2.0がリリースされる際に再び、v1.46.0の挙動に戻される予定のようです) v1.46.0ではパターンにマッチするグループがない場合にgroups[key]にundefinedが設定されるように挙動が変わっていたため、Deno v1.45までの空文字列を設定する挙動に戻されています。 node:wasi node:wasiをimportやrequireなどで読み込めるようになりました (ただし、実装はまだ行われていません) DENO_AUTH_TOKENS DENO_AUTH_TOKENSにおいて、前後の空白文字がきちんと取り除かれるように挙動が改善されています std/wsの追加に関する提案 だいぶ前に削除されたstd/wsを再びdeno_stdに追加する提案が行われています。 proposal: bring back the ws module #5755 標準のWebSocketAPIには自動的な再接続機能が存在しないことや、socket.ioが提供するRoomなどの抽象化が提供されていないことなどが背景として挙げられています。

August 25, 2024

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

Denoの直近の変更について 先週に続けて、おそらく次のDeno v1.46でリリースされると思われる機能がいくつかマージされているため、気になったものについて紹介いたします。 ⚠️正式にDeno v1.46がリリースされる際には、仕様などに変更が入る可能性もあります🙏 deno removeコマンド deno removeという新しいコマンドが追加されています。引数で指定されたパッケージをdeno.jsonのimportsやpackage.jsonなどから削除しつつ、deno.lockを更新してくれます。 $ deno remove @std/testing feat: deno remove (denoland/deno#24952) deno serve --parallel deno serveに--parallelオプションが追加されています。このオプションが指定された場合、deno serveはコア数またはDENO_JOBSで指定された値に基づいて、リクエストを複数のワーカーへ分散してくれるようです。 Deno公式のYoutubeチャンネルで解説動画が公開されています。 Parallelizing Deno Serve feat(serve): Opt-in parallelism for deno serve (denoland/deno#24920) HMRの安定化 DenoのHMR機能が安定化されるようです。 安定化に合わせて、コマンドラインオプションが--unstable-hmrから--watch-hmrにリネームされています。 feat: Rename –unstable-hmr to –watch-hmr (denoland/deno#24975) deno publishのLICENSEチェックについて deno publishコマンドの実行時にLICENSEファイルが存在しない場合は、警告ではなくエラーが発生するように挙動が変更されています。(articles/2024/07/28) また、deno.jsonにlicenseフィールドが追加されており、こちらによってライセンスを定義することもできるようです。 feat(publish): error on missing license file (denoland/deno#25011) feat(config/jsr): add license field (denoland/deno#25056) deno_stdのリリース deno_stdがリリースされています。...

August 18, 2024

2024/08/05〜2024/08/11の最新情報

Denoの直近の変更について 今週はDeno本体のリリースは行われていないですが、おそらく次のDeno v1.46でリリースされると思われる機能がいくつかマージされていたため、主要なものについて紹介いたします。 ⚠️正式にDeno v1.46がリリースされる際には、仕様などに変更が入る可能性もあります🙏 CLI引数の簡略化 パーミッション引数の簡略化 例えば、--allow-readは-R, --allow-envは-Eのように短縮された形式で指定することができます。 # 例) 以下は`deno --allow-read --allow-env main.ts`と同等です $ deno -ER main.ts feat: support short flags for permissions (denoland/deno#24883) runの省略 (deno <script>のサポート) deno runコマンドにおけるrunを省略できるようにする変更が導入されています。 $ deno main.ts feat: treat bare deno command with run arguments as deno run (denoland/deno#24887) deno runでタスクの実行がサポート (deno run <task>) deno runコマンドのエントリポイントとして指定されたファイルが存在しない場合、deno.jsonのtasksで定義されたタスクを実行するようフォールバックする機能が追加されています。deno run <entrypoint>のように実行された際に、<entrypoint>のファイルが存在しない場合はdeno task <entrypoint>として振る舞うイメージです。 # `deno.json`の`tasks.hello`が実行されます $ deno run hello feat: deno run (denoland/deno#24891) deno fmtでのCSSやYAMLのサポート deno fmtコマンドにCSS/SCSS/Sass/Less/YAMLなどのフォーマットのサポートが追加されています。...

August 11, 2024