2023/11/06〜2023/11/12の最新情報

Deno v1.38.1 Deno v1.38.1がリリースされました。 Node.js互換性の改善 require() .jsが見つからなければ.jsonも探すように挙動が改善されました。 BYONMが有効化された際に、scopedパッケージ(@foo/bar)が適切に解決されるように修正されました。 node:crypto createPrivateKey()が実装されました。 node:child_process spawnSync()でstdioオプションが適切に取り扱われるように改善されました。 これにより、execaパッケージが動くようになったようです。 node:util toUSVString()が実装されました。 deno doc --lintの出力内容の改善 deno doc --lintを実行した際の出力内容が変更されました。 今までは、lintに成功した際はAPIドキュメントが表示されました。 このリリースでは、lintに成功した際はAPIドキュメントを表示せず、チェックされたファイル数を表示するように変更されています。 $ deno doc --lint bytes/copy.ts Checked 1 file Deno.AtomicOperation#checkで指定できるキー数の増加 Deno.AtomicOperation#checkが最大で合計100個のキーまでチェックできるように改善されました。(今までは10個が最大値でした) Promise.withResolvers()の型定義の改善 Promise.withResolvers()が返すresolve関数の引数がオプショナルから必須に変更されています。 deno_std v0.206.0 deno_std v0.206.0がリリースされました。 std/async/deferred.tsが非推奨化 Deno v1.38でPromise.withResolvers()が利用できるようになったため、deferred()が非推奨化されました。 std/encoding/binary.tsが削除 非推奨化されていたstd/encoding/binary.tsモジュールが削除されています。 std/path/glob.tsに関するAPIの移動 std/path/glob.tsで提供されていた以下のAPIが移動されています。 API 移動先 isGlob std/path/is_glob.ts globToRegExp std/path/normalize_glob.ts joinGlobs std/path/join_globs.ts std/http/server_sent_event_stream....

November 12, 2023

2023/10/30〜2023/11/05の最新情報

Deno v1.38 Deno v1.38がリリースされました。 以下に内容をまとめたため、よろしければそちらを参照いただければと思います。 Deno v1.38 deno_std v0.205.0 deno_std v0.205.0がリリースされました。 std/httpモジュールの整理 std/http/server.tsが非推奨化されました。今後はDeno.serve()やその周辺APIへの移行が推奨されます。 また、以下の各ファイルがリネームされています。 http/http_status.ts → std/http/status.ts std/http/cookie_map.ts → std/http/unstable_cookie_map.ts std/http/http_errors.ts → std/http/unstable_errors.ts std/http/method.ts → std/http/unstable_method.ts std/http/server_sent_event.ts → std/http/unstable_server_sent_event.ts std/wasiの非推奨化 使用率が高くなかったため、std/wasiが非推奨化されました。 Deno v1.38の公式ブログではwasmer-jsへの移行が推奨されています。 非推奨化されたAPIの削除 std/dotenv: restrictEnvAccessToオプションが削除されました。 deno_std v0.201.0でのstd/dotenvの改善により必要性が低下したため std/bytes/bytes_list.tsが削除されました。 std/csv/parse.ts: 以下のAPIが削除されました。 ERR_BARE_QUOTE ERR_FIELD_COUNT ERR_INVALID_DELIM ERR_QUOTE ParseError ReadOptions std/fs/walk.ts: canonicalizeオプションが追加 walk()にcanonicalizeオプションが追加されました。 このオプションはfollowSymlinksオプションがtrueのときのみ効果を持ちます。 このオプションにfalseが設定された場合、シンボリックリンク解決後のパスが正規化されなくなります (デフォルトはtrueのため、互換性には影響ありません) std/fs/expand_glob.ts: パーミッションの取り扱いの改善 expandGlob()にrootオプションまたは絶対パスが指定された際は、ファイルシステム全体への--allow-read権限を要求しないように挙動が改善されました。 denokv v0.1.0 denokv v0....

November 5, 2023

Deno v1.38

Deno v1.38がリリースされました。 この記事では主な変更点などについて解説します。 deno doc deno doc --lint deno docコマンドで--lintオプションがサポートされました。 $ deno doc --lint mod.ts Missing JS documentation comment. at file:///home/uki00a/ghq/github.com/uki00a/some-project/mod.ts:12:3 このオプションを指定すると、DenoはAPIドキュメントを出力する前に、各APIを検査します。そして以下のようなAPIが検出された場合、APIドキュメントを出力せずにエラーを表示します。 exportされているAPIにJSDocコメントが書かれていない場合 (Missing JS documentation comment.) exportされているAPIの戻り値の型定義が省略されている場合 (Missing return type.) exportされている型のプロパティがexportされていない型を参照している場合 (Type 'foo' references type 'Bar' which is not exported from a root module.) このエラーが発生した場合、そのexportされていない型に@internalを指定することでエラーを抑止できます deno doc --html deno docでAPIドキュメントのHTML形式での出力がサポートされました。 --htmlを指定すると、docsディレクトリにHTMLが出力されます。 $ deno doc --html --name=fresh-testing-library mod.ts Written 261 files to "./docs/" docs/index.htmlを開くことで作成されたAPIドキュメントを閲覧できます。...

November 5, 2023

2023/10/23〜2023/10/29の最新情報

denoland/denokv denoland/denokvというリポジトリが公開されています。 今後、Deno KVのSQLiteバックエンドやgRPCのスキーマの定義などはこのリポジトリで開発される想定のようです。 現在、Deno本体ではdenoland/denokvへの移行が行われているようです。 chore: update ext/kv to use denokv_* crates #20986 BYONMのサポートについて Deno本体でnpmなどで作成されたnode_modulesディレクトリ(BYONM)をサポートするPRがマージされています。Deno v1.38でリリースされるかもしれません。 feat(unstable): ability to npm install then deno run main.ts #20967 ⚠️この機能は実験的機能のため、今後、使い方などに変更が入る可能性があります。 例えば、以下のようにnpmでkoaパッケージがインストールされていたとします。 $ npm i koa npmによってインストールされたkoaパッケージをnpm:なしで読み込むJavaScriptファイルを用意します。 // index.js import Koa from "koa"; const app = new Koa(); app.use(async (ctx) => { ctx.body = "Hello Deno!"; }); app.listen(3000); この状態で--unstable-byonmオプションを指定すると、npmによって作成されたnode_modulesディレクトリからkoaパッケージが読みこまれます。 $ deno run --unstable-byonm --allow-net --allow-read --allow-env index....

October 29, 2023

2023/10/16〜2023/10/22の最新情報

fresh v1.5.2 fresh v1.5.2がリリースされています。 <a>要素のアクセシビリティに関する改善 fresh v1.5で<a>にdata-current/data-ancestorを付与する機能が入りました。 このリリースではさらに<a>に対してaria-current属性も設定されるように改善されています。 aria-current=page: data-currentが付与される場合、この属性も一緒に付与されます。 aria-current=true: data-ancestorが付与される場合、この属性も一緒に付与されます。 https://github.com/denoland/fresh/pull/1915 devサーバとブラウザとのやり取りがWebSocketベースで行われるように devサーバとブラウザとのやり取りがEventSourceベースからWebSocketベースへ移行されているようです。 Firefoxにおいて接続が切れてしまうことのある問題(#1765)の解消や将来的なHMRのサポートなどを視野に入れた変更のようです。(後述) https://github.com/denoland/fresh/pull/1943 https://github.com/denoland/fresh/pull/1944 DenoでのHMRのサポートについて Deno本体にHMRをサポートするためのPRが作成されています。 feat: deno run –unstable-hmr (#20876) まだ正式に入るかどうかはわからないものの、HMRを有効化するための--unstable-hmrオプションの導入や、ファイル変更時にCustomEvent経由で通知をすることなどが検討されているようです。

October 22, 2023

2023/10/09〜2023/10/15の最新情報

fresh v1.5 fresh v1.5がリリースされました。 以下に内容をまとめたため、よろしければそちらを参照いただければと思います。 fresh v1.5 Deno v1.37.2 Deno v1.37.2がリリースされました。 Deno.serve Deno.serveでUnixドメインソケットがサポートされています。(unstable) Deno.serveのpathオプションを指定することで有効化されます。 また、Deno.serveから返却されるDeno.Serverがthenableオブジェクトではなくなりました。 これにより、async関数から直接Deno.Serverをreturnできなかった問題が解消されたようです。 TransformStreamでキャンセルがサポート (cancelオプションの追加) readableがキャンセルされたタイミング または writableが中断されたタイミングでcancelオプションに指定された関数が呼ばれるようです。 TransformStream cleanup using “Transformer.cancel” (whatwg/streams#1283) deno jupyter deno.land/x/displayのDeno本体への追加 deno.land/x/displayがDeno本体に取り込まれたようです。 これにより、以下のAPIが追加されています。 Deno.jupyter.display Deno.jupyter.md Deno.jupyter.html Deno.jupyter.svg Deno.jupyter.format Deno.jupyter.broadcast Deno.jupyter.broadcastに以下のオプションが追加されています。 metadataオプション buffersオプション (バイナリデータを送信したい場合に使用できます) Deno.testのサポート deno replやdeno jupyterでDeno.testがサポートされています。 $ deno repl Deno 1.37.2 exit using ctrl+d, ctrl+c, or close() > Deno.test(function ok() {}); ok ....

October 15, 2023

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

2023/09/25〜2023/10/01の最新情報

Deno v1.37.1 Deno v1.37.1がリリースされました。 deno lsp 現在のファイルの全依存モジュールをキャッシュするQuickFixアクションが実装されています。(Cache all dependencies of this module.) また、deno lspでリモートのImport mapsのサポートも追加されています。 deno test Deno.testやDeno.TestContext.stepなどによるテストケースの登録がDeno v1.37から2倍近くまで高速化されています。 deno jupyter: Deno.jupyter.broadcastが追加 (unstable) Denoからdisplay_dataやupdate_display_dataメッセージを送信するためのメソッドのようです。 Deno.jupyter.broadcast Deno KV Deno.Kv#enqueueのdelayオプションに設定できる最大値が30日まで増加されました。 Node.js互換性 node:crypto: randomFillSync()にArrayBufferなどを渡すと、TypeErrorが発生する問題が修正されています。 package.json: exportsフィールドがnullだった場合、プロセスがパニックする問題が修正されています。 deno_std v0.203.0 deno_std v0.203.0がリリースされました。 std/ioが非推奨化 std/ioはDeno.ReaderとDeno.Writerベースの機能が提供されていたため、非推奨化されました。 std/encoding: encode/decodeが非推奨化 std/encodingの各モジュールで提供されていたencodeとdecodeが非推奨化されています。今後は、以下の関数への移行が推奨されます。 std/encoding/ascii85.ts: encodeAscii85/decodeAscii85 std/encoding/base32.ts: encodeBase32/decodeBase32 std/encoding/base58.ts: encodeBase58/decodeBase58 std/encoding/base64.ts: encodeBase64/decodeBase64 std/encoding/base64url.ts: encodeBase64Url/decodeBase64Url std/encoding/hex.ts: encodeHex/decodeHex std/front_matter 他のモジュールとの一貫性の向上のため、以下の各ファイルで提供されていたdefault exportが非推奨化されました。 std/front_matter/any.ts std/front_matter/json.ts std/front_matter/toml.ts std/front_matter/yaml.ts std/collections - 一部関数の引数がArrayからReadonlyArrayへ変更 以下の各関数の引数がArrayではなくReadonlyArrayを受け取るように修正されています。(std/collectionsの他の関数との一貫性の向上が目的)...

October 1, 2023

2023/09/18〜2023/09/24の最新情報

Deno v1.37 Deno v1.37がリリースされました。 以下に内容をまとめたため、よろしければそちらを参照いただければと思います。 Deno v1.37 deno_std v0.202.0 deno_std v0.202.0がリリースされました。 std/collections及びstd/cryptoでunstable/ディレクトリが導入 std/collectionsで提供されている以下のデータ構造がstd/collections/unstableへ移動されました。 BinaryHeap BinarySearchTree RedBlackTree また、std/cryptoで提供されているKeyStackもstd/crypto/unstable/keystack.tsへ移動されています。 std/crypto/to_hash_string.ts: toHashStringが非推奨化 今後はstd/encoding/hex.tsまたはstd/encoding/base64.tsの使用が推奨されます。 std/csv/parse.ts: ERR_BARE_QUOTE/ERR_FIELD_COUNT/ERR_INVALID_DELIM/ERR_QUOTEが非推奨化 std/csvの内部で使用されている各種エラーが非推奨化されています。 std/datetime/to_imf.tsが非推奨化 今後はDate#toUTCString()の使用が推奨されます。 std/media_types/type_by_extension.ts: typeByExtensionが非推奨化 std/media_typesのtypeByExtensionが非推奨化されました。 今後は、contentTypeの使用が推奨されます。 std/streams: Deno.Reader & Deno.WriterベースのAPIが非推奨化 std/streamsで提供されていたDeno.ReaderとDeno.WriterをベースにしたAPIが非推奨化されています。 今後はWeb Streams APIをベースとした機能の使用が推奨されるものと思います。 非推奨化されたファイルの一覧: std/streams/copy.ts std/streams/iterate_reader.ts std/streams/read_all.ts std/streams/readable_stream_from_reader.ts std/streams/reader_from_iterable.ts std/streams/reader_from_stream_reader.ts std/streams/writable_stream_from_writer.ts std/streams/write_all.ts std/streams/writer_from_stream_writer.ts std/encoding/hex.ts: encodeHex/decodeHexが追加 encodeHexは既存のencodeと比べると、引数をより柔軟に受け取れる点と戻り値としてstringを返す点が異なります。 decodeHexについては、既存のdecodeと異なり、stringを引数として受け取ります。 std/streams: toArrayBuffer/toBlob/toJson/toTextが追加 これらの関数はReadableStreamをそれぞれ対応する型へ変換してくれます。 import { toJson } from "https://deno.land/std@0.202.0/streams/to_json.ts"; const file = await Deno....

September 24, 2023

Deno v1.37

Deno v1.37がリリースされました。 この記事では主な変更点などについて解説します。 実験的なパッケージマネージャが実装 (jsr:URL) ⚠️この機能は実験的機能のようなので、今後、大きな変更が入る可能性があります。 ⚠️また、パッケージレジストリがまだ公開されていないため、この機能はまだ利用できない状態のようです。 Deno本体に実験的なパッケージマネージャーが実装されています。 具体的には、以下のようにjsr:形式のURLを記述することで、Denoがパッケージレジストリと連携してsemverの解決などを行いつつ、パッケージのインストールなどを自動で行ってくれるようです。 import { foo } from "jsr:@foo/some_pkg@1/mod.ts"; 例えば、この場合、@foo/some_pkgパッケージに関するsemverの解決を行うために、まずhttps://${DENO_REGISTRY_URL}/@foo/some_pkg/meta.jsonの問い合わせを行い、その内容を元にどのバージョンをインストールすべきか判断されるようです。 従来のhttps:やnpm:形式のパッケージと同様に、npm installなどのコマンドの実行は不要で、スクリプトの実行時にDenoが必要に応じてパッケージをインストールしてくれます。 また、パッケージのインストール元レジストリはDENO_REGISTRY_URL環境変数で変更可能なようです。 ここからは推測になりますが、この機能は、元々、導入される予定であったdeno:URLに相当する機能だと思われます。 Deno本体がレジストリと連携してsemver解決を行うことで、依存関係の重複問題などを解消しようというのがこの機能の狙いだと思われます。 feat(unstable): package manager #20517 Built-in support for semvered specifiers on the deno.land/x registry #17495 deno jupyter Deno本体にJupyter Kernelが実装されました。 以下のコマンドを実行すると、Deno Kernelがインストールされているかどうかを確認できます。 $ deno jupyter --unstable ℹ️ Deno kernel is not yet installed, run `deno jupyter --unstable --install` to set it up もしインストールされていなければ、以下のコマンドでインストールできます。...

September 24, 2023