LLVM lld tərəfindən hazırlanmış Kalıp qurucusunun ilk stabil buraxılışı

LLVM lld əlaqələndiricisinin və chibicc kompilyatorunun müəllifi Rui Ueyama, obyekt fayllarını əlaqələndirmə sürəti baxımından GNU qızıl və LLVM lld bağlayıcılarını nəzərəçarpacaq dərəcədə qabaqlayan yeni yüksək performanslı Kalıp bağlayıcısının ilk stabil buraxılışını təqdim etdi. Layihə istehsal yerləşdirməyə hazır hesab edilir və Linux sistemlərində GNU linkerinin daha sürətli şəffaf əvəzi kimi istifadə edilə bilər. Növbəti əsas buraxılış üçün planlara macOS platforması üçün dəstəyin hazır vəziyyətə gətirilməsi daxildir, bundan sonra Mold-un Windows üçün uyğunlaşdırılması üzrə işlərə başlanacaq.

Kalıp C++ (C++20) dilində yazılmışdır və şəbəkə xidmətlərini inkişaf etdirərkən dəyişikliklərin açılmasını tələb etdiyi üçün GPLv3-ə uyğun, lakin GPLv3-yə uyğun olmayan AGPLv2 lisenziyası altında paylanmışdır. Bu seçim inkişaf üçün maliyyə vəsaiti əldə etmək istəyi ilə bağlıdır - müəllif MIT kimi icazə verilən lisenziya əsasında yenidən lisenziyalaşdırma koduna hüquqlarını satmağa və ya AGPL-dən razı olmayanlar üçün ayrıca kommersiya lisenziyası verməyə hazırdır.

Kalıp GNU bağlayıcısının bütün xüsusiyyətlərini dəstəkləyir və çox sürətlidir, sadəcə cp ilə faylların surətini çıxarmağın yalnız yarısı sürətində əlaqələndirir. Məsələn, Chrome 96 (kod ölçüsü 1.89 GB) qurarkən, GNU gold istifadə edərək 8 nüvəli kompüterdə c debuginfo icra edilə bilən faylları qurmaq 53 saniyə, LLVM lld üçün 11.7 saniyə, Mold üçün isə cəmi 2.2 saniyə çəkir (kökdən 26 dəfə daha sürətli). GNU qızılı). Clang 13-ü (3.18 GB) birləşdirərkən GNU gold 64 saniyə, LLVM lld 5.8 saniyə, Mold isə 2.9 saniyə çəkir. Firefox 89-u (1.64 GB) birləşdirərkən GNU gold 32.9 saniyə, LLVM lld 6.8 ​​saniyə, Mold isə 1.4 saniyə çəkir.

LLVM lld tərəfindən hazırlanmış Kalıp qurucusunun ilk stabil buraxılışı

Bağlantı vaxtının azaldılması, sazlama və sınaq dəyişiklikləri zamanı icra edilə bilən faylların yaradılması prosesində gözləmə müddətini azaltmaqla böyük layihələrin işlənib hazırlanmasında istifadə imkanlarını xeyli yaxşılaşdıra bilər. Kalıp, koda hər bir dəyişiklikdən sonra əlaqənin tamamlanmasını gözləmək qıcıqlanması, həmçinin çox nüvəli sistemlərdə mövcud bağlayıcıların zəif işləməsi və lazımsız yerə müraciət etmədən əsaslı şəkildə fərqli bir əlaqə arxitekturasını sınamaq istəyi ilə motivasiya edilmişdir. artan keçid kimi mürəkkəb modellər.

Kompilyator tərəfindən Mold-də hazırlanmış çoxlu sayda obyekt fayllarından icra edilə bilən faylın əlaqələndirilməsinin yüksək performansı daha sürətli alqoritmlərdən istifadə etməklə, mövcud CPU nüvələri arasında əməliyyatları aktiv şəkildə paralelləşdirməklə və daha səmərəli məlumat strukturlarından istifadə etməklə əldə edilir. Məsələn, Mold, faylların surətinin çıxarılması, obyekt fayllarının yaddaşa əvvəlcədən gətirilməsi, simvolların həlli zamanı sürətli hash cədvəllərindən istifadə, ayrıca mövzuda yerdəyişmə cədvəllərinin skan edilməsi və müxtəlif fayllarda təkrarlanan birləşdirilmiş bölmələrin təkmilləşdirilməsi ilə eyni vaxtda intensiv hesablamaların aparılması texnikasını həyata keçirir.

Mənbə: opennet.ru

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