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

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/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

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

2024/07/15〜2024/07/21の最新情報

@ts-typesと@ts-self-typesプラグマについて Denoで@ts-typesと@ts-self-typesというプラグマが実装されていたようです。 Document @ts-self-types (denoland/deno-docs#502) @ts-typesについては@deno-typesプラグマと同様に、特定のJavaScriptモジュールに対して型定義を適用したい場合に指定することが想定されているようです。今後は@deno-typesではなく@ts-typesの方の使用が推奨されるようです。 // @ts-types="./add.d.ts" import { add } from "./add.js"; @ts-self-typesについても、JavaScriptで書かれたモジュールに型を適用するための機能のようですが、実質的に/// <reference types="..." />と同様に動作するようです。基本的にJavaScriptモジュールに対して型を適用したい場合を除いて、/// <reference types="..." />の方の使用が推奨されるようです。 // @ts-self-types="./globals.d.ts" feat(unstable): add @ts-types and clean up @deno-types (denoland/deno_graph#444) feat(unstable): add support for @ts-self-types pragma (denoland/deno_graph#445) deno_stdのリリース deno_stdがリリースされています。 @std/async@1.0.0 @std/async@1.0.0がリリースされています。 @std/cli@1.0.0 @std/cli@1.0.0がリリースされています。 @std/text@1.0.0 @std/text@1.0.0がリリースされています。 このリリースに合わせて@std/text/caseが削除されています。代わりに@std/text/caseで提供されていた各APIは@std/text/to-camel-caseや@std/text/to-kebab-caseなどのファイルへ移行されています。 @std/ulid@1.0.0 @std/ulid@1.0.0がリリースされています。 @std/csv@1.0.0-rc.4 @std/csv@1.0.0-rc.4がリリースされています。 ParseErrorが削除されています (今後はSyntaxErrorがthrowされます) @std/yaml@1.0.0-rc.4 @std/yaml@1.0.0-rc.4がリリースされています。 stringify()やparse()で利用されていたYamlErrorが削除されています。今後はstringify()からはTypeError, parse()からはSyntaxErrorがthrowされます。 @std/expect@1.0.0-rc.3 @std/expect@1.0.0-rc.3がリリースされています。 expect.extend()との併用を想定して、expect()に型引数が追加されています。 @std/semver@1.0.0-rc.3 @std/semver@1.0.0-rc.3がリリースされています。 @std/semver/increment: increment()のprereleaseとbuildmetadata引数が削除されています。代わりにoptions引数が追加されており、そこでprereleaseやbuildオプションを指定できます。 @std/dotenv@0.225.0 @std/dotenv@0....

July 21, 2024

2024/07/08〜2024/07/14の最新情報

Deno v1.45 Deno v1.45がリリースされています。 以下に内容をまとめたため、よろしければこちらを参照いただければと思います。 Deno v1.45 Deno v1.45.1 Deno v1.45.1がリリースされています。 --import-map Denoまたはnpmのワークスペースを設定している状態で--import-mapオプションを指定すると、エラーが発生する問題が修正されています。 ライフサイクルスクリプト fseventsなどのパッケージをインストールすると、警告が表示される問題が修正されています。npmはbinding.gypが存在する場合、そのパッケージにデフォルトでinstallスクリプトを追加するものの、fseventsのようにnpmへの公開時にbinding.gypをパッケージから除外しているケースなどにおいて、Denoが意図せず警告を表示してしまう問題があったようです。 また、Denoがライフサイクルスクリプトを含むnpmパッケージを検出した際に、初回のみ警告を表示するように挙動が変更されています。 Deno v1.45.2 Deno v1.45.2がリリースされています。 fseventsを動かすための対応 fseventsパッケージを動かそうとするとエラーが発生する問題が修正されています (#24542) WebGPU GPUDevice#createRenderPipelineAsyncがPromiseを返却していなかった問題が修正されています。 Web Crypto API crypto.randomUUIDのパフォーマンスが5倍近くまで改善されています。 deno_stdのリリース deno_stdのリリースが行われています。 release-2024.07.09 release-2024.07.12 @std/assert@1.0.0 @std/assert@1.0.0が正式にリリースされました。 @std/path @std/path@1.0.0-rc.4 @std/path@1.0.0-rc.4がリリースされています。 以下のAPIが削除されています。 削除されたAPI 移行先 FormatInputPathObject Partial<ParsedPath> GlobToRegExpOptions GlobOptions @std/path@1.0.0 @std/path@1.0.0が正式にリリースされました。 @std/toml@1.0.0 @std/toml@1.0.0がリリースされました。 このリリースに合わせてTOMLParseErrorが削除されています。(今後はSyntaxErrorがthrowされます) @std/regexp@1.0.0 @std/regexp@1.0.0が正式にリリースされました。 @std/msgpack@1.0.0 @std/msgpack@1.0.0が正式にリリースされました。...

July 14, 2024