เบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ Mold 1.1, เบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบ LLVM lld

เบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ Mold เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบžเบตเบกเบกเบฒ, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบ›เบฑเบ™เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เบ—เบตเปˆเป„เบงเบเบงเปˆเบฒ, เป‚เบ›เปˆเบ‡เปƒเบชเบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ GNU เปƒเบ™เบฅเบฐเบšเบปเบš Linux. เป‚เบ„เบ‡เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเป„เบ”เป‰เบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบเบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ LLVM lld. เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡ Mold เปเบกเปˆเบ™เบ„เบงเบฒเบกเป„เบงเบชเบนเบ‡เบซเบผเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธ, เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบฅเปˆเบงเบ‡เบซเบ™เป‰เบฒเบ‚เบญเบ‡เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ GNU gold เปเบฅเบฐ LLVM lld (เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เปƒเบ™ Mold เปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ”เป‰เบงเบเบ„เบงเบฒเบกเป„เบงเบžเบฝเบ‡เปเบ•เปˆเป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เป„เบงเป€เบ—เบปเปˆเบฒเบ—เบตเปˆเบžเบฝเบ‡เปเบ•เปˆเบ„เบฑเบ”เบฅเบญเบเป„เบŸเบฅเปŒเบ”เป‰เบงเบ cp utility). เบฅเบฐเบซเบฑเบ”เปเบกเปˆเบ™เบ‚เบฝเบ™เป€เบ›เบฑเบ™ C++ (C++20) เปเบฅเบฐเปเบˆเบเบขเบฒเบเบžเบฒเบเปƒเบ•เป‰เปƒเบšเบญเบฐเบ™เบธเบเบฒเบ” AGPLv3.

เปƒเบ™โ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เปƒเบซเบกเปˆโ€‹:

  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡ (LTO, Link Time Optimization). เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡ LTO เบกเบตเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป‚เบ”เบเบเบฒเบ™เบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบฎเบนเบšเปเบšเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบšเบšเบ”เบฑเป‰เบ‡เป€เบ”เบตเบกเบˆเบฐเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปเบ•เปˆเบฅเบฐเป„เบŸเบฅเปŒเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเปเบฅเบฐเบšเปเปˆเบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบญเบตเป‰เบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เป„เบŸเบฅเปŒเบญเบทเปˆเบ™เป†. เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เป€เบกเบทเปˆเบญเป„เบŸเบฅเปŒ GCC เบซเบผเบท LLVM เบฅเบฐเบซเบฑเบ”เบเบฒเบ‡ (IR) เบ–เบทเบเบžเบปเบšเป€เบซเบฑเบ™, เบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ ld.bfd เบซเบผเบท ld.lld เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เป„เบ”เป‰เบ–เบทเบเป€เบญเบตเป‰เบ™, เบ•เบญเบ™เบ™เบตเป‰ Mold เบ›เบฐเบกเบงเบ™เบœเบปเบ™เป„เบŸเบฅเปŒ IR เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบญเบดเบ”เบชเบฐเบซเบผเบฐเปเบฅเบฐเปƒเบŠเป‰ Linker Plugin API, เบเบฑเบ‡เปƒเบŠเป‰เปƒเบ™ GNU ld เปเบฅเบฐ GNU. เบ„เปเบฒ linkers. เป€เบกเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰, LTO เบžเบฝเบ‡เปเบ•เปˆเป„เบงเบเบงเปˆเบฒเบ•เบปเบงเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบญเบทเปˆเบ™เป†เบเป‰เบญเบ™เบงเปˆเบฒเป€เบงเบฅเบฒเบชเปˆเบงเบ™เปƒเบซเบเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒเปƒเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบฅเบฐเบซเบฑเบ”เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ.
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ RISC-V (RV64) เปƒเบ™เป‚เบฎเบ”เปเบฅเบฐเป€เบงเบ—เบตเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ.
  • เป„เบ”เป‰เป€เบžเบตเปˆเบกเบ•เบปเบงเป€เบฅเบทเบญเบ โ€œ--emit-relocsโ€ เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบ„เบฑเบ”เบฅเบญเบเบžเบฒเบเบชเปˆเบงเบ™เบเบฒเบ™เบเบปเบเบเป‰เบฒเบเบˆเบฒเบเป„เบŸเบฅเปŒเบ›เป‰เบญเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เบซเบฒเป„เบŸเบฅเปŒเบœเบปเบ™เบœเบฐเบฅเบดเบ”เป€เบžเบทเปˆเบญเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ•เปเปˆเป„เบ›เปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบซเบผเบฑเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡.
  • เป€เบžเบตเปˆเบกเบ—เบฒเบ‡เป€เบฅเบทเบญเบ "--shuffle-sections" เป€เบžเบทเปˆเบญ randomize เบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบžเบฒเบเบชเปˆเบงเบ™เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเปเบเป‰เป„เบ‚เบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบขเบนเปˆเปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบ—เบตเปˆเบขเบนเปˆ virtual.
  • เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเป€เบžเบตเปˆเบก โ€œ--print-dependenciesโ€ เปเบฅเบฐ โ€œ--print-dependencies=fullโ€ เป€เบžเบทเปˆเบญเบชเบปเปˆเบ‡เบญเบญเบเปƒเบ™เบฎเบนเบšเปเบšเบš CSV เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบฅเบฐเบซเบงเปˆเบฒเบ‡เป„เบŸเบฅเปŒเบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™, เบ•เบปเบงเบขเปˆเบฒเบ‡, เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป€เบžเบทเปˆเบญเบงเบดเป€เบ„เบฒเบฐเป€เบซเบ”เบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป€เบกเบทเปˆเบญเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบšเบฒเบ‡เบญเบฑเบ™. เบซเบผเบทเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ minification เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบถเป‰เบ™เบเบฑเบšเบฅเบฐเบซเบงเปˆเบฒเบ‡เป„เบŸเบฅเปŒ.
  • เป€เบžเบตเปˆเบกเบ•เบปเบงเป€เบฅเบทเบญเบ "--warn-once" เปเบฅเบฐ "--warn-textrel".
  • เบ–เบญเบ™เบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบš libxxhash.

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

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