เบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบงเบ—เบตเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡ Mold builder เบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบ LLVM lld

Rui Ueyama, เบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡ LLVM lld linker เปเบฅเบฐ chibicc compiler, เบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบงเบ—เบตเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ Mold เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบนเบ‡เปƒเบซเบกเปˆ, เป€เบŠเบดเปˆเบ‡เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบฅเปˆเบงเบ‡เบซเบ™เป‰เบฒเบ‚เบญเบ‡เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ GNU gold เปเบฅเบฐ LLVM lld เปƒเบ™เปเบ‡เปˆเบ‚เบญเบ‡เบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธ. เป‚เบ„เบ‡เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰เบ–เบทเบเบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบงเปˆเบฒเบžเป‰เบญเบกเบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบœเบฐเบฅเบดเบ”เปเบฅเบฐเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เบ—เบตเปˆเป‚เบ›เปˆเบ‡เปƒเบชเป„เบงเบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ GNU เปƒเบ™เบฅเบฐเบšเบปเบš Linux. เปเบœเบ™เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ„เบฑเป‰เบ‡เปƒเบซเบเปˆเบ•เปเปˆเป„เบ›เบฅเบงเบกเบกเบตเบเบฒเบ™เบ™เปเบฒเป€เบญเบปเบฒเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก macOS เป„เบ›เบชเบนเปˆเบ„เบงเบฒเบกเบžเป‰เบญเบก, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบˆเบฐเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™เบเบฒเบ™เบ›เบฑเบšเบ•เบปเบง Mold เบชเปเบฒเบฅเบฑเบš Windows.

Mold เบ–เบทเบเบ‚เบฝเบ™เป„เบงเป‰เปƒเบ™ C++ (C++20) เปเบฅเบฐเปเบˆเบเบขเบฒเบเบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” AGPLv3, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบก GPLv3 เปเบ•เปˆเบšเปเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบš GPLv2, เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเบˆเบฐเป€เบ›เบตเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบ. เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เปเบกเปˆเบ™เป€เบ™เบทเปˆเบญเบ‡เบกเบฒเบˆเบฒเบเบ„เบงเบฒเบกเบ›เบฒเบ–เบฐเบซเบ™เบฒเบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบ—เบถเบ™เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ - เบœเบนเป‰เบ‚เบฝเบ™เป€เบ•เบฑเบกเปƒเบˆเบ—เบตเปˆเบˆเบฐเบ‚เบฒเบเบชเบดเบ”เบ—เบดเปƒเบ™เบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบš relicensing เบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ”เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบญเบฐเบ™เบธเบเบฒเบ”, เป€เบŠเบฑเปˆเบ™ MIT, เบซเบผเบทเปƒเบซเป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ”เบ—เบฒเบ‡เบเบฒเบ™เบ„เป‰เบฒเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบšเปเปˆเบžเปเปƒเบˆเบเบฑเบš AGPL.

Mold เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡ GNU linker เปเบฅเบฐเป„เบงเบซเบผเบฒเบ, เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบžเบฝเบ‡เปเบ•เปˆเป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ„เบงเบฒเบกเป„เบงเบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เบ„เบฑเบ”เบฅเบญเบเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบต cp. เบ•เบปเบงเบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™, เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡ Chrome 96 (เบฅเบฐเบซเบฑเบ”เบ‚เบฐเบซเบ™เบฒเบ” 1.89 GB), เบกเบฑเบ™เปƒเบŠเป‰เป€เบงเบฅเบฒ 8 เบงเบดเบ™เบฒเบ—เบตเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡ c debuginfo executables เปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบต 53-core เป‚เบ”เบเปƒเบŠเป‰ GNU gold, 11.7 เบงเบดเบ™เบฒเบ—เบตเบชเปเบฒเบฅเบฑเบš LLVM lld, เปเบฅเบฐเบžเบฝเบ‡เปเบ•เปˆ 2.2 เบงเบดเบ™เบฒเบ—เบตเบชเปเบฒเบฅเบฑเบš Mold (เป„เบงเบเบงเปˆเบฒ 26 เป€เบ—เบปเปˆเบฒ. GNU เบ„เปเบฒ). เป€เบกเบทเปˆเบญเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ Clang 13 (3.18 GB), GNU gold เปƒเบŠเป‰เป€เบงเบฅเบฒ 64 เบงเบดเบ™เบฒเบ—เบต, LLVM lld เปƒเบŠเป‰เป€เบงเบฅเบฒ 5.8 เบงเบดเบ™เบฒเบ—เบต, เปเบฅเบฐ Mold เปƒเบŠเป‰เป€เบงเบฅเบฒ 2.9 เบงเบดเบ™เบฒเบ—เบต. เป€เบกเบทเปˆเบญเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ Firefox 89 (1.64 GB), GNU gold เปƒเบŠเป‰เป€เบงเบฅเบฒ 32.9 เบงเบดเบ™เบฒเบ—เบต, LLVM lld เปƒเบŠเป‰เป€เบงเบฅเบฒ 6.8 เบงเบดเบ™เบฒเบ—เบต, เปเบฅเบฐ Mold เปƒเบŠเป‰เป€เบงเบฅเบฒ 1.4 เบงเบดเบ™เบฒเบ—เบต.

เบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบงเบ—เบตเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡ Mold builder เบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบ LLVM lld

เบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเบชเบฒเบกเบฒเบ”เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเป‚เบ”เบเบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เบฅเปเบ–เป‰เบฒเปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เปเบเป‰เป„เบ‚เปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡. Mold เป„เบ”เป‰เบ–เบทเบเบเบฐเบ•เบธเป‰เบ™เป‚เบ”เบเบ„เบงเบฒเบกเบฅเปเบฒเบ„เบฒเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบฅเปเบ–เป‰เบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบžเบทเปˆเบญเปƒเบซเป‰เบชเปเบฒเป€เบฅเบฑเบ”เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบธเบเป†เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเบšเปเปˆเบ”เบตเบ‚เบญเบ‡เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบฅเบฐเบšเบปเบšเบซเบผเบฒเบเบซเบผเบฑเบ, เปเบฅเบฐเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เป‚เบ”เบเบšเปเปˆเป„เบ”เป‰เบญเบตเบ‡เปƒเบชเปˆเบ„เบงเบฒเบกเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™. เบฎเบนเบšเปเบšเบšเบ—เบตเปˆเบชเบฑเบšเบชเบปเบ™, เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบ—เบตเปˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™.

เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบนเบ‡เบ‚เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป„เบŸเบฅเปŒเบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบˆเบฒเบเบˆเปเบฒเบ™เบงเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบเบฐเบเบฝเบกเป‚เบ”เบ compiler เปƒเบ™ Mold เปเบกเปˆเบ™เบšเบฑเบ™เบฅเบธเป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ algorithms เบ—เบตเปˆเป„เบงเบ‚เบถเป‰เบ™, เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ‚เบฐเบซเบ™เบฒเบ™เบขเปˆเบฒเบ‡เบˆเบดเบ‡เบˆเบฑเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡ CPU cores เบ—เบตเปˆเบกเบตเบขเบนเปˆ, เปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบ. เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, Mold เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ•เบฑเบเบ™เบดเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเบ‚เบธเป‰เบ™เบžเป‰เบญเบกเป†เบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบ„เบฑเบ”เบฅเบญเบเป„เบŸเบฅเปŒ, เบ”เบถเบ‡เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ, เป‚เบ”เบเปƒเบŠเป‰เบ•เบฒเบ•เบฐเบฅเบฒเบ‡ hash เป„เบงเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเปเบเป‰เป„เบ‚เบ•เบปเบงเบญเบฑเบเบชเบญเบ™, เบชเบฐเปเบเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบเบฒเบ™เบเบปเบเบเป‰เบฒเบเปƒเบ™เบเบฐเบ—เบนเป‰เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เปเบฅเบฐเปเบเบเบชเปˆเบงเบ™เบ—เบตเปˆเบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เบŠเป‰เปเบฒเบเบฑเบ™เปƒเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™