着想から13年、Googleから5倍早いGNUリンカの新実装が登場

面白かったので言及してみる。ちなみにまだググってない。
gold: Google Releases New and Improved GCC Linker | Google Open Source Blog

Googleの中の人であるIan Lance Taylor氏が、GNUリンカを一から書き直した新実装「gold」をリリースした。既にbinutilsのHEADでは、configure時に「--enable-gold」を指定することで(従来のGNU ldに代わって)利用できるそうだ。

goldの売りは一点、高速性。氏によると、でかいC++アプリのリンクは五倍程度高速になるのを確認済らしい。またgold自体もC++で書かれていて、5万行しかないらしい。これってかなり小さいですよね?

ただし現在、goldが使える環境はELF+x86/x64のみだそうだ。その点まだ未熟だが、当然Google社内での利用を経たリリースらしいので、ある程度の安定性は期待できるだろう。「すべてのフリーなプラットフォームでデフォルトのリンカにしたい」とのことなので、将来的にはELFやx86以外の環境へのport、ひいてはGNU ldの完全な置き換えも期待できる。

g++(C++)のコンパイルgcc(C)に比べて有意に遅いのはよく知られた事実だと思う。例えば先日、自分はフリーのGUI(だけじゃないけど)ツールキットのQtコンパイルしたけれど、Pentium4 2.4GHzのマシンでは「ほぼ一晩」かかった。厳密にフェアな比較ではないにせよ、似たようなライブラリであるGTK+とそれが依存するライブラリ群すべてのビルドが「2時間以内」に終わったことを考えると、やはり速度の開きを感じてしまう。(GTK+、Glib、Pangoなどなど...はすべてCで書かれている)

もちろんgoldはCにも用いられるであろうが、C++使用時の方がリンク時のコストが高いんだろうと邪推する。ビルドの全行程の中でリンクがどれだけの割合を占めるかは分からないが、速くて困る人はいない(暇つぶしのゲーム時間が少なくなること以外は)。MoziilaKDEOOoも、大きな福音と受け止めるだろう。

にしても感心してしまうのがその歳月のスケール。1992年にパッチを投げ始め、93年には一からの書き直しを議論し始めている。2006年に手をつけ始めるまで、構想13年。そして今年のリリース。
その継続された努力と情熱にはほんとに頭が下がりますです。今日からおいそれとすぐ実行できる長さの話ではないけれど、見習いたいものです。