はじめに
昨今JavaScriptランタイムがいくつか出てきており、それぞれ違いがあるので、まとめてみることにする
この手の解説は、図にするがベストなので余裕があるときにやります、、
古川さんの資料が本当に分かりやすく。その引用ばかりになります。。ご了承ください。
前提
JavaScriptエンジン
- V8
- JavaScriptCore(Nitro)
JITコンパイラ
JITコンパイルは、プログラム実行時にソースコードや中間コードをbytecodeへ変換します。1行1行実行するインタプリタと比較して、コンパイル時のオーバーヘッドがあるが、実行時の速度が速い。
V8はインタプリタを使わず、JITコンパイラでJavaScriptをより効率が良い機械語に変換します。
言語処理方法
- Tokenize(ソースコードから、Token)
- Parse(Tokenから、AST)
- Compile(ASTから、Byte Code)
- Byte Codeから機械語
英語 | 日本語 |
---|---|
Tokenize | 字句解析 |
Parse | 構文解析 |
Token | トークン列 |
AST | 抽象構文木 |
Node.js
構成
Bun
構成
参考
JavaScriptエンジンでの処理を理解する
Bunファーストインプレッション - JavaScriptランタイム界に”赤壁の戦い”を!
Bun first impressions