Rui Ueyama، نویسنده پیوند دهنده LLVM lld و کامپایلر chibicc، اولین نسخه پایدار پیوند دهنده جدید Mold با کارایی بالا را ارائه کرد که از نظر سرعت پیوند فایل شی به طرز قابل توجهی از پیوند دهنده طلایی GNU و LLVM lld جلوتر است. این پروژه برای استقرار تولید آماده در نظر گرفته می شود و می تواند به عنوان یک جایگزین شفاف سریعتر برای پیوند دهنده گنو در سیستم های لینوکس استفاده شود. برنامههایی برای نسخه اصلی بعدی شامل آمادهسازی پشتیبانی از پلتفرم macOS است که پس از آن کار روی تطبیق Mold برای ویندوز آغاز میشود.
قالب به زبان C++ (C++20) نوشته شده و تحت مجوز AGPLv3 توزیع میشود، که با GPLv3 سازگار است اما با GPLv2 سازگار نیست، زیرا نیاز به باز شدن تغییرات در هنگام توسعه خدمات شبکه دارد. این انتخاب به دلیل تمایل به دریافت بودجه توسعه است - نویسنده مایل است حقوق کد برای مجوز مجدد را تحت یک مجوز مجاز مانند MIT بفروشد یا یک مجوز تجاری جداگانه برای کسانی که از AGPL راضی نیستند ارائه دهد.
Mold از تمام ویژگیهای پیوند دهنده گنو پشتیبانی میکند و بسیار سریع است و تنها با نیمی از سرعت کپی کردن فایلها با cp، پیوند میدهد. به عنوان مثال، هنگام ساخت کروم 96 (اندازه کد 1.89 گیگابایت)، ساخت فایلهای اجرایی c debuginfo بر روی یک کامپیوتر 8 هستهای با استفاده از GNU gold 53 ثانیه، برای LLVM lld 11.7 ثانیه و برای Mold فقط 2.2 ثانیه طول میکشد (26 برابر سریعتر از طلای گنو). هنگام پیوند Clang 13 (3.18 گیگابایت)، طلای GNU 64 ثانیه، LLVM lld 5.8 ثانیه و Mold 2.9 ثانیه طول می کشد. هنگام پیوند دادن فایرفاکس 89 (1.64 گیگابایت)، طلای GNU 32.9 ثانیه، LLVM lld 6.8 ثانیه و Mold 1.4 ثانیه طول می کشد.
کاهش زمان لینک می تواند تا حد زیادی قابلیت استفاده در توسعه پروژه های بزرگ را با کاهش انتظار در فرآیند تولید فایل های اجرایی در حین اشکال زدایی و آزمایش تغییرات بهبود بخشد. انگیزه قالب آزاردهنده بودن منتظر ماندن برای تکمیل پیوند پس از هر تغییر در کد، و همچنین عملکرد ضعیف پیونددهندههای موجود در سیستمهای چند هستهای، و تمایل به امتحان یک معماری پیوندی اساساً متفاوت بدون توسل به غیر ضروری بود. مدل های پیچیده، مانند پیوند افزایشی.
کارایی بالای پیوند یک فایل اجرایی از تعداد زیادی فایل شی تهیه شده توسط کامپایلر در قالب با استفاده از الگوریتم های سریع تر، موازی سازی فعالانه عملیات بین هسته های CPU موجود و استفاده از ساختارهای داده کارآمدتر به دست می آید. به عنوان مثال، Mold تکنیک انجام محاسبات فشرده را همزمان با کپی کردن فایل ها، واکشی اولیه فایل های شی در حافظه، استفاده از جداول هش سریع هنگام حل کاراکترها، اسکن جداول جابجایی در یک رشته جداگانه، و حذف مجدد بخش های ادغام شده در فایل های مختلف اجرا می کند.
منبع: opennet.ru