LLVM lld рдиреЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗрд▓реЗ рдореЛрд▓реНрдб рдмрд┐рд▓реНрдбрд░рдЪреЗ рдкрд╣рд┐рд▓реЗ рд╕реНрдерд┐рд░ рдкреНрд░рдХрд╛рд╢рди

Rui Ueyama, LLVM lld рд▓рд┐рдВрдХрд░ рдЖрдгрд┐ chibicc рдХрдВрдкрд╛рдЗрд▓рд░рдЪреЗ рд▓реЗрдЦрдХ, рдирд╡реАрди рдЙрдЪреНрдЪ-рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЛрд▓реНрдб рд▓рд┐рдВрдХрд░рдЪреЗ рдкрд╣рд┐рд▓реЗ рд╕реНрдерд┐рд░ рдкреНрд░рдХрд╛рд╢рди рд╕рд╛рджрд░ рдХреЗрд▓реЗ, рдЬреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реНрд╕ рд▓рд┐рдВрдХ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдЧрддреАрдордзреНрдпреЗ GNU рдЧреЛрд▓реНрдб рдЖрдгрд┐ LLVM lld рд▓рд┐рдВрдХрд░реНрд╕рдкреЗрдХреНрд╖рд╛ рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рд╡реЗрдЧрд╡рд╛рди рдЖрд╣реЗ. рдкреНрд░рдХрд▓реНрдк рдЙрддреНрдкрд╛рджрди рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╛рдареА рддрдпрд╛рд░ рдорд╛рдирд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ рд▓рд┐рдирдХреНрд╕ рд╕рд┐рд╕реНрдЯрдореНрд╕рд╡рд░реАрд▓ GNU рд▓рд┐рдВрдХрд░рд╕рд╛рдареА рдЬрд▓рдж, рдкрд╛рд░рджрд░реНрд╢рдХ рдмрджрд▓ рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ. рдкреБрдвреАрд▓ рдкреНрд░рдореБрдЦ рдкреНрд░рдХрд╛рд╢рдирд╛рдЪреНрдпрд╛ рдпреЛрдЬрдирд╛рдВрдордзреНрдпреЗ macOS рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╕рд╛рдареА рд╕рдорд░реНрдерди рдкреВрд░реНрдг рдХрд░рдгреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ, рддреНрдпрд╛рдирдВрддрд░ Windows рд╕рд╛рдареА Mold рдЪреЗ рд░реБрдкрд╛рдВрддрд░ рдХрд░рдгреНрдпрд╛рдЪреЗ рдХрд╛рдо рд╕реБрд░реВ рд╣реЛрдИрд▓.

рдореЛрд▓реНрдб рд╣реЗ C++ (C++20) рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ AGPLv3 рдЕрдВрддрд░реНрдЧрдд рдкрд░рд╡рд╛рдирд╛рдХреГрдд рдЖрд╣реЗ, рдЬреЗ GPLv3 рд╢реА рд╕реБрд╕рдВрдЧрдд рдЖрд╣реЗ, рдкрд░рдВрддреБ GPLv2 рд╢реА рд╕реБрд╕рдВрдЧрдд рдирд╛рд╣реА, рдХрд╛рд░рдг рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрд╡рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддрд╛рдирд╛ рддреНрдпрд╛рдд рдЦреБрд▓реЗ рдмрджрд▓ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗрдд. рд╣реА рдирд┐рд╡рдб рд╡рд┐рдХрд╛рд╕ рдирд┐рдзреА рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рдЪреНрдпрд╛ рдЗрдЪреНрдЫреЗрджреНрд╡рд╛рд░реЗ рд╕реНрдкрд╖реНрдЯ рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ - рд▓реЗрдЦрдХ рдПрдордЖрдпрдЯреА рд╕рд╛рд░рдЦреНрдпрд╛ рдкрд░рд╡рд╛рдирдЧреНрдпрд╛ рдкрд░рд╡рд╛рдиреНрдпрд╛рдЕрдВрддрд░реНрдЧрдд рдкреБрдиреНрд╣рд╛ рдкрд░рд╡рд╛рдирд╛ рджреЗрдгреНрдпрд╛рд╕рд╛рдареА рдХреЛрдбрдЪреЗ рдЕрдзрд┐рдХрд╛рд░ рд╡рд┐рдХрдгреНрдпрд╛рд╕ рдХрд┐рдВрд╡рд╛ AGPL рд╕реЛрдмрдд рд╕рдорд╛рдзрд╛рдиреА рдирд╕рд▓реЗрд▓реНрдпрд╛рдВрд╕рд╛рдареА рд╕реНрд╡рддрдВрддреНрд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкрд░рд╡рд╛рдирд╛ рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рд╕ рддрдпрд╛рд░ рдЖрд╣реЗ.

