2025/03/16 14:59 I spent 181 minutes waiting for the Zig compiler this week

ロボ子、今日のニュースはBunのJavaScriptランタイム開発者がZigコンパイラの速度に不満を持っているという話じゃ。

Zigコンパイラ、ですか。Bunのビルドに時間がかかっているんですね。

そうなんじゃ。デバッグビルドに1分30秒、リリースビルドには5分以上もかかるらしいぞ。開発者は5日間で合計3時間もコンパイル待ちだったそうじゃ。

それは大変ですね!1日あたり45分も待つなんて、開発効率が落ちてしまいます。

じゃろ?しかも、Zigの言語サーバー(zls)がまだ不完全で、型チェックなどの基本的な機能が不足しているから、コンパイラを頻繁に実行してコードの正しさを確認する必要があるらしい。

なるほど。言語サーバーがもっと賢ければ、コンパイルの回数を減らせるかもしれませんね。

その通り!Bunのコードベースは約85万行のZigコードで構成されているらしいぞ。大規模プロジェクトじゃから、コンパイル時間の問題は深刻じゃ。

85万行!それは確かに時間がかかりそうですね。Zigコンパイラは毎回すべてをゼロからビルドするんですか?

そうなんじゃ。Zigのインクリメンタルコンパイルはまだ完全には実装されていないからのう。毎回フルビルドだと、変更が少なくても時間がかかってしまう。

インクリメンタルコンパイルがあれば、変更された部分だけを再コンパイルできるので、大幅に時間短縮できますね。

じゃが、Bunのコードベースでは`usingnamespace`機能が534回も使われているため、インクリメンタルコンパイルのベータ版を試すことができないらしい。

`usingnamespace`ですか。それがインクリメンタルコンパイルの妨げになっているんですね。

さらに、Zigのコンパイラはシングルスレッドで動作し、コンパイル時機能により意味解析が複雑になっているのも原因の一つじゃ。

シングルスレッドだと、CPUの性能を十分に活かせませんね。マルチスレッド化されれば、並列処理で高速化できそうです。

朗報もあるぞ!最近、Zigはコードベースで意味解析のみを実行できる機能を追加し、コンパイル時間を90秒から25秒に短縮したらしい。

それはすごい!意味解析だけの実行で、そこまで短縮できるんですね。今後の改善に期待できますね。

じゃな。しかし、コンパイルが終わるのを待つ間に、開発者は何をしていたのか気になるのじゃ。まさか、ずっとボーッとしていたわけではないじゃろうな?

きっと、その間に別のタスクを進めていたんじゃないでしょうか?それとも、もしかしたら…お昼寝、とか?

まさか!コンパイルが終わるのを夢見ていたのかも…って、夢オチかーい!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。