Rilascio del linker Mold 1.1, sviluppato da LLVM lld

È stata pubblicata una versione del linker Mold, che può essere utilizzato come sostituto più veloce e trasparente del linker GNU sui sistemi Linux. Il progetto è sviluppato dall'autore del linker LLVM lld. Una caratteristica chiave di Mold è l'altissima velocità di collegamento dei file oggetto, notevolmente superiore rispetto ai linker GNU gold e LLVM lld (il collegamento in Mold viene eseguito a una velocità solo la metà della semplice copia dei file con l'utilità cp). Il codice è scritto in C++ (C++20) e distribuito sotto la licenza AGPLv3.

Nella nuova versione:

  • Aggiunto supporto per l'ottimizzazione in fase di collegamento (LTO, Link Time Optimization). Le ottimizzazioni LTO differiscono prendendo in considerazione lo stato di tutti i file coinvolti nel processo di creazione, mentre le modalità di ottimizzazione tradizionali ottimizzano ciascun file separatamente e non tengono conto delle condizioni per chiamare le funzioni definite in altri file. Mentre in precedenza, quando venivano trovati file di codice intermedio (IR) GCC o LLVM, venivano chiamati i corrispondenti linker ld.bfd o ld.lld, ora Mold elabora i file IR in modo indipendente e utilizza l'API Linker Plugin, utilizzata anche in GNU ld e GNU linker d'oro. Quando abilitato, LTO è solo leggermente più veloce rispetto ad altri linker perché la maggior parte del tempo viene dedicato all'ottimizzazione del codice anziché al collegamento.
  • Aggiunto supporto per l'architettura RISC-V (RV64) sulle piattaforme host e di destinazione.
  • Aggiunta l'opzione "--emit-relocs" per abilitare la copia delle sezioni di riposizionamento dai file di input ai file di output per la successiva applicazione delle ottimizzazioni nella fase successiva al collegamento.
  • Aggiunta l'opzione "--shuffle-sections" per randomizzare l'ordine delle sezioni prima di fissarne gli indirizzi nello spazio degli indirizzi virtuali.
  • Aggiunte le opzioni “--print-dependencies” e “--print-dependencies=full” per produrre in formato CSV le informazioni sulle dipendenze tra i file di input, che, ad esempio, possono essere utilizzate per analizzare i motivi della connessione quando si collegano determinati file oggetto o quando si esegue il lavoro di minimizzazione delle dipendenze tra file.
  • Aggiunte le opzioni "--warn-once" e "--warn-textrel".
  • Rimossa la dipendenza da libxxhash.

Fonte: opennet.ru

Aggiungi un commento