Deno v1.26.2

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

サブプロセス関連のAPIやnpmサポートの改善、fetch()の互換性の向上などが実施されています。

Deno.SpawnOptionswindowsRawArgumentsオプションがサポート

Windows上でこのオプションにtrueを指定すると、コマンドライン引数のクォーテーションの付与とエスケープがスキップされます。

const { success, stdout } = await Deno.spawn(cmd, {
  args,
  windowsRawArguments: true,
});

この機能は、後述するdeno_std v0.160.0におけるwindowsVerbatimArgumentsの実装に利用されています。

npmサポートの改善

dist-tagがサポートされています。

例)

import ts from "npm:typescript@next";

その他の改善として、npmレジストリからのパッケージ情報のダウンロード処理が並列化されています。

Fetch APIの互換性の向上

Fetch Standardとの互換性の改善が実施されています。

例)

  • Headersで不正な形式のヘッダを連続で解析すると、二度目以降の解析時にエラーが発生しない問題が修正
  • fetch()の呼び出し時にRangeヘッダが指定された際は、Accept-Encoding: identityが自動で設定されるように修正
  • ResponseRequestに空のFormDataを渡せるように改善
  • Responseに設定したReadableStreamから非Uint8Array型のチャンクが読み込まれた際は、TypeErrorが発生するように修正
  • レスポンスボディがContent-Lengthを超過した際などにTypeErrorが発生するように修正

それ以外にもCache APIやWeb Streams APIなどでも互換性の向上が実施されています。

その他の変更点

  • deno taskでのスクリプト実行時にINIT_CWD環境変数が設定されるように修正 (npm runとの互換性の向上が目的のようです)
  • deno.json(c)importMapオプションにリモートURLを指定できるように改善
  • deno lspでの補完時に、スニペットが適切に取り扱われるように修正
  • コンパイル対象ファイルの名前が@で始まるときに、deno compileがパニックする問題が修正

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

deno_std v0.160.0

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

このリリースではstd/nodeのNode.js互換性の向上が実施されています。

変更点:

  • std/node/readline/promisesが実装
  • std/node/child_process: windowsVerbatimArgumentsオプションがサポート
  • std/node/fs: Windowsでfs.access()が失敗する問題が修正
  • std/node/fs: fs.Dirでディレクトリエントリを読み込んだ際に、 Deno.DirEntryではなくfs.Direntが返却されるように修正されています

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

Prisma v4.5.0

Prisma v4.5.0で、Denoの初期サポートが追加されました。

これにより、Prisma CLIやPrisma ClientをDenoで動かすことができるようになりました。

このリリースに合わせて、公式ドキュメントでDeno Deployへのデプロイガイドが公開されています。

制限として、現在ではPrisma Data Proxy経由でのデータベース接続のみがサポートされています。

また、PrismaにおけるDenoサポートは、まだプレビュー機能という位置づけのため、本格的な使用にはまだ注意が必要かもしれません。


Nuxt 3でのDenoサポート

Nuxt 3のサーバエンジンであるNitroでDeno presetの実装が進んでいるようです。

feat: add deno presets and entries (unjs/nitro#592)

これが実装されれば、Nuxt 3で開発されたアリケーションをDeno Deploy上などで動かせるようになりそうです。