Deno v1.44

Deno v1.44がリリースされました。 この記事では主な変更点などについて解説します。 Node.js互換性の改善 .npmrcのサポート プライベートレジストリからnpmパッケージを読み込むために、.npmrcのサポートが追加されています。 現時点ではpackage.jsonまたはdeno.jsonと同一ディレクトリにある.npmrcのみが探索されます (ホームディレクトリなどからの読みこみはまだサポートされていません) .npmrcの設定内容はnpm:などによりnpmパッケージを利用する場合に適用されます。設定内容としては、現時点では_authTokenと_authのみがサポートされています。 組み込みパッケージ 主にgrpc-nodeやNext.js, Eleventyなどに関連したNode.js組み込みパッケージの互換性が改善されています。 Next.jsのサポートについて 公式ブログによると、DENO_FUTURE=1の指定が必要なもののNext.jsが動作するようになったようです (後日ブログポストが公開予定とのこと) @google-cloud/visionのサポート @google-cloud/visionも動作するようになったようです。 主な変更点 node:buffer: isUtf8とisAsciiが実装されています node:fs: fstatSyncでthrowIfNoEntryオプションがサポートされています node:fs: writeなどでposition引数がうまく機能しない問題が修正されています node:http: ServerResponseでstatusCodeのデフォルト値がundefinedから200に変更されています @11ty/eleventy-dev-serverを動かすための対応 (#78) node_modules/.bin Denoがnode_modulesを作成する際に、node_modules/.binが作成されるようになりました。 $ deno run --allow-env --allow-read --node-modules-dir npm:cowsay@1.6.0 hi $ ls node_modules/.bin cowsay cowthink deno.lockサポート 今までdeno.lockはdeno.jsonがある場合は自動的に生成されていました。今回のリリースでpackage.jsonがある場合にも自動でdeno.lockが作成されるように挙動が変更されました。 またDENO_FUTURE=1が設定された状態でdeno installを実行した際に、deno.lockをベースにパッケージを解決することによりパフォーマンスの改善も図られています (#23918) deno task deno taskでスクリプトを実行する際に、そのスクリプトでnpm runが利用されていて かつ npm runにフラグが指定されていなければ、npm runをdeno taskに置きかえた上でpackage.jsonのスクリプトが実行されるように挙動が変更されています。 例えば、以下のような内容のdeno.jsonとpackage.jsonが存在する場合、deno task testを実行すると、package.jsonのhiスクリプトが実行されます。 deno.json: { "tasks": { "hi": "echo deno....

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

Deno v1.43

Deno v1.43がリリースされました。 この記事では主な変更点などについて解説します。 HTTPサーバー deno serveコマンド HTTPサーバーの起動を簡略化するためにdeno serveコマンドが追加されました。 使い方などについてはこちらのページを参照いただければと思います。 公式ブログによると、将来的にはロードバランシングなどの仕組みをdeno serveコマンドに導入することなども検討されているようです。 Request.signalのサポート Deno.serveのハンドラーに渡されるRequestオブジェクトでsignalプロパティがサポートされています。 これについても詳細はこちらのページを参照いただければと思います。 Deno.HttpServer.addr Deno.HttpServerにaddrプロパティが追加されています。HTTPサーバーの起動ポートなどを確認できます。 const server = Deno.serve((req) => new Response("OK")); console.info(server.addr.port); // => 8000 TypeScript compilerOptions.jsxImportSourceTypes deno.jsonにcompilerOptions.jsxImportSourceTypesというDeno独自のオプションが導入されました。 { "compilerOptions": { "jsx": "react-jsx", "jsxImportSource": "npm:react@18.3.1", "jsxImportSourceTypes": "npm:@types/react@18.3.1" } } JSX Transformを有効化した場合、TypeScriptは<some-jsx-package>/jsx-runtimeをimportするようなコードを生成します。 // 例) Reactの場合、以下のようなコードが生成されます import {jsx as _jsx} from 'react/jsx-runtime'; // ... 元々、この<some-jsx-package>/jsx-runtimeのimportに対して適用すべき型定義を判断する方法がDenoには存在せず、JSX Transformを有効化してReactなどを使う場合に型エラーが発生する課題がありました。(TypeScriptによって自動生成されるコードのため@deno-typesプラグマを適用することもできない) この課題を解消するため、compilerOptions.jsxImportSourceTypesが導入されたようです。このオプションを指定することで、上記のような<some-jsx-package/jsx-runtimeのimportに対して、Denoがどの型定義を適用すればよいか判断できるようになります。また、@jsxImportSourceなどと同様に、ソースコード内で@jsxImportSourceTypesプラグマを指定することも可能です。 /** @jsxImportSourceTypes npm:@types/react@18.3.1 */ Preactの場合はパッケージ内に型定義が同梱されているのでこの問題が起きなかったようなのですが、Reactの場合は@types/reactで別管理されている関係もあり、専用の解決策が必要と判断されて導入されたようです。 https://github....

May 5, 2024

2023/10/02〜2023/10/08の最新情報

WebGPU APIの再導入について Deno v1.32で一時的に削除されていたWebGPU APIを再度導入するPRが作成されています。 bring back WebGPU #20812 まだマージはされていませんが、今後、再びWebGPU APIが導入される可能性がありそうです。 denoland/terraform-provider-deno Deno公式からDeno DeployのTerraformプロパイダーが公開されています。 denoland/terraform-provider-deno Ree.js Bun/Deno/Node.jsなどをサポートする軽量・高速なWebフレームワーク。 https://github.com/rovelstars/reejs 以下のような特徴を備えているようです。 React/Twindなどをサポート esm.shなどのCDNからのURLインポートをサポート npm:<パッケージ名>によるnpmパッケージの読み込みをサポート Import Mapsのサポート Packitという独自のビルドツールの採用 Honoベースの高速なサーバー ファイルシステムベースのルーティングシステム 以下で作者の方による紹介記事が書かれています。 Welcome to the dark side. Ree.js awaits you!

October 8, 2023

2021/04/25〜2022/05/01の最新情報

Deno v1.21.1 Deno v1.21.1がリリースされました。 ネイティブHTTPサーバ(Deno.serveHttp)の変更点 Deno v1.20でレスポンスボディの自動的な圧縮がサポートされました。 このリリースでは、レスポンスボディにReadableStreamが指定された際の圧縮がサポートされています。 その他にもいくつかのパフォーマンス改善が実施されています。 deno taskで引数に--を指定した際の挙動が変更 例えば、deno.jsonで次のようなタスクが定義されていたとします。 { "tasks": { "test": "deno test --allow-read" } } 例えば、下記のように--を指定してタスクを実行したとします。 $ deno task test -- some-test.js この場合、v1.21.0時点では次のようにコマンドが実行されていました。 $ deno test --allow-read "some-test.js" 今回リリースされたv1.21.1では、次のように変更されています。 $ deno test --allow-read "--" "some-test.js" Deno.inspectの変更点 strAbbreviateSizeオプションが追加されました。 文字列がこのオプションで指定された長さを超えると省略して表示されます。 デフォルト値は100です。 compact: falseが指定された際であっても、空のIterableオブジェクトはコンパクト化して表示するように修正されています。 deno benchの変更点 deno benchで2つ以上のファイルを実行した際に、前のファイルのベンチマーク結果が次のファイルに影響を与えてしまう問題が修正されました。 この問題は、例えば、1つ目のベンチマークファイルでグルーピング(groupオプション)を利用しているが、2つ目のベンチマークファイルではグルーピングを利用していないようなケースで発生していたようです。 その他にも、Exit sanitizerによるオーバーヘッドの削減が実施されています。 deno testの変更点 Deno v1.21でテストケースの実行時にログに出力された内容がキャプチャされるように改善されました。 このリリースでは、Deno.spawn()などでstdoutやstderrオプションに"inherit"を指定した際に、サブプロセスの出力内容もキャプチャされるように改善されています。 他にも、Workerの出力内容もキャプチャするように改善されています。 その他の変更点 Deno....

May 1, 2022