рдореЛрд▓реНрдб GNU рд▓рд┐рдВрдХрд░рдЪреНрдпрд╛ рд╕рд░реНрд╡ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрдирд╛ рд╕рдорд░реНрдерди рджреЗрддреЗ рдЖрдгрд┐ рддреНрдпрд╛рдЪреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЦреВрдк рдЙрдЪреНрдЪ рдЖрд╣реЗ - рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЗрд╡рд│ cp рдпреБрдЯрд┐рд▓рд┐рдЯреАрд╕рд╣ рдлрд╛рдЗрд▓реНрд╕ рдХреЙрдкреА рдХрд░рдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдЕрд░реНрдзреНрдпрд╛ рд╡реЗрдЧрд╛рдиреЗ рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, Chrome 96 (рдХреЛрдб рдЖрдХрд╛рд░ 1.89 GB) рдмрдирд╡рддрд╛рдирд╛, GNU рдЧреЛрд▓реНрдб рд╡рд╛рдкрд░реВрди 8-рдХреЛрд░ рд╕рдВрдЧрдгрдХрд╛рд╡рд░ рдбреАрдмрдЧрд┐рдирдлреЛрд╕рд╣ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдлрд╛рдпрд▓реА рд▓рд┐рдВрдХ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА 53 рд╕реЗрдХрдВрдж рд▓рд╛рдЧрддрд╛рдд, LLVM lld - 11.7 рд╕реЗрдХрдВрдж, рдЖрдгрд┐ Mold рдлрдХреНрдд 2.2 рд╕реЗрдХрдВрдж (26 рдкрдЯ рд╡реЗрдЧрд╛рдиреЗ) GNU рд╕реЛрдиреЗ). Clang 13 (3.18 GB) рд▓рд╛ рд▓рд┐рдВрдХ рдХрд░рддрд╛рдирд╛, GNU рдЧреЛрд▓реНрдбрдордзреНрдпреЗ 64 рд╕реЗрдХрдВрдж, LLVM lld рдордзреНрдпреЗ 5.8 рд╕реЗрдХрдВрдж рдЖрдгрд┐ рдореЛрд▓реНрдбрдордзреНрдпреЗ 2.9 рд╕реЗрдХрдВрдж рд▓рд╛рдЧрддрд╛рдд. Firefox 89 (1.64 GB) рдмрдирд╡рддрд╛рдирд╛, GNU рдЧреЛрд▓реНрдбрдордзреНрдпреЗ 32.9 рд╕реЗрдХрдВрдж, LLVM lld рдордзреНрдпреЗ 6.8 рд╕реЗрдХрдВрдж рдЖрдгрд┐ рдореЛрд▓реНрдбрдордзреНрдпреЗ 1.4 рд╕реЗрдХрдВрдж рд▓рд╛рдЧрддрд╛рдд.

LLVM lld рдиреЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реЗрд▓реЗ рдореЛрд▓реНрдб рдмрд┐рд▓реНрдбрд░рдЪреЗ рдкрд╣рд┐рд▓реЗ рд╕реНрдерд┐рд░ рдкреНрд░рдХрд╛рд╢рди

рдмрд┐рд▓реНрдб рдЯрд╛рдЗрдо рдХрдореА рдХреЗрд▓реНрдпрд╛рдиреЗ рдбреАрдмрдЧрд┐рдВрдЧ рдЖрдгрд┐ рдмрджрд▓рд╛рдВрдЪреА рдЪрд╛рдЪрдгреА рдХрд░рддрд╛рдирд╛ рдПрдХреНрдЭрд┐рдХреНрдпреВрдЯреЗрдмрд▓ рдлрд╛рдЗрд▓реНрд╕ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрддреАрд▓ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрдореА рдХрд░реВрди рдореЛрдареЗ рдкреНрд░рдХрд▓реНрдк рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рд╕реЛрдпреАрдордзреНрдпреЗ рд▓рдХреНрд╖рдгреАрдп рд╕реБрдзрд╛рд░рдгрд╛ рд╣реЛрдК рд╢рдХрддреЗ. рдкреНрд░рддреНрдпреЗрдХ рдХреЛрдб рдмрджрд▓рд▓реНрдпрд╛рдирдВрддрд░ рд▓рд┐рдВрдХрд┐рдВрдЧ рдкреВрд░реНрдг рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рд╛рд╡реА рд▓рд╛рдЧрдгрд╛рд░реА рдирд┐рд░рд╛рд╢рд╛, рдорд▓реНрдЯреА-рдХреЛрд░ рд╕рд┐рд╕реНрдЯреАрдорд╡рд░ рд╡рд┐рджреНрдпрдорд╛рди рд▓рд┐рдВрдХрд░реНрд╕рдЪреА рдЦрд░рд╛рдм рдХрд╛рдордЧрд┐рд░реА рдЖрдгрд┐ рдЕрддреНрдпрд╛рдзрд┐рдХ рдХреНрд▓рд┐рд╖реНрдЯ рдореЙрдбреЗрд▓реНрд╕рдЪрд╛ рдЕрд╡рд▓рдВрдм рди рдХрд░рддрд╛ рдореВрд▓рднреВрддрдкрдгреЗ рднрд┐рдиреНрди рд▓рд┐рдВрдХрд┐рдВрдЧ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдЗрдЪреНрдЫрд╛ рд╣реА рдореЛрд▓реНрдб рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдкреНрд░реЗрд░рдгрд╛ рд╣реЛрддреА. рд╡рд╛рдвреАрд╡ рд▓рд┐рдВрдХрд┐рдВрдЧ рдореНрд╣рдгреВрди.

рдореЛрд▓реНрдбрдордзреНрдпреЗ рдореЛрдареНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреЗ рдХрдВрдкрд╛рдЗрд▓рд░-рддрдпрд╛рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реНрд╕рдордзреВрди рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдлрд╛рдЗрд▓ рд▓рд┐рдВрдХ рдХрд░рдгреНрдпрд╛рдЪреЗ рдЙрдЪреНрдЪ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рд╡реЗрдЧрд╡рд╛рди рдЕрд▓реНрдЧреЛрд░рд┐рджрдо, рдЙрдкрд▓рдмреНрдз CPU рдХреЛрд░рдордзреАрд▓ рдСрдкрд░реЗрд╢рдиреНрд╕рдЪреЗ рд╕рдХреНрд░рд┐рдп рд╕рдорд╛рдВрддрд░реАрдХрд░рдг рдЖрдгрд┐ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдо рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рд╕рд╛рдзреНрдп рдХреЗрд▓реЗ рдЬрд╛рддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдлрд╛рдпрд▓реА рдХреЙрдкреА рдХрд░рддрд╛рдирд╛, рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реНрд╕ рдореЗрдорд░реАрдордзреНрдпреЗ рдкреНрд░реА-рд▓реЛрдб рдХрд░рдгреЗ, рдХреЕрд░реЗрдХреНрдЯрд░ рд░рд┐рдЭреЛрд▓реНрдпреВрд╢рдирд╕рд╛рдареА рдЬрд▓рдж рд╣реЕрд╢ рдЯреЗрдмрд▓реНрд╕ рд╡рд╛рдкрд░рдгреЗ, рд╡реЗрдЧрд│реНрдпрд╛ рдзрд╛рдЧреНрдпрд╛рдд рд░рд┐рд▓реЛрдХреЗрд╢рди рдЯреЗрдмрд▓ рд╕реНрдХреЕрди рдХрд░рдгреЗ рдЖрдгрд┐ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдлрд╛рдЗрд▓реНрд╕рдордзреНрдпреЗ рдкреБрдирд░рд╛рд╡реГрддреНрддреА рд╣реЛрдгрд╛рд░реЗ рд╡рд┐рд▓реАрди рдХреЗрд▓реЗрд▓реЗ рд╡рд┐рднрд╛рдЧ рдХрд╛рдвреВрди рдЯрд╛рдХрдгреЗ рдпрд╛рд╕рд╛рдареА рдореЛрд▓реНрдб рдЧрд╣рди рдЧрдгрдирд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддрдВрддреНрд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ.

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