Deno v1.23.4
Deno v1.23.4がリリースされました。
V8 Fast API Calls+JITコンパイルによるFFIの最適化
V8 Fast API Callsとtinyccを使用したJITコンパイルにより、FFI(Deno.dlopen
)の最適化が行われています。
Deno.dlopen
を呼んだ際に、下記の条件が満たされる外部関数へのバインディングに対して、自動でFast API Calls+JITコンパイルによる最適化が適用されます。
- 非Windows環境であること (Windowsではまだこれらの最適化がサポートされていません)
- パラメータ及び戻り値の型にスカラ型のみが含まれる場合
もしこれらの最適化を無効化したい場合は、callback
オプションにtrue
を指定する必要があります。
const lib = Deno.dlopen(
"some_lib.so",
{
some_func: { parameters: ["usize", "usize"], result: "usize", callback: true },
}
);
細かな詳細については、deno_ffiも参照ください。
- perf(ext/ffi): leverage V8 Fast Calls #15125
- fix(ext/ffi): trampoline for fast calls #15139
- fix(ext/ffi): allow opting out of fast ffi calls #15131
その他の変更点
Request#json()
などに続けてRequest.headers
を参照するとプロセスがパニックする問題が解消されています。deno lsp
で自動importが効くようになりました。それに伴い、入力補完に関わる挙動も改善されています。
https://github.com/denoland/deno/releases/tag/v1.23.4
deno_std v0.148.0
deno_std v0.148.0がリリースされました。
std/archive/tarモジュールでTarEntry
が公開されています。
その他には、std/encoding/csv/streamモジュールのCSVStream
で読み込みをキャンセルすると、リソースリークが発生する問題が修正されています。
https://github.com/denoland/deno_std/releases/tag/0.148.0
esm.sh v87
esm.shのv87がリリースされています。
このリリースでは、?external
パラメータがサポートされています。
{
"imports": {
"preact": "https://esm.sh/preact@10.10.0",
"preact/": "https://esm.sh/preact@10.10.0/",
"preact-render-to-string": "https://esm.sh/preact-render-to-string@5.2.0?external=preact",
"swr": "https://esm.sh/swr@1.3.0?alias=react:preact/compat&external=preact/compat"
}
}
このパラメータで指定されたパッケージはバンドルされなくなるため、あるパッケージのImport mapsで指定したバージョンを読み込ませたいときなどに便利そうです。
https://github.com/ije/esm.sh/releases/tag/v87
Trex v1.12.0
Trex v1.12.0がリリースされています。
trex global-config
コマンド及びtrex.config.json
ファイルによる設定が実験的にサポートされています。
trex global-configコマンド
$ trex global-config --importMap=import-map.json
trex.config.json
{
"importMap": "import-map.json"
}
trex.config.json
による設定内容はtrex global-config
コマンドによる設定内容よりも優先されます。
今のところ、importMap
オプションによるImport mapsファイルの指定のカスタマイズのみがサポートされています。
また、trex global-config
コマンドによる設定内容はlocalStorage
に保存されるようです。