Prima versiune stabilă a Mold builder dezvoltat de LLVM lld

Rui Ueyama, autorul linker-ului LLVM lld și al compilatorului chibicc, a prezentat prima lansare stabilă a noului linker Mold de înaltă performanță, care este vizibil mai rapid decât linkerii GNU gold și LLVM lld în viteza de conectare a fișierelor obiect. Proiectul este considerat gata pentru implementarea în producție și poate fi folosit ca un înlocuitor mai rapid și transparent pentru linkerul GNU pe sistemele Linux. Planurile pentru următoarea versiune majoră includ finalizarea suportului pentru platforma macOS, după care vor începe lucrările de adaptare a Mold for Windows.

Mold este scris în C++ (C++20) și este licențiat sub AGPLv3, care este compatibil cu GPLv3, dar nu este compatibil cu GPLv2, deoarece necesită modificări deschise la dezvoltarea serviciilor de rețea. Această alegere se explică prin dorința de a obține finanțare pentru dezvoltare - autorul este dispus să vândă drepturile asupra codului pentru relicențiere sub o licență permisivă, cum ar fi MIT, sau să ofere o licență comercială separată pentru cei care nu sunt mulțumiți de AGPL.

Mold acceptă toate caracteristicile linker-ului GNU și are performanțe foarte înalte - conectarea se realizează la o viteză doar la jumătate mai rapidă decât simpla copiere a fișierelor cu utilitarul cp. De exemplu, la construirea Chrome 96 (dimensiunea codului 1.89 GB), este nevoie de 8 de secunde pentru a conecta fișierele executabile cu informațiile de depanare pe un computer cu 53 nuclee folosind GNU gold, LLVM lld - 11.7 secunde și Mold doar 2.2 secunde (de 26 de ori mai rapid decât GNU gold) . Când conectați Clang 13 (3.18 GB), durează 64 de secunde în GNU gold, 5.8 secunde în LLVM lld și 2.9 secunde în Mold. Când construiți Firefox 89 (1.64 GB), durează 32.9 secunde în GNU gold, 6.8 secunde în LLVM lld și 1.4 secunde în Mold.

Prima versiune stabilă a Mold builder dezvoltat de LLVM lld

Reducerea timpului de construire poate îmbunătăți semnificativ comoditatea dezvoltării proiectelor mari prin reducerea așteptării în procesul de generare a fișierelor executabile la depanarea și testarea modificărilor. Motivația pentru crearea Moldului a fost frustrarea de a aștepta finalizarea conexiunii după fiecare schimbare de cod, performanța slabă a linkerelor existente pe sisteme multi-core și dorința de a încerca o arhitectură de legătură fundamental diferită, fără a recurge la modele prea complicate, cum ar fi ca legătură incrementală.

Performanța ridicată a legăturii unui fișier executabil dintr-un număr mare de fișiere obiect pregătite de compilator în Mold este obținută prin utilizarea unor algoritmi mai rapizi, paralelizarea activă a operațiunilor între nucleele CPU disponibile și utilizarea unor structuri de date mai eficiente. De exemplu, Mold implementează tehnici pentru efectuarea de calcule intensive în timpul copierii fișierelor, preîncărcarea fișierelor obiect în memorie, utilizarea tabelelor hash rapide pentru rezoluția caracterelor, scanarea tabelelor de relocare într-un fir separat și deduplicarea secțiunilor îmbinate care sunt repetate în diferite fișiere.

Sursa: opennet.ru

Adauga un comentariu