Deno v1.23.2

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

スレッドセーフコールバックのサポート(FFI)

例えば、メインスレッドで登録したコールバック(Deno.UnsafeCallback)をWorkerスレッドから呼び出したり、その逆にWorkerスレッドで登録したコールバックをメインスレッドから呼び出すことができるようになりました。

また、Deno.UnsafeCallbackrefunrefメソッドが実装されており、refを呼ぶことでDenoプロセスの停止を防止することができます。(Deno.refTimerなどと同様の挙動)


https://github.com/denoland/deno/pull/14942

その他の変更点

  • FFIで空のArrayBufferを渡すとプロセスパニックする問題が修正されています。
  • deno lspdeno/cacheメソッド(vscode-denoだとDeno: Cache Dependenciesコマンド)で依存関係をキャッシュした際に、TypeScriptのランゲージサービスが自動で再起動されるようになりました。
  • Deno.bench()Deno.test()を含むファイルをdeno runで実行すると、エラーが発生する問題が修正されています。

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

deno_std v0.146.0

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

collections: BSTreeRBTreeのリネーム

collectionsモジュールで提供されているBSTreeBinarySearchTreeに、RBTreeRedBlackTreeにリネームされています。

その他の変更点

  • testing/asserts: assertEqualsで同じ要素を持つSet同士を比較しているにも関わらず、例外が発生するケースがあったため、修正されています。
  • streams/delimiter: TextLineStreamで大きなチャンクを処理する際にMaximum call stack size exceededエラーが発生することがある問題が修正されました。
  • node/util: util.inspect()util.format()で6つを超える要素数の配列が正しくフォーマットされるように修正されています。

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

JITコンパイラによるFFIの最適化

Deno本体へのJITコンパイラの導入により、FFIバインディングを最適化するPRが作成されています。

perf(ext/ffi): JIT compiler for FFI (#15006)

内部的には、tinyccが使用されているようです。


https://github.com/denoland/deno/pull/15006

Fresh v1

Fresh v1.0.0がリリースされました。

これに合わせて、Freshのリポジトリがdenoland organization配下に移動されています。

また、Deno公式でFreshの紹介記事が公開されています。


https://github.com/denoland/fresh

denoland/meet-me

Deno公式で、Calendlyのクローンアプリが公開されています。

Deno Deploy+Firebase+Aleph.jsを使用して実装されているようです。