LLVM lld によって開発された、Mold リンカーの最初の安定リリース

LLVM lld リンカーと chibicc コンパイラーの作者である Rui Moeyama 氏は、新しい高性能 Mold リンカーの最初の安定版リリースを発表しました。このリンカーは、オブジェクト ファイルのリンク速度が GNU gold リンカーや LLVM lld リンカーよりも著しく高速です。 このプロジェクトは実稼働実装の準備ができていると考えられており、Linux システム上の GNU リンカーのより高速で透過的な代替として使用できます。 次のメジャー リリースの計画には、macOS プラットフォームのサポートを完了することが含まれており、その後、Mold を Windows に適応させる作業が開始されます。

Mold は C++ (C++20) で書かれており、AGPLv3 に基づいてライセンスされています。AGPLv3 は GPLv2 と互換性がありますが、ネットワーク サービスの開発時にオープンな変更が必要なため、GPLvXNUMX とは互換性がありません。 この選択は、開発資金を獲得したいという願望によって説明されます。作者は、MIT などの寛容なライセンスの下で再ライセンスするためにコードの権利を販売するか、AGPL に満足できない人のために別の商用ライセンスを提供するつもりです。

Mold は GNU リンカーのすべての機能をサポートしており、非常に高いパフォーマンスを備えています。リンクは、単に cp ユーティリティを使用してファイルをコピーする場合の半分の速度で実行されます。 たとえば、Chrome 96 (コード サイズ 1.89 GB) をビルドする場合、GNU gold を使用する 8 コア コンピューター上で実行可能ファイルを debuginfo にリンクするのにかかる時間は 53 秒、LLVM lld では 11.7 秒、Mold ではわずか 2.2 秒です (Mold の 26 倍高速です)。 GNU ゴールド) 。 Clang 13 (3.18 GB) をリンクする場合、GNU gold では 64 秒、LLVM lld では 5.8 秒、Mold では 2.9 秒かかります。 Firefox 89 (1.64 GB) をビルドする場合、GNU gold では 32.9 秒、LLVM lld では 6.8 秒、Mold では 1.4 秒かかります。

LLVM lld によって開発された、Mold リンカーの最初の安定リリース

ビルド時間を短縮すると、変更のデバッグやテスト時に実行可能ファイルを生成するプロセスの待ち時間が短縮され、大規模プロジェクトの開発の利便性が大幅に向上します。 Mold を作成する動機は、コードを変更するたびにリンクが完了するまで待たなければならないことへのフラストレーション、マルチコア システム上の既存のリンカーのパフォーマンスの低下、および過度に複雑なモデルに頼らずに根本的に異なるリンク アーキテクチャを試したいという願望でした。インクリメンタルリンクとして。

Mold でコンパイラが準備した多数のオブジェクト ファイルから実行可能ファイルをリンクする際の高いパフォーマンスは、より高速なアルゴリズム、利用可能な CPU コア間での操作のアクティブな並列化、およびより効率的なデータ構造の使用によって実現されます。 たとえば、Mold は、ファイルのコピー中に集中的な計算を実行する技術、メモリへのオブジェクト ファイルの事前ロード、文字解決のための高速ハッシュ テーブルの使用、別のスレッドでの再配置テーブルのスキャン、異なるファイル間で繰り返されるマージされたセクションの重複排除などの技術を実装しています。

出所: オープンネット.ru

コメントを追加します