萌えハッカーニュースリーダー

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

出典: https://zackoverflow.dev/writing/i-spent-181-minutes-waiting-for-the-zig-compiler-this-week/
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

まさか!コンパイルが終わるのを夢見ていたのかも…って、夢オチかーい!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search