Mold 1.1 è già stato rilasciato, conoscete le novità di questo moderno Linker superiore a GNU gold e LLVM

Diversi giorni fa è stato annunciato il rilascio della nuova versione del moderno Linker Mold 1.1, che può essere utilizzato come sostituto trasparente più veloce del linker GNU su sistemi Linux.

In questa nuova versione dello stampo 1.1 c'è una versione che contiene nuove funzionalità, correzioni di bug e miglioramenti delle prestazioni.

Informazioni sulla muffa

Muffa supporta tutte le funzionalità del linker GNU e ha prestazioni molto elevate, poiché i collegamenti che crea sono solo due volte più veloci della semplice copia di file con l'utility cp.

In questo modo il file ridurre i tempi di compilazione migliora significativamente la comodità di sviluppare progetti di grandi dimensioni riducendo il tempo di attesa nel processo di generazione del file eseguibile durante il debug e il test delle modifiche.

La motivazione per la creazione di Mold era il fastidio di dover attendere il completamento del collegamento dopo ogni modifica del codice, così come la bassa efficienza dei linker esistenti nei sistemi multicore e il desiderio di testare un'architettura di collegamento fondamentalmente diversa senza ricorrere a modelli inutilmente complicati come il collegamento incrementale.

Le elevate prestazioni di collegamento di un file eseguibile da un gran numero di file oggetto preparati dal compilatore in Mold si ottengono attraverso l'uso di algoritmi più veloci, la parallelizzazione attiva delle operazioni tra i core CPU disponibili e l'uso di strutture dati più efficienti.

Ad esempio, Mold implementa una tecnica per eseguire calcoli intensivi contemporaneamente con la copia di file, il caricamento proattivo dei file oggetto in memoria, l'utilizzo di tabelle hash veloci durante la risoluzione dei caratteri, scansione delle tabelle di trasferimento in un flusso separato e sezioni di deduplicazione che si ripetono in file diversi.

Principali novità di Mold 1.1

In questa nuova versione dello Mold 1.1 che viene presentata, si evidenzia che il supporto per l'ottimizzazione della fase di collegamento (LTO, ottimizzazione del tempo di collegamento).

Le ottimizzazioni LTO differiscono tenendo conto dello stato di tutti i file coinvolti nel processo di compilazione, mentre le modalità di ottimizzazione tradizionali ottimizzano ogni file individualmente e non tengono conto delle condizioni per chiamare le funzioni definite in altri file.

In precedenza, quando venivano rilevati file di codice intermedio (IR) GCC o LLVM, venivano richiamati i linker ld.bfd o ld.lld appropriati, ma ora Mold gestisce i file IR da solo e utilizza l'API del plug-in Linker, utilizzata anche in GNU ld e Linker oro GNU. La velocità quando LTO è abilitato è solo marginalmente più veloce di altri linker, poiché la maggior parte del tempo viene speso per ottimizzare il codice, non per il collegamento.

Si evidenzia anche questo opzioni aggiunte “–print-dipendenze” e “–print-dipendenze=completo” pPer generare informazioni in formato CSV sulle dipendenze tra file di input, che possono, ad esempio, essere utilizzati per analizzare i motivi di connessione quando si collegano determinati file oggetto o mentre si lavora per ridurre al minimo le dipendenze tra file.

Un altro cambiamento che si distingue dalla nuova eversione è che il supporto per architettura RISC-V (RV64) sulle piattaforme host e target.

Oltre a ciò, possiamo anche scoprire che aggiunta l'opzione "–emit-relocs" per abilitare la copia delle sezioni di riposizionamento degli indirizzi dai file di input ai file finali per ulteriori ottimizzazioni da applicare nella fase di post-link.

Tra le altre modifiche che si distinguono:

  • Aggiunta l'opzione "–shuffle-sections" per randomizzare l'ordine delle sezioni prima di correggere i loro indirizzi nello spazio degli indirizzi virtuali.
  • Aggiunte le opzioni “–warn-once” e “–warn-textrel”.
  • Rimossa la dipendenza da libxxhash.

Infine se sei interessato a saperne di più, puoi controllare i dettagli nel file seguente link

Come installare lo stampo?

Per coloro che sono interessati a poter lavorare con Mold, possono ottenere l'utilità scaricando e compilando il codice sorgente. Per fare ciò, apri semplicemente un terminale e digita quanto segue:

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

Per conoscere l'uso di Mold, puoi consultare la documentazione in questo link


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.