Mold 1.1 a fost deja lansat, cunoașteți noutățile acestui Linker modern superior GNU gold și LLVM

Acum câteva zile a fost anunțată lansarea noii versiuni a Linker Mold 1.1 modern, care poate fi folosit ca un înlocuitor mai rapid și transparent pentru linkerul GNU pe sistemele Linux.

În această nouă versiune de matriță 1.1 este o versiune care conține funcții noi, remedieri de erori și îmbunătățiri de performanță.

Despre Mold

Mucegai acceptă toate caracteristicile linkerului GNU și are o performanță foarte mare, deoarece linkurile pe care le face sunt doar de două ori mai rapide decât simpla copiere a fișierelor cu utilitarul cp.

În acest fel reducerea timpului de compilare îmbunătățește semnificativ confortul dezvoltării proiectelor mari prin reducerea timpului de așteptare în procesul de generare a executabilului la depanarea și testarea modificărilor.

Motivația pentru crearea Moldului a fost supărarea de a trebui să aștepte ca linkul să se finalizeze după fiecare schimbare de cod, precum și eficiența scăzută a linkerelor existente în sistemele multicore și dorința de a testa o arhitectură de legături fundamental diferită, fără a recurge la modele complicate inutil, cum ar fi legătura 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 se realizează prin utilizarea unor algoritmi mai rapizi, paralelizarea activă a operațiunilor între nucleele CPU disponibile și utilizarea mai eficientă a structurilor de date.

De exemplu, Mold implementează o tehnică pentru a efectua simultan calcule intensive cu copierea fișierelor, încărcarea proactivă a fișierelor obiect în memorie, folosind tabele hash rapide la rezolvarea caracterelor, scanarea tabelelor de relocare într-un flux separat și deduplicarea secțiunilor care se repetă în fișiere diferite.

Principalele noutăți ale Mold 1.1

În această nouă versiune a Mold 1.1 care este prezentată, se evidențiază faptul că suport pentru optimizarea etapelor de legătură (LTO, Link Time Optimization).

Optimizările LTO diferă prin luarea în considerare a stării tuturor fișierelor implicate în procesul de construire, în timp ce modurile tradiționale de optimizare optimizează fiecare fișier în mod individual și nu țin cont de condițiile de apelare a funcțiilor definite în alte fișiere.

Anterior, când au fost întâlnite fișiere de cod intermediar (IR) GCC sau LLVM, erau invocate linkerii ld.bfd sau ld.lld corespunzători, dar acum Mold gestionează fișierele IR pe cont propriu și folosește API-ul plugin Linker, folosit și în GNU ld și GNU gold linkers. Viteza atunci când LTO este activată este doar puțin mai rapidă decât alte linkere, deoarece cea mai mare parte a timpului se petrece optimizând codul, nu conectând.

De asemenea, se evidențiază faptul că opțiuni adăugate „–print-dependencies” și „–print-dependencies=full” pPentru a genera informații în format CSV despre dependențe între fișierele de intrare, care pot fi utilizate, de exemplu, pentru a analiza motivele conexiunii atunci când conectați anumite fișiere obiect sau în timp ce lucrați pentru a minimiza dependențele dintre fișiere.

O altă schimbare care iese în evidență față de noua eversiune este aceea că suport pentru arhitectura RISC-V (RV64) pe platformele gazdă și țintă.

Pe lângă asta, putem găsi și asta a adăugat opțiunea „–emit-relocs” pentru a activa copierea secțiunilor de relocare a adresei de la fișierele de intrare la fișierele finale pentru optimizări ulterioare care urmează să fie aplicate în etapa post-link.

Dintre celelalte schimbări care se remarcă:

  • A fost adăugată opțiunea „–shuffle-sections” pentru a randomiza ordinea secțiunilor înainte de a le fixa adresele în spațiul de adrese virtuale.
  • S-au adăugat opțiunile „–warn-once” și „–warn-textrel”.
  • S-a eliminat dependența de libxxhash.

În cele din urmă dacă sunteți interesat să aflați mai multe despre asta, puteți verifica detaliile în următorul link.

Cum se instalează Mould?

Pentru cei care sunt interesați să poată lucra cu Mold, pot obține utilitarul prin descărcarea și compilarea codului sursă. Pentru a face acest lucru, pur și simplu deschideți un terminal și tastați următoarele:

git clone https://github.com/rui314/mold.git
cd mold
git checkout v1.1.1
make -j$(nproc) CXX=clang++
sudo make install

Pentru a cunoaște utilizarea Moldului, puteți consulta documentația în acest link.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.