Denoのロードマップ (2023年 Q1)

Denoの2023年 Q1のロードマップが公開されました。

以下のページに内容をまとめたため、よろしければ参照いただければと思います。


https://github.com/denoland/deno/issues/17475

Deno v1.29.4

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

Node-APIに関する改善

Node-APIの互換性の向上が実施されています。

  • napi_get_arraybuffer_info/napi_get_buffer_info/napi_get_typedarray_infolengthなどの各引数がNULLであった際のケースが考慮されるように挙動が改善されています。
  • napi_create_errornapi_is_error, napi_throw_errorなどのエラー関連APIの互換性が向上されています。

Flash(Deno.serve)の改善

  • Request.cloneを呼ぶと、エラーが発生する問題が修正されています。
  • リクエストメソッドがPOST/PUT/PATCHのいずれかで かつ Deno.serveに渡したハンドラでリクエストボディがconsumeされていない場合、プロセスがパニックする問題が修正されています。
  • レスポンスボディとして設定したReadableStreamからUint8Array以外の値がenqueueされた際に、Deno.serveに渡したonErrorハンドラが呼ばれず、Unhandled rejectionが発生してしまう問題が修正されています。

Deno APIに関するバグ修正

  • Deno.copyFileSyncを実行した際に、コピー先のファイルへパーミッションが受け継がれない問題が修正されています。
  • WindowsでDeno.systemMemoryInfo()を呼んだ際にswapTotalswapFreeとして返却される値の信頼性が向上されています。

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

deno_std v0.173.0

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

std/node

前回のリリースで追加されたnode:clusterがリバートされています。

Deno本体でnpm互換が有効化されている場合に、node:clusterを使っていない場合であっても、NODE_CLUSTER_SCHED_POLICYなどの環境変数に対するパーミッションが要求されてしまうためのようです。

現在、Deno本体でDeno.permissions.querySync()の実装が進められており、これが正式にサポートされたら、改めてnode:clusterを追加することが検討されているようです。

std/fs/expand_glob

expandGlob(Sync)globstarオプションのデフォルト値がfalseからtrueへ変更されました。

std/streams/text_line_stream

TextLineStreamで最後の行の後に空文字列が余分にenqueueされてしまう問題が修正されています。


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

eslint_binary

eslint_binaryという、DenoのNode.js互換性やV8 Snapshot、ESBuildなどを活用して、ESLintをシングルバイナリ化するプロジェクトが公開されています。

このプロジェクトはあくまでPoCのため、今後どうなるかはまだ不明ですが、READMEにロードマップが公開されており、ESLintのCLIをRustで書き直すことなども検討されているようです。

esm.shの2023年のロードマップ

esm.shの今年のロードマップが公開されています。

プレイグラウンドにコードの共有機能を実装することや、安定性の向上などを図ることが検討されているようです。


Gluon

Gluonという、Node.js/Deno/Bunをサポートするデスクトップアプリ用のフレームワークが開発されているようです。

Denoサポートのステータスについては、以下のissueで公開されています。


https://github.com/gluon-framework/gluon