Unang matatag na paglabas ng Mould builder na binuo ng LLVM lld

Iniharap ni Rui Ueyama, may-akda ng LLVM lld linker at chibicc compiler, ang unang stable na release ng bagong high-performance Mold linker, na kapansin-pansing nangunguna sa GNU gold at LLVM lld linker sa mga tuntunin ng bilis ng pag-link ng object file. Ang proyekto ay itinuturing na handa para sa mga pag-deploy ng produksyon at maaaring magamit bilang isang mas mabilis na transparent na kapalit para sa GNU linker sa mga Linux system. Kasama sa mga plano para sa susunod na pangunahing release ang pagdadala ng suporta para sa macOS platform sa pagiging handa, pagkatapos ay magsisimula ang trabaho sa pag-adapt ng Mold para sa Windows.

Ang amag ay nakasulat sa C++ (C++20) at ipinamahagi sa ilalim ng lisensya ng AGPLv3, na sumusunod sa GPLv3 ngunit hindi sumusunod sa GPLv2, dahil nangangailangan ito ng mga pagbabago na mabuksan kapag bumubuo ng mga serbisyo ng network. Ang pagpipiliang ito ay dahil sa pagnanais na makakuha ng pagpopondo sa pag-unlad - ang may-akda ay handa na ibenta ang mga karapatan sa code para sa muling paglilisensya sa ilalim ng isang permissive na lisensya, tulad ng MIT, o magbigay ng isang hiwalay na komersyal na lisensya para sa mga hindi nasisiyahan sa AGPL.

Sinusuportahan ng amag ang lahat ng tampok ng GNU linker at napakabilis, na nagli-link sa kalahati lamang ng bilis ng simpleng pagkopya ng mga file gamit ang cp. Halimbawa, kapag bumubuo ng Chrome 96 (laki ng code na 1.89 GB), tumatagal ng 8 segundo upang bumuo ng mga c debuginfo executable sa isang 53-core na computer gamit ang GNU gold, 11.7 segundo para sa LLVM lld, at 2.2 segundo lamang para sa Mold (26 beses na mas mabilis kaysa sa GNU ginto) . Kapag nagli-link ng Clang 13 (3.18 GB), ang GNU gold ay tumatagal ng 64 segundo, ang LLVM lld ay tumatagal ng 5.8 segundo, at ang Mould ay tumatagal ng 2.9 segundo. Kapag nagli-link ng Firefox 89 (1.64 GB), ang GNU gold ay tumatagal ng 32.9 segundo, ang LLVM lld ay tumatagal ng 6.8 segundo, at ang Mould ay tumatagal ng 1.4 na segundo.

Unang matatag na paglabas ng Mould builder na binuo ng LLVM lld

Ang pagbawas sa oras ng pag-link ay maaaring lubos na mapabuti ang kakayahang magamit ng pagbuo ng malalaking proyekto sa pamamagitan ng pagbabawas ng paghihintay sa proseso ng pagbuo ng mga maipapatupad na file sa panahon ng pag-debug at pagsubok ng mga pagbabago. Ang amag ay naudyukan ng pagkayamot sa paghihintay na makumpleto ang pag-link pagkatapos ng bawat pagbabago sa code, pati na rin ang mahinang pagganap ng mga umiiral na linker sa mga multi-core system, at ang pagnanais na subukan ang isang pangunahing naiibang arkitektura ng pag-uugnay nang hindi gumagamit ng hindi kinakailangan. mga kumplikadong modelo, tulad ng incremental linking.

Ang mataas na pagganap ng pag-link ng isang executable file mula sa isang malaking bilang ng mga object file na inihanda ng compiler sa Mould ay nakakamit sa pamamagitan ng paggamit ng mas mabilis na mga algorithm, aktibong pagpapaparallelize ng mga operasyon sa pagitan ng mga available na CPU core, at paggamit ng mas mahusay na mga istruktura ng data. Halimbawa, ipinapatupad ng Mould ang pamamaraan ng pagsasagawa ng masinsinang kalkulasyon nang sabay-sabay sa pagkopya ng mga file, pag-prefetch ng mga object file sa memorya, paggamit ng mga mabilis na hash table kapag nagre-resolve ng mga character, pag-scan ng mga relocation table sa isang hiwalay na thread, at pag-de-deduplicate ng mga pinagsama-samang seksyon na paulit-ulit sa iba't ibang file.

Pinagmulan: opennet.ru

Magdagdag ng komento