Nova - Rustで書かれたJavaScript & WebAssemblyエンジン
(github.com/trynova)- Novaは、データ指向設計を特徴とするJavaScriptエンジンで、性能とキャッシュ効率を最大化するために考案された構造を採用している
- メモリ脆弱性の防止と性能最適化を同時に追求
- 主な特徴:
- JavaScriptヒープに割り当てられたすべてのデータは、型ごとのベクターに保存される(数値は数値ベクター、文字列は文字列ベクターなど)。
- ヒープ参照は型に応じて区別されたインデックスとして処理され、これによりメモリ安全性とサイズ効率が得られる。
- オブジェクトは型ごとに分けてベクターに保存される(通常のオブジェクト、配列、DataViewなど)。
- 非通常オブジェクトは、必要な場合にのみ通常オブジェクトのデータを参照するよう設計されている。
- オブジェクトは、使われないデータの読み取りを避けるため、積極的に分離して保存される。
- まだ開発中。エンジンの機能は非常に限定的で、test262テストスイートの約47%しか通過していない
1件のコメント
Hacker Newsの意見
function X(a) { this.a = a; }とfunction Y(b) { this.b = b; }は異なる種類のオブジェクトと見なされるのか気になる{a: 1}と{b: 2}は異なる種類のオブジェクトと見なされるのか気になる