概要
- Zig 0.15.1 の登場で、コンパイル時間が大幅短縮。
- Ghosttyプロジェクト での実測値をもとに、各ビルド工程の高速化を紹介。
- まだ LLVM依存 が残るものの、今後の自前バックエンドでさらなる短縮が期待。
- インクリメンタルコンパイル の本格対応で、将来的にはミリ秒単位のビルドも現実に。
- Zigの進化が開発体験を大きく改善している現状を報告。
Zig 0.15.1によるビルド時間の劇的改善
- Andrew Kelleyの「 コンパイラが遅いからバグが増える」という発言がZig開発の原動力。
- Zigチームは LLVM排除、独自バックエンドやリンカの開発、インクリメンタルコンパイル対応などに注力。
- Zig 0.15.1 でその成果が顕著に現れ始めた。
ビルドスクリプトのコンパイル時間比較
- Zig 0.14 :7秒167ミリ秒
- Zig 0.15 :1秒702ミリ秒
zig build --help実行時の計測値。- 新規ユーザーや初回ビルド時の体感速度に直結。
Ghosttyバイナリのフルビルド時間
- Zig 0.14 :41秒
- Zig 0.15 :32秒
- ビルドスクリプトのビルド時間も含む。
- 依然として LLVM依存 だが、Zigコンパイラ自体の改善が明確。
インクリメンタルビルド(Ghostty実行ファイル)
- Zig 0.14 :19秒
- Zig 0.15 :16秒
- コア部分の1行修正後の再ビルド時間。
- 依然 LLVM利用、インクリメンタルコンパイル未対応のため再ビルド範囲は広い。
- LLVM排除時は約12秒を予想、インクリメンタル対応後は ミリ秒単位 も視野。
インクリメンタルビルド(libghostty-vt)
- Zig 0.14 :2秒884ミリ秒
- Zig 0.15 :975ミリ秒
- 1行修正後のライブラリ単体ビルド。
- 自前x86_64バックエンド でLLVM非依存。
- インクリメンタルコンパイル対応時は 1ケタミリ秒台 も期待。
- 現状でもサブセカンドでのビルドが実現。
開発体験の変化
- Zig 0.15.1移行後、 ビルドやテストの待ち時間が激減。
- 以前はビルド中に別作業をしていたが、今は シームレスな開発フロー を実感。
- x86_64バックエンド はデバッグビルドで安定、 aarch64 も進化中。
- まだGhostty全体の自前バックエンドビルドは未対応だが、数ヶ月以内の解決を予想。
今後の展望とまとめ
- Zig 0.15.1 で全てのビルドケースが高速化。
- まだ 自前バックエンド や インクリメンタルコンパイル の恩恵を最大化できていない段階。
- Zigの進化は 開発者体験の向上 に直結、今後数年で更なる高速化が見込まれる。
- 現状の改善だけでも十分に価値があり、これからの進化に大きな期待。
参考情報
- 計測は 同一x86_64 Linuxマシン で実施。
- Andrew Kelleyの発言:https://youtu.be/5eL_LcxwwHg?t=565