Denoばた会議 Monthly 第13回

Deno v1.26

--allow-sysオプション

システム情報を取得するAPIを使う際に指定します。

$ deno run --unstable --allow-sys=osRelease,systemMemoryInfo main.js

Cache API

const cache = await caches.open("v1");

const req = new Request("https://example.com/");
console.assert(await cache.match(req) === undefined);

const res = new Response("foobar");
await cache.put(req, res);

console.assert((await cache.match(req))?.text() === "foobar");

--node-modules-dirオプションがサポート

$ deno run -A --unstable --node-modules-dir npm:vite

pnpmライクなレイアウトでnode_modulesが作られます

これによって、npm installなしでViteが動かせるようになったようです

(破壊的変更) Node.js互換モード(--compat)の削除

--compatは動かなくなっているためご注意ください

$ deno run --compat --unstable main.mjs

FFI(Deno.dlopen)におけるJITの仕組みが再実装

JITの基盤がtinyccからdynasm-rsベースへ移行し、様々な改善が行われています

例)

  • Windows x64 PCでもv8 Fast APIによる最適化が適用されるように
  • tinyccへの依存が削除
  • SELinuxが有効化されている環境でもFFIが動作するように

パフォーマンスチューニング

TextEncoder/TextDecoderやファイルシステム関連のAPI、URLなどが高速化されています。

他にも、Denoの起動を高速化するために、様々な改善が検討・実施されています。

unstable APIの安定化について

  • Deno.hostname()/Deno.refTimer()/Deno.unrefTimer()の安定化
  • Flash (Deno.serve())はv1.27で安定化予定
  • Deno.setRaw()Deno.stdin.setRaw()へ移動 (v1.27で安定化予定)

CLIに関するUIの改善

$ deno lint --compact
/home/uki00a/sandbox/a.ts: line 5, col 11 - Empty block statement (no-empty)
/home/uki00a/sandbox/b.ts: line 11, col 4 - `mode` is never used (no-unused-vars)
Found 2 problems
Checked 2 files

その他の話題

新しいSlackプラットフォームのオープンベータ版がリリース

Slackの新しい開発プラットフォームのオープンベータ版が公開されています。

SDKやCLIなどがDenoで書かれており、Denoを使って開発ができます。

Denoのnpmパッケージサポートに関するロードマップが公開 (#15960)

  • TypeScriptサポート (deno lspとの連携、@typesとの自動的な連携など)
  • Lockfile(--lock)やdeno vendorなどの機能との連携
  • peerDependenciesoptionalDependenciesのサポート

deno_stdで頭字語に関する命名形式の変更が実施 (破壊的変更)

例)

変更前 変更後
CSVStream CsvStream
JSONParseStream JsonParseStream
TextProtoReader#readMIMEHeader TextProtoReader#readMimeHeader

Fresh v1.1

詳細はこちらなどを参照ください

Ultraのv2 betaバージョンが公開

など

deno-ja/showcase

Denoで作成されたものを紹介するページが公開されました。(by hashrockさん)

Denoで何か作成されているものなどがありましたら、こちらから紹介いただけるとよいかもしれません。