ziglang/zig
5 articles
前提知識
- ›Zig言語の基本知識(comptime、@import、エラーユニオン、packed struct)
- ›コンパイラの基本概念に関する一般的な理解(字句解析、構文解析、IR、コード生成)
01
Zigコンパイラのアーキテクチャ:コードベースを読むための地図
Zigコンパイラのアーキテクチャ、ディレクトリ構造、コンパイルパイプラインを俯瞰し、中核となる構造体・IRチェーン・ブートストラッププロセスを解説します。
02
ソースコードからZIRへ:Zigコンパイラのフロントエンド
トークナイザ、再帰降下パーサ、そしてAstGenフェーズを深掘りし、Zigのソースコードを型なし中間表現であるZIRへ変換する仕組みを解説します。
03
意味解析と InternPool:コンパイラの心臓部
コンパイラ最大のファイルである Sema.zig を解説します。ZIR を型付きの AIR へと変換する仕組みと、すべての型・値を u32 インデックスとして格納する InternPool の設計を掘り下げます。
04
コード生成とリンク: AIR からバイナリへ
AIR がバックエンド固有の MIR を経由してマシンコードへと変換される仕組みと、セルフホスト型リンカーが最終バイナリを組み立てるプロセスを解説します。
05
コンパイルのオーケストレーション、キャッシュ、インクリメンタルコンパイル
Compilation.update() ループ、3つのキャッシュモード、InternPool の依存関係追跡、PerThread スレッディングモデル、そしてマルチステージブートストラップ。