Rui Ueyama, автор компоновщика LLVM lld и компилятора chibicc, представил первый стабильный релиз нового высокопроизводительного компоновщика Mold, заметно опережающего по скорости связывания объектных файлов компоновщики GNU gold и LLVM lld. Проект признан готовым для рабочих внедрений и может применяться в качестве более быстрой прозрачной замены GNU linker на Linux-системах. Из планов на следующий значительный выпуск отмечается доведение до готовности поддержки платформы macOS, после чего начнётся работа по адаптации Mold для Windows.
Kapang ditulis dina C ++ (C ++ 20) sarta dilisensikeun dina AGPLv3, nu cocog sareng GPLv3, tapi teu cocog sareng GPLv2, sabab merlukeun parobahan kabuka nalika ngamekarkeun jasa jaringan. Pilihan ieu dipedar ku kahayang pikeun ménta waragad pangwangunan - panulis daék ngajual hak kana kode pikeun relicensing dina lisénsi permisif, kayaning MIT, atawa nyadiakeun lisénsi komérsial misah pikeun maranéhanana anu teu wareg jeung AGPL.
Kapang ngarojong sagala fitur tina linker GNU sarta boga kinerja kacida luhurna - linking dipigawé dina speed ngan satengah gancang ti saukur nyalin file kalawan utilitas cp. Salaku conto, nalika ngawangun Chrome 96 (ukuran kode 1.89 GB), peryogi 8 detik pikeun ngaitkeun file anu tiasa dieksekusi sareng debuginfo dina komputer 53-inti nganggo emas GNU, LLVM lld - 11.7 detik, sareng Mold ngan ukur 2.2 detik (26 kali langkung gancang tibatan). GNU emas). Nalika nyambungkeun Clang 13 (3.18 GB), butuh 64 detik dina emas GNU, 5.8 detik dina LLVM lld, sareng 2.9 detik dina Mold. Nalika ngawangun Firefox 89 (1.64 GB), butuh 32.9 detik dina emas GNU, 6.8 detik dina LLVM lld, sareng 1.4 detik dina Mold.

Ngurangan waktos ngawangun tiasa sacara signifikan ningkatkeun genah ngembangkeun proyék ageung ku ngirangan antosan dina prosés ngahasilkeun file anu tiasa dieksekusi nalika debugging sareng nguji parobahan. Motivasi pikeun nyieun Mould nya éta frustasi kudu ngadagoan linking pikeun ngalengkepan sanggeus unggal robah kode, kinerja goréng tina linkers aya dina sistem multi-inti, sarta kahayang pikeun nyobaan arsitéktur linking fundamentally béda tanpa resorting kana model overly pajeulit misalna. salaku linking Incremental.
Kinerja luhur linking hiji file laksana tina sajumlah badag file obyék compiler-disiapkeun dina kapang kahontal ku ngagunakeun algoritma gancang, parallelization aktif operasi antara cores CPU sadia tur pamakéan struktur data leuwih efisien. Contona, kapang implements téhnik pikeun ngalakukeun itungan intensif bari nyalin file, pre-loading file obyék kana mémori, ngagunakeun tabel hash gancang pikeun resolusi karakter, scanning tabel relokasi dina thread misah, sarta dedulicating bagian dihijikeun nu terus-terusan sakuliah file béda.
sumber: opennet.ru
