Mold 3.0リンカーがリリースされ、GNUリンカーのより高速で透過的な代替手段として使用できます。 Linux-システム。このプロジェクトは、LLVM lldリンカーの作者である上山ルイ氏によって開発されています。Moldの最大の特長は、極めて高速なリンク速度です。GNU goldリンカーやLLVM lldリンカーを大幅に凌駕し、(Moldでのリンク速度は、cpユーティリティでファイルをコピーする速度のわずか半分です)。コードはRustで記述され、MITライセンスの下で配布されています。
リンク時間を短縮することで、デバッグや変更テスト中の実行可能ファイル生成時の待ち時間を短縮し、大規模プロジェクトの使いやすさを大幅に向上させることができます。Moldの開発動機は、コード変更のたびにリンク完了を待たなければならないことへの不満、マルチコアシステムにおける既存リンカーのパフォーマンスの低さ、そしてインクリメンタルリンクのような過度に複雑なモデルに頼ることなく、根本的に異なるリンクアーキテクチャを試したいという願望から生まれました。
Mold でコンパイラが準備した多数のオブジェクト ファイルから実行可能ファイルをリンクする際の高いパフォーマンスは、より高速なアルゴリズム、利用可能な CPU コア間での操作のアクティブな並列化、およびより効率的なデータ構造の使用によって実現されます。たとえば、Mold は、ファイルのコピー中に集中的な計算を実行する技術、メモリへのオブジェクト ファイルの事前ロード、文字解決のための高速ハッシュ テーブルの使用、別のスレッドでの再配置テーブルのスキャン、異なるファイル間で繰り返されるマージされたセクションの重複排除などの技術を実装しています。
Mold 3.0 ブランチは、コードベースを C++ (C++20) から Rust に書き換えた点が特筆すべきです。Mold 3.0 は、最後の C++ リリースである Mold 2.42.1 の透過的な代替として使用でき、以前利用可能だったすべてのオプションとターゲットアーキテクチャをサポートします。Rust への移行により、破損したオブジェクトファイルを処理する際に発生する可能性のある問題からプロジェクトを保護できるようになりました。C++ バージョンでは境界外アクセスによってクラッシュした場合でも、Rust 実装では境界チェックの段階で処理が停止します。Rust 実装のパフォーマンスは C++ バージョンと同等です。
Rustへの移行に加えて、3.0ブランチの開発における重要な目標は、GNU ldとの互換性を向上させ、ディストリビューションにおけるデフォルトのリンカーとしてプロジェクトを使用できるように準備することでした。 LinuxビルドシステムはCargoに、テストシステムはctestに代わってcargo testに置き換えられました。oneTBBライブラリは依存関係から削除されました。
出所: オープンネット.ru
