Prima versione stabile di u Mold builder sviluppatu da LLVM lld

Rui Ueyama, autore di u linker LLVM lld è u compilatore chibicc, hà prisentatu a prima liberazione stabile di u novu linker Mold d'altu rendiment, chì hè notevolmente davanti à i linkers GNU gold è LLVM lld in quantu à a velocità di cunnessione di u file d'ughjettu. U prughjettu hè cunsideratu prontu per implementazioni di produzzione è pò esse usatu cum'è un sustitutu trasparente più veloce per u linker GNU in sistemi Linux. I piani per a prossima versione maiò includenu u supportu per a piattaforma macOS à a preparazione, dopu chì u travagliu principiarà per adattà Mold per Windows.

U Mold hè scrittu in C ++ (C ++ 20) è distribuitu sottu a licenza AGPLv3, chì hè conforme à GPLv3 ma micca conforme à GPLv2, postu chì esige cambiamenti per esse aperti durante u sviluppu di servizii di rete. Questa scelta hè dovuta à u desideriu di ottene u finanziamentu di u sviluppu - l'autore hè dispostu à vende i diritti à u codice per a rilicenza sottu una licenza permissiva, cum'è MIT, o furnisce una licenza cummerciale separata per quelli chì ùn sò micca soddisfatti di l'AGPL.

Mold supporta tutte e funzioni di u linker GNU è hè assai veloce, liendu solu à a mità di a velocità di simplificà a copia di i schedari cù cp. Per esempiu, quandu si custruisce Chrome 96 (taglia di codice 1.89 GB), ci vole 8 seconde per custruisce c debuginfo eseguibili in un computer 53-core cù GNU gold, 11.7 seconde per LLVM lld, è solu 2.2 seconde per Mold (26 volte più veloce di GNU gold). Quandu ligami Clang 13 (3.18 GB), GNU gold dura 64 seconde, LLVM lld dura 5.8 seconde, è Mold dura 2.9 seconde. Quandu ligami Firefox 89 (1.64 GB), GNU gold dura 32.9 seconde, LLVM lld dura 6.8 seconde, è Mold dura 1.4 seconde.

Prima versione stabile di u Mold builder sviluppatu da LLVM lld

A riduzione di u tempu di ligame pò migliurà assai l'usabilità di sviluppà grandi prughjetti riducendu l'attesa in u prucessu di generazione di fugliali eseguibili durante a debugging è a prova di cambiamenti. U moldu hè statu motivatu da u fastidiu di avè da aspittà chì u ligame sia cumpletu dopu à ogni cambiamentu di u codice, è ancu u scarsu rendimentu di ligami esistenti in sistemi multi-core, è u desideriu di pruvà una architettura di ligame fundamentalmente diversa senza ricorrere inutilmente. mudelli cumplicati, cum'è ligami incrementali.

L'alta prestazione di ligà un schedariu eseguibile da un gran numaru di fugliali d'ughjettu preparati da u compilatore in Mold hè ottenuta utilizendu algoritmi più veloci, parallelisendu attivamente l'operazioni trà i nuclei di CPU dispunibili, è utilizendu strutture di dati più efficaci. Per esempiu, Mold implementa a tecnica di eseguisce calculi intensivi simultaneamente cù a copia di i fugliali, prefetching i fugliali di l'ughjettu in memoria, utilizendu tavule di hash veloci quandu risolve i caratteri, scanning tables di trasferimentu in un filu separatu, è deduplicating rùbbriche fusioni ripetute in diversi schedari.

Source: opennet.ru

Add a comment