LLVM lld tərəfindən hazırlanmış Kalıp 1.1 bağlayıcının buraxılması

Linux sistemlərində GNU əlaqələndiricisinin daha sürətli, şəffaf əvəzi kimi istifadə oluna bilən Kalıp bağlayıcısının buraxılışı nəşr olundu. Layihə LLVM lld əlaqələndiricisinin müəllifi tərəfindən hazırlanmışdır. Kalıbın əsas xüsusiyyəti obyekt fayllarının əlaqələndirilməsinin çox yüksək sürətidir, GNU qızıl və LLVM lld əlaqələndiricilərini nəzərəçarpacaq dərəcədə qabaqlayır (Mold-da əlaqə cp yardım proqramı ilə sadəcə faylların surətini çıxarmaqdan yalnız yarısı sürətlə həyata keçirilir). Kod C++ (C++20) dilində yazılmışdır və AGPLv3 lisenziyası altında paylanmışdır.

Yeni versiyada:

  • Əlaqələndirmə mərhələsində optimallaşdırma üçün əlavə dəstək (LTO, Link Time Optimization). LTO optimallaşdırmaları quraşdırma prosesində iştirak edən bütün faylların vəziyyətini nəzərə almaqla fərqlənir, ənənəvi optimallaşdırma rejimləri isə hər bir faylı ayrıca optimallaşdırır və digər fayllarda müəyyən edilmiş funksiyaların çağırılması şərtlərini nəzərə almır. Əgər əvvəllər GCC və ya LLVM aralıq kod (IR) faylları tapıldıqda müvafiq ld.bfd və ya ld.lld əlaqələndiriciləri çağırılırdısa, indi Mold IR fayllarını müstəqil şəkildə emal edir və GNU ld və GNU-da da istifadə edilən Linker Plugin API-dən istifadə edir. qızıl bağlayıcılar. Aktivləşdirildikdə, LTO digər əlaqələndiricilərə nisbətən bir qədər sürətli olur, çünki vaxtın çox hissəsi əlaqələndirmək əvəzinə kod optimallaşdırmalarını yerinə yetirməyə sərf olunur.
  • Əsas və hədəf platformalarda RISC-V (RV64) arxitekturası üçün əlavə dəstək.
  • Əlaqələndirmədən sonrakı mərhələdə optimallaşdırmaların sonrakı tətbiqi üçün köçürmə bölmələrinin giriş fayllarından çıxış fayllarına köçürülməsini təmin etmək üçün “--emit-relocs” seçimi əlavə edildi.
  • Virtual ünvan məkanında ünvanlarını təyin etməzdən əvvəl bölmələrin sırasını təsadüfiləşdirmək üçün “--qarışıq bölmələr” seçimi əlavə edildi.
  • Giriş faylları arasındakı asılılıqlar haqqında məlumatı CSV formatında çıxarmaq üçün “--print-dependencies” və “--print-dependencies=full” variantları əlavə edildi, bunlardan, məsələn, müəyyən obyekt fayllarını birləşdirərkən əlaqənin səbəblərini təhlil etmək üçün istifadə edilə bilər. və ya fayllar arasında iş asılılıqlarını minimuma endirərkən.
  • "--warn-one" və "--warn-textrel" seçimləri əlavə edildi.
  • libxxhash-dan asılılıq aradan qaldırıldı.

Mənbə: opennet.ru

Добавить комментарий