Deno v1.30.3

Deno v1.30.3がリリースされました。

esm.shunpkg.comなどからパッケージを読み込むと、deno lspが停止してしまう問題が修正されています。

また、console.log()などでclassを出力する際のフォーマットも改善されています。

class User {}

console.info(User);
// v1.30.3: `[Class: User]`
// v1.30.2: `[Function: User]`

https://github.com/denoland/deno/releases/tag/v1.30.3

deno_std v0.177.0

deno_std v0.177.0がリリースされました。

std/encoding/csv - BOMのサポート

stringify()bomオプションを指定できるようになりました。

trueを指定すると、出力されるCSVの先頭にBOMが付与されます。

また、trimLeadingSpaceオプションが未設定の場合でもparse()がBOMを認識するように改善されています。

std/node

以下のバグが修正されています。

  • node:child_process: execFile()util.promisify()がうまく適用されない問題が修正されています。
  • node:process: 標準入力にファイルがリダイレクトされている場合に、ファイルの末尾に達してもprocess.stdinからnullが返却されない問題が修正されています。

std/semver

semver.increment()metadata引数に空文字列が渡された際に、ビルドメタデータが未設定にならない問題が修正されています。

import * as semver from "https://deno.land/std@0.177.0/semver/mod.ts";

const v = semver.increment(
  "1.2.3+1", // version
  "major", // release
  undefined, // options
  undefined, // identifier
  "", // metadata
);
assert(v === "2.0.0");

https://github.com/denoland/deno_std/releases/tag/0.177.0

Deno 2.0 マイルストーン

Deno v2.0のマイルストーンが公開されています。

2.0.0 Milestone · denoland/deno

ここでは直近で追加されたいくつかのissueについて紹介します。

リモートモジュールのメタデータ管理の効率化

Denoはリモートモジュールをダウンロードする際に、ソースファイルに加えて対象ファイルに関するメタデータをJSONファイルに保存します。

Denoが実際にリモートモジュールを実行する際は、背後ではこれらの2つのファイルの読み込みが行われています。

以下のissueでは、これら2つのファイルをひとつにまとめることが提案されています。

Consider storing remote file cache metadata in same file as text #17707

これにより、モジュールの読み込みを効率化できることが期待されるようです。

deno info --jsonから"emit""map"の削除

Remove “emit” and “map” from deno info --json output #17703

上記のissueではdeno info --jsonから以下のフィールドを削除することが提案されています。

フィールド背景
"map"現状、このフィールドには常にnullが設定されるため
"emit"このフィールドはCLI内部の挙動に依存しており、バージョンが上がると挙動が変わる可能性があります。また、もしトランスパイル後のソースを読むたい場合はdeno_emitの使用が推奨されます。

静的に解析可能なdynamic importの取り扱いに関する変更

以下のissueで、静的に解析可能なdynamic importに関する取り扱いを変更することが提案されています。

Do not permission prompt for statically analyzable dynamic imports #17697

現状、dynamic import経由で読み込まれるモジュールはdeno infoの出力には含まれまず、またそれがリモートモジュールであれば--allow-netの指定も要求されます。

今後は、dynamic importでモジュールが読み込まれた場合であっても、それが静的解析可能であればdeno infoの出力に含むようにすることが検討されているようです。

また、そのようなモジュールの読み込みに対しては、--allow-netオプションの指定も不要にすることも考慮されているようです。

deno bundleコマンドの非推奨化

deno bundleコマンドを非推奨化するPRが作成されています。

feat: Deprecate ‘deno bundle’ subcommand #17695

今後、deno bundleコマンドを実行した際は、以下への移行を促す警告メッセージが表示されるようです。

今のところ、この変更はDeno v1.31でリリースされることが検討されているようです。

Aurae

コンテナやVM、プロセスなどの実行を管理する分散システムランタイム

AuraeScriptというTypeScriptベースのスクリプト言語を搭載しており、内部ではdeno_coreが使用されているようです。


https://discord.com/channels/684898665143206084/712010403302866974/1072883570357571604