Rust: LLD рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рдирд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 17 рдлрд╝рд░ре░ 2017  ┬╖  94рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: rust-lang/rust

рдПрд▓рдПрд▓рд╡реАрдПрдо 4.0 рдПрд▓рдПрд▓рдбреА рд╕рдХреНрд╖рдо рдХреЗ рд╕рд╛рде рд╢рд┐рдкрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ AFAIK рдпрд╣ рдЕрднреА рддрдХ рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдЙрддреНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрд╡реАрдЖрд░/рдПрдорд╕реНрдХреНрд░рд┐рдкреНрдЯрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрдж рд╣реА рдПрдХ рдПрд▓рдПрд▓рд╡реАрдПрдо рдЕрдкрдЧреНрд░реЗрдб рдХреА рдпреЛрдЬрдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдм рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдпрд╣ рд╣рдорд╛рд░реА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдВрдкрд╛рдЗрд▓рд░ рдкреНрд░рджрд░реНрд╢рди/рдмрд╛рдЗрдирд░реА рдЖрдХрд╛рд░/рд░рдирдЯрд╛рдЗрдо рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХреИрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рд╕рд╛рдорд╛рдиреНрдп рд▓рд┐рдВрдХрд░реНрд╕, рдФрд░ рдХреМрди рд╕реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рд╣рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ (2020-04-24) https://github.com/rust-lang/rust/issues/39915#issuecomment -618726211 рдкрд░ рд╕рдВрдХреНрд╖реЗрдкрд┐рдд рд╣реИ

A-linkage C-feature-request I-compiletime T-compiler

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣ рдмрдЧ рдереЛрдбрд╝рд╛ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬреЛ рд▓реЛрдЧ рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рддреНрд╡рд░рд┐рдд рд╕рд╛рд░рд╛рдВрд╢ рдореЗрдВ рдореЗрд░рд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╢реЙрдЯ рд╣реИред

рдПрд▓рдПрд▓рдбреА рдХреНрдпрд╛ рд╣реИ

рдПрдХ рд▓рд┐рдВрдХрд░ рдЬреЛ llvm рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЬреЛ рджреЛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИ:

  • рдпрд╣ рд╕рдВрдХрд▓рди рдХреЛ рдкрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдиреБрдХреВрд▓ рд╣реИ (рдЗрд╕рд▓рд┐рдП рдПрдореНрдмреЗрдбреЗрдб рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЬреЛрд░)
  • рдпрд╣ рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реИ (рдЕрдХреНрд╕рд░ рдЧреЛрд▓реНрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдзреЗ рд╕рдордп рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ - рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ (рд░рд╕реНрдЯрд╕реА, рд╕рд░реНрд╡реЛ, рдЖрджрд┐) рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХрд┐рдВрдЧ рдореЗрдВ рдХрдИ рдорд┐рдирдЯ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд▓рд┐рдВрдХрд┐рдВрдЧ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдмрд┐рд▓реНрдб рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рди рдХрд╛ рдПрдХ рдмрдбрд╝рд╛% рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд░рдирдЯрд╛рдЗрдо рдХреЛ рд░реЛрдХрдирд╛ рдПрдХ рд╣реИ рдмрдбрд╝реА рдмрд╛рддред)

рдЪреАрдЬреЗрдВ рд░рд╕реНрдЯ рдЖрдЬ lld рдХреЗ рд╕рд╛рде рдХрд░рддреА рд╣реИ

  • рд░рд╕реНрдЯ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ lld рдХреА рдЕрдкрдиреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреЛ рдмрд╛рдЗрдирд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд┐рдк рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЗрд╕реЗ rust-lld . рдХрд╣рддреЗ рд╣реИрдВ
  • рдХрдИ рдмреЗрдпрд░-рдореЗрдЯрд▓ рд▓рдХреНрд╖реНрдпреЛрдВ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ rust-lld рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  • рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ wasm . рдХреЗ рд▓рд┐рдП rust-lld рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  • (?) рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ "-рд╕реА рд▓рд┐рдВрдХрд░-рд╕реНрд╡рд╛рдж" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрдВрдЧ-рдПрд▓рдПрд▓рдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЧреИрд░-рдирдВрдЧреЗ рдзрд╛рддреБ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдиреАрдЪреЗ рджреЗрдЦреЗрдВ)

рдЕрдзрд┐рдХ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд░рд╕реНрдЯ-рдПрд▓рдПрд▓рдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдБ (рдЕрд░реНрдерд╛рдд рдбреЗрд╕реНрдХрдЯреЙрдк linux/mac/windows)

  • lld рдХреЗ рд▓рд┐рдП macOS (Mach-O) рдмреИрдХрдПрдВрдб рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

    • рдЦрд░реЛрдВрдЪ рд╕реЗ рдПрдХ рдкреБрдирд░реНрд▓реЗрдЦрди рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рд╢реБрд░реБрдЖрддреА рджрд┐рди рд╣реИрдВ

  • рд▓рд┐рдирдХреНрд╕/рдпреВрдирд┐рдХреНрд╕ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░, рдЖрдкрдХреЛ рд╕реАрдзреЗ рдПрд▓рдбреА/рдПрд▓рдПрд▓рдбреА рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ (рдпрд╛рдиреА рдЬреАрд╕реАрд╕реА) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд┐рдВрдХрд░ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА crt1.o рдЬреИрд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рддреАрдХреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрд▓рдбреА рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рд░рд╕реНрдЯ-рдПрд▓рдПрд▓рдбреА рдХрд╛ "рд╕рд┐рд░реНрдл" рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ; рд╣рдореЗрдВ рдЗрд╕реЗ рдЬреАрд╕реАрд╕реА/рдХреНрд▓реИрдВрдЧ/рдЬреЛ рдХреБрдЫ рднреА рдЦрд┐рд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред (рд╣рдо рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рддреАрдХ рддрд░реНрдХ рдХреЛ рд╕реНрд╡рдпрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ)

    • рдЖрдо рддреМрд░ рдкрд░, рдЖрдк рд▓рд┐рдВрдХрд░ рдХреЛ рдкрде рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдЦреЛрдЬ рдкрде рдореЗрдВ "рдПрд▓рдбреА" рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛

    • рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рд╡рд╣реА рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЗрд╕реЗ "ld.lld" рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ "-fuse-ld=lld" рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ



      • рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ ll рдХреНрд▓реИрдВрдЧ-рд╕реНрдЯрд╛рдЗрд▓ рдмрд╛рдЗрдирд░реА рдирд╛рдо рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕реЗ "ld" рдпрд╛ "ld.lld" рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рдЬрд╛рдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)


      • рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ -fuse-ld=lld GCC 9 рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреАрдЪрд░/рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ (рдХреНрд▓реИрдВрдЧ рдореЗрдВ рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╣реИ)



  • windows-msvc рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ, рдФрд░ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмреИрдХрдПрдВрдб рдореЗрдВ rust-lld рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реАрдорд┐рдд рд╕рдорд░реНрдерди рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
  • рд╡рд┐рдВрдбреЛрдЬрд╝-рдорд┐рдВрдЧрд╡ рд▓рдЧрднрдЧ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд▓рд┐рдирдХреНрд╕/рдпреВрдирд┐рдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЖрдк рдПрдХ рдкреНрд░рд╛рдЪреАрди рдЬреАрд╕реАрд╕реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░рджрд╛рдпреА рд╣реИрдВ, рдФрд░ рдЪреАрдЬреЗрдВ рдереЛрдбрд╝реА рдЕрдЬреАрдм рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЫрджреНрдо-рд╡рд┐рдВрдбреЛрдЬрд╝-рд▓рд┐рдирдХреНрд╕ рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд╣реАрдВ рд╣реИ?

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, lld рдирдпрд╛ рд╣реИ, рдпрд╣ рдЕрдзрд┐рдХрд╛рдВрд╢ OSes рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд╣реАрдВ рд╣реИ, рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЧрдд рдмрдЧ рд▓рдЧрднрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рд╛рдордиреЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВред

рдореИрдВрдиреЗ рджреЛ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ (рдЬрдВрдЧ-) lld рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рд▓рд┐рдП рджреЛ рдореЗрдЯрд╛рдмрдЧреНрд╕ рджрд╛рдпрд░ рдХрд┐рдП рд╣реИрдВ:

  • #71515 - x64 рдЙрдмрдВрдЯреВ 20.04 рдПрд▓рдЯреАрдПрд╕ (рдФрд░ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╕рднреА x64 рдИрдПрд▓рдПрдл рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо)
  • #71520 - x64 рдПрдордПрд╕рд╡реАрд╕реА рд╡рд┐рдВрдбреЛ

рд╕рднреА 94 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

# 36120 рдореЗрдВ рдПрдХ PoC рднреА рджреЗрдЦреЗрдВред

рдПрд▓рдПрд▓рдбреА рдорд┐рдирдЬреАрдбрдмреНрд▓реНрдпреВ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдирдХреЗ рд╕рд╛рде рдПрдХ рд▓рд┐рдВрдХрд░ рдХреЛ рдмрдВрдбрд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдорд┐рдирдЬреАрдбрдмреНрд▓реНрдпреВ рдХреЗ рд▓рд┐рдВрдХрд░ рдореЗрдВ рдПрдПрд╕рдПрд▓рдЖрд░ рдХреА рдХрдореА рд╕реЗ рд▓реЗрдХрд░ рдХреЛрдИ рдмрдбрд╝рд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реЛрдиреЗ рддрдХ рдХрдИ рддрд░рд╣ рдХреЗ рдореБрджреНрджреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХреНрд░реЙрд╕ рд╕рдВрдХрд▓рди рдХрд░рддреЗ рд╕рдордп рдЖрд╡рд╢реНрдпрдХ рдорд┐рдВрдЧрд╡ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╕рд╛рде рд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рди рдХреЗрд╡рд▓ рдореВрд▓ рд▓рдХреНрд╖реНрдпреАрдХрд░рдг (рдЬреЛ рдХрд┐ рд░рд╕реНрдЯрдЕрдк рдХрд╛ рдорд┐рдВрдЧрд╡ рдкреИрдХреЗрдЬ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реАрдорд┐рдд рд╣реИ), рддреЛ рдпрд╣ рдмреЙрдХреНрд╕ рдХреЗ рдмрд╛рд╣рд░ рд▓рд┐рдирдХреНрд╕ рд╕реЗ рдЬрдВрдЧ рдХреНрд░реЙрд╕ рд╕рдВрдХрд▓рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдЧрд╛, рдЬреЛ рдПрдХ рдмрдбрд╝рд╛ рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛ рдореМрдЬреВрджрд╛ рд╕реНрдерд┐рддрд┐ рдкрд░ рдЬрд╣рд╛рдВ рд▓реЛрдЧ рдЕрдкрдиреЗ рдбрд┐рд╕реНрдЯреНрд░реЛ рд╕реЗ MinGW рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рдкрдбрд╝ рдЬрд╛рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдбрд┐рд╕реНрдЯреНрд░реЛ рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛ рдЕрд╕рдВрдЧрдд MinGW рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдПрд▓рдПрд▓рдбреА рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдордПрд╕рд╡реАрд╕реА рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрдореНрдореАрджрд╡рд╛рд░ рдирд╣реАрдВ рд╣реИ, рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рдбреАрдмрдЧрдЗрдиреНрдлреЛ рд╕рдорд░реНрдерди рдХреА рдХрдореА рдкреНрд░рд╛рдердорд┐рдХ рдХрд╛рд░рдг рд╣реИред рдПрдордПрд╕рд╡реАрд╕реА рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕ рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдкреБрдирд░реНрд╡рд┐рддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╡реИрд╕реЗ рднреА рдмреЙрдХреНрд╕ рдХреЗ рдмрд╛рд╣рд░ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

LLVM 4.0 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ https://github.com/rust-lang/rust/issues/37609 рд╣реИ ред

рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП рдПрд▓рдПрд▓рдбреА рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реЛрд▓рд╛рд░рд┐рд╕ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рд╕реЛрд▓рд╛рд░рд┐рд╕ рдкрд░, рдРрд╕рд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рджреЗрд╢реА рдПрд▓рдбреА рдХреЗ рдмрдЬрд╛рдп рдПрд▓рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реВрдВред рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЬрдВрдЧ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреАрд╕реАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реЛрд▓рд╛рд░рд┐рд╕ рдкрд░ рд╕реЛрд▓рд╛рд░рд┐рд╕ рдПрд▓рдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХреНрдпрд╛ рд▓рдЧреЗрдЧрд╛ред

@binarycrusader lld рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдХрд╛рд░рдг рд╕реЛрд▓рд╛рд░рд┐рд╕ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рдг , рд╕реЛрд▓рд╛рд░рд┐рд╕ рдкрд░ рдирд╣реАрдВред

PR rust-lang/rust#40018 rustc рдореЗрдВ рдПрдХ -Z linker-flavor рдлреНрд▓реИрдЧ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ LLD рдХреЛ рд▓рд┐рдВрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╣ рдкреАрдЖрд░ рдПрд▓рдПрд▓рдбреА рдХреЛ рдЬрдВрдЧ рдореЗрдВ рдПрдореНрдмреЗрдб рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде рдкреЗрдбрд╝ рдХреЗ рдкреНрд░рдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

@binarycrusader ^ рдЬреЛ рд╕реАрдзреЗ рдЬреАрд╕реАрд╕реА рдХреЗ рдмрдЬрд╛рдп рд╕реЛрд▓рд╛рд░рд┐рд╕ 'рдПрд▓рдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЖрдкрдХреЗ рдкреНрд░рдпреЛрдЧ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЕрдм рд╣рдо LLVM 4.0 рдкрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред @japaric , рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд▓рд┐рдВрдХрд░-рд╕реНрд╡рд╛рдж рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдм рд╕рд┐рд╕реНрдЯрдо рд▓рд┐рдВрдХрд░ рдХреЗ рд╕рд╛рде рдПрд▓рдПрд▓рдбреА рдХреА рддреБрд▓рдирд╛ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

@bstree #40018 рдХреБрдЫ рд╣рдлрд╝реНрддреЗ рдкрд╣рд▓реЗ рдЙрддрд░рд╛ред рдЪреВрдВрдХрд┐ рд╡рд╣ рдЙрддрд░рд╛ рдПрдХ рд▓рд┐рдВрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╛рд╣рд░реА рдПрд▓рдПрд▓рдбреА рдмрд╛рдЗрдирд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП -Z linker-flavor=ld -C linker=ld.lld рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐, gcc рдХреЗ рд╡рд┐рдкрд░реАрдд, LLD рдХреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╣рд╛рдВ рд╣реИрдВ, -C link-args='-L ...' рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рд▓рд┐рдВрдХ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ

рдПрд▓рдПрд▓рд╡реАрдПрдо 4.0 рдПрд▓рдПрд▓рдбреА рдХреЛ рдЬрдВрдЧ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдореЗрдВ рдХреНрдпрд╛ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдЙрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рд╣рдореЗрдВ MUSL рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдпрд╛ рдирдВрдЧреЗ рдзрд╛рддреБ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдЬреИрд╕реЗ рдХреБрдЫ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдмрд╛рд╣рд░реА рд▓рд┐рдВрдХрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рдореИрдВ рдХреБрдЫ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╣рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдКрдкрд░ рдмрддрд╛рдП рдЧрдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЦреЛрдЬ рдкрде рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдВрдЧреЗред рдЙрди рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдПрд▓рдПрд▓рдбреА рд▓реАрдХ рд╕реЗ рд╣рдЯрдХрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рдФрд░ рдХрд╣рд╛рдБ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЙрд╕рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд┐рдирд╛ рд╣рдо рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг (рдЯрд┐рдпрд░ 1) рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрд▓рдПрд▓рдбреА рдкрд░ рд╕реНрд╡рд┐рдЪ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдПрд▓рдПрд▓рдбреА рдХреЛ рд░рд╕реНрдЯрд╕реА рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рдЕрдкреАрд▓ рдХреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдХрдо рдХрд░ рджреЗрддрд╛ рд╣реИред

@japaric рдПрдореНрдмреЗрдбрд┐рдВрдЧ ( -lc -lpthread crt0.o рдЬреИрд╕реА рдЪреАрдЬрд╝реЛрдВ рдХреЗ рд╡рд┐рд░реБрджреНрдз рд╕реАрдзреЗ rustc рдореЗрдВ рдХреНрдпрд╛ рддрд░реНрдХ рд╣реИрдВ? рдЖрдЦрд┐рд░рдХрд╛рд░, рдЯреВрд▓рдЪреИрди рдХреЗ рдХреБрдЫ рдШрдЯрдХреЛрдВ рдХреЛ рдЙрдиреНрд╣реЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рдкрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорд╛рдирдХ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдмрд┐рдиреБрдЯрд┐рд▓реНрд╕ рдЗрд╕ рдЬреНрдЮрд╛рди рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕реБрдирд╣рд░рд╛ рд╕реНрд░реЛрдд рдирд╣реАрдВ рд╣реИред

рдПрдХрдорд╛рддреНрд░ рдХрдореА рдЬреЛ рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рд╡рд╣ рд╡рд╣ рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рд╣реА рдЯреНрд░рд┐рдкрд▓ рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрд╡рд╛рджреЛрдВ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЦреЛрдЬ рдкрде рд╣реЛрдВрдЧреЗ (рдЬреЛ рд╕рдВрднрд╡рддрдГ рд▓рд┐рдирдХреНрд╕/рдЧреНрд▓рд┐рдмреИрдХ рдЯреНрд░рд┐рдкрд▓ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрдВрдЧреЗ, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд▓реНрдЯреАрд▓рд┐рдм рд╡рд╛рд▓реЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдЦрд░рд╛рдм рд╣реЛрдВрдЧреЗ)ред рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдХреНрд▓реИрдВрдЧ рдУрдПрд╕ рдирд╛рдо рдФрд░ рд╣рд╛рд░реНрдбрдХреЛрдб рдУрдПрд╕-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ, рдЬреЛ рдЦрд░рд╛рдм рд▓рдЧрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИ рдпрджрд┐ рдХреЛрдИ рдХрд┐рд╕реА рднреА рд▓рд┐рдирдХреНрд╕ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдмрд╛рдЗрдирд░реА рд╡рд┐рддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ (рдФрд░ рд╕рд┐рд╕реНрдЯрдо рд▓рд┐рдВрдХрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)ред

@ retep998 рдореИрдВрдиреЗ рдХреБрдЫ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ lld рдкрд░ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирдЬрд╝рд░

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореИрдВ рдЧрд▓рдд рд╣реВрдБред

рдЗрд╕реЗ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рдмрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреИрдЧ рдХрд░рдирд╛, рдХреНрдпреЛрдВрдХрд┐ рдПрд▓рдПрд▓рдбреА рдХреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдпрд╣ рдЬреАрдПрдирдпреВ рдПрд▓рдбреА рдХреЛ рджрд╕ рдХреЗ рдХрд╛рд░рдХ рд╕реЗ рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрдВрдкрд╛рдЗрд▓рд░ рдЧрддрд┐ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдШрдЯрдХ рд╣реИред

рдПрд░, рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд▓рд┐рдВрдХ рдХрд░рдирд╛ рднреВрд▓ рдЧрдП: https://lld.llvm.org/#performance

(рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЖрдЬ рдХреЗ рдмрд╛рдж рд╕реЗ LLVM 5.0 рдЕрднреА рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред)

рдПрд▓рдПрд▓рдбреА рдХреЗ рд╕рд╛рде рд▓рд┐рдВрдХ рдХрд░рдирд╛ рдмреАрдПрдлрдбреА рдпрд╛ рд╕реЛрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╕рдордЧреНрд░ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдХрд╛рдлреА рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛ред рдлрд┐рд░ рднреА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдФрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

@tpimh рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдЖрдИ-рд╕реНрд▓реЛ рдЯреИрдЧ рдХреЛ рд░рдирдЯрд╛рдЗрдо рдкреНрд░рджрд░реНрд╢рди рдмрдЧ рдпрд╛ рдХрдВрдкрд╛рдЗрд▓рдЯрд╛рдЗрдо рдкреНрд░рджрд░реНрд╢рди рдмрдЧ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдирд╛ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдмрд╛рдж рд╡рд╛рд▓реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдФрд░ IME рдЬрдм рдореИрдВ рдЯрд╛рдЗрдо-рдкрд╛рд╕ рдЖрдЙрдЯрдкреБрдЯ рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ рддреЛ рдЖрдорддреМрд░ рдкрд░ рд╢реАрд░реНрд╖ рддреАрди рд╕рдмрд╕реЗ рд▓рдВрдмреЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд▓рд┐рдВрдХрд┐рдВрдЧ рд╕рдордп рдХреЛ рдЖрдзреЗ рдореЗрдВ рдХрд╛рдЯрдирд╛ рднреА рд╢рд╛рдпрдж рдПрдХ рдмрдбрд╝реА рдЬреАрдд рд╣реЛрдЧреА (рд╡рд┐рд╢реЗрд╖рдХрд░ рд╕рд░реНрд╡реЛ рдФрд░ рд░рд╕реНрдЯрд╕реА рдЬреИрд╕реА рдмрдбрд╝реА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП)ред

@bstree I-slow рдЦрд░рд╛рдм рд░рдирдЯрд╛рдЗрдо рдкрд░рдлреЙрд░реНрдореЗрдВрд╕ рдХреЗ рд▓рд┐рдП рд╣реИ, I-compiltime рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рдЪреЗрдХ рдХрд┐рдпрд╛ рдерд╛ рддреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдкрд░рдл рдХреЗ рд▓рд┐рдП рд╣реИ

рд▓рд┐рдирдХреНрд╕ рд╕реЗ рд╡рд┐рдВрдбреЛрдЬрд╝ рддрдХ рдХреНрд░реЙрд╕ рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЗ рдЕрд╕реНрдкрд╖реНрдЯ рд╡рд┐рд╖рдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛ рдХрд┐ рдПрд▓рдПрд▓рдбреА рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдПрд▓рдПрд▓рдбреА рдХреЗ рдПрд▓рдбреА рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рд╕рдЪ рд╣реИред рдпрд╣ lld рдХреЗ link.exe рдлреНрд▓реЗрд╡рд░ (lld-link) рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рд╣реИред

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрдВрдЧ рдХреЗ рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдЖрдЬ рдХреБрдЫ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

  1. рд╣рдореЗрдВ mingw-w64 рдХреЗ CRT рдХреЗ рдПрдХ рдмрд╣реБрдд рдЫреЛрдЯреЗ рдЙрдкрд╕рдореБрдЪреНрдЪрдп рдХреЛ .o рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН рдХреБрдЫ рдереНрд░реЗрдб рд▓реЛрдХрд▓ рд╕реНрдЯреЛрд░реЗрдЬ init. рд╣рдореЗрдВ chkstk рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

  2. lld рдХреЛ MinGW рдХреА рд╕рд╛рдорд╛рдиреНрдп рдЖрдпрд╛рдд рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╣рдореЗрдВ lld-link рдпрд╛ llvm-dlltool рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ .def рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ .lib рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реНрд╡рдпрдВ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

  3. IMPORT_NAME_NOPREFIX рдХреЛ рдкрд╕рдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП lld рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ
    IMPORT_NAME_UNDECORATE, рдХреНрдпреЛрдВрдХрд┐ рдЪрд░рдг 2 рдХреЗ рд╕рд╛рде рднреА .libs рдкрд░рд┐рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВ

  4. TYPE_INFO_VTABLE рдХреЛ ptr::null() рд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП Rust рдХреЗ seh.rs рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВред рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреАрдХ ??_7type_info@@6B@ рдХреЛ MinGW рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдлрд┐рд░ рд░рд╕реНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред

  5. рдХрд╕реНрдЯрдо рд░реИрдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓рд┐рдВрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .cargo/config рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

  6. рд╣рдорд╛рд░реА рд░реИрдкрд░ рд▓рд┐рдВрдХрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрд▓рдПрд▓рдбреА-рд▓рд┐рдВрдХ рдХреЛ рдЬреНрдпрд╛рджрд╛рддрд░ рдЙрди рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╣рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:

    a) рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдЖрд╡рд░рдг рдХреЛ рдареАрдХ рдХрд░реЗрдВ рдЬреИрд╕реЗ AdvAPI32.Lib рдХреЛ advapi32.lib рдореЗрдВ рдмрджрд▓реЗрдВ

    рдмреА) .def рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ рдЬрдВрдЧ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреЗ рд╕рд╛рде рдЙрдкрд╕рд░реНрдЧ рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ

    рдЧ) рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ (/ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐) рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВред рд╢рд╛рдпрдж рдПрдХ рдирд╛рдо рдореИрдВрдЧрд▓рд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рд░рдг рдЖрд╡рд╢реНрдпрдХ рд╣реИред

    d) рдЪрд░рдг 1 рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХрд▓рд┐рдд mingw-crt рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ

  7. xargo --target=i686-pc-windows-msvc . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдирд╛ рд░рд╕реНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ

рдЙрдкрд░реЛрдХреНрдд рдЪрд░рдгреЛрдВ рдХреЛ рдХрд░рдиреЗ рд╕реЗ рдореБрдЭреЗ рд░рд╕реНрдЯ рдХреЛрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред рдореИрдВ рд░рд╕реНрдЯ рдХреЗ рдПрд╕рдИрдПрдЪ-рдЖрдзрд╛рд░рд┐рдд рдЕрдирдЗрдВрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рдШрдмрд░рд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рджрд╣рд╢рдд рдкрдХрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВред

@iainnicol рдЖрдк рдорд┐рдирдЬреАрдбрдмреНрд▓реНрдпреВ рдмрд┐рдЯреНрд╕ рдХреЗ рд╕рд╛рде рдПрдордПрд╕рд╡реАрд╕реА рд▓рдХреНрд╖реНрдп рдХреЛ рдорд┐рд▓рд╛ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЙрди рд╕рднреА рдЕрдЬреАрдм рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЛ рдХрд░рдирд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдореМрдЬреВрджрд╛ рд╡реАрд╕реА ++ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЙрди рд╕рднреА рд╕рдВрд╢реЛрдзрдиреЛрдВ рдпрд╛ рдХрд┐рд╕реА рднреА рдорд┐рдиреАрдЬреАрдбрдмреНрд▓реНрдпреВ рдмрд┐рдЯреНрд╕ рдХреЗ рдмрд┐рдирд╛ рдПрд▓рдПрд▓рдбреА-рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рдореИрдВ рдореМрдЬреВрджрд╛ рд╡реАрд╕реА ++ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЬрдВрдХ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдЬреИрд╕реЗ рдЖрда рдШрдВрдЯреЗ рдЦрд░реНрдЪ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рднреА рдирд╣реАрдВ рд╣реИ, рдкреБрдирд░реНрд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдоред

рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдмрд┐рд▓реНрдб рдЯреВрд▓реНрд╕ рдмрд╣реБрдд рд╣рд▓реНрдХреЗ рд╡рдЬрди рд╡рд╛рд▓реЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХрд╛ рдЬрд┐рдХреНрд░ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╢рд╛рдпрдж рд╣рдореЗрдВ рдорд┐рдирдЬреАрдбрдмреНрд▓реНрдпреВ рдиреЗ рдЬреЛ рдХреБрдЫ рдХрд┐рдпрд╛ рд╣реИ рдЙрд╕реЗ рд╕реБрдзрд╛рд░рдиреЗ рдпрд╛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдореЗрдВ рдХреБрдЫ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдордПрд╕рд╡реАрд╕реА рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИред

рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдмрд┐рд▓реНрдб рдЯреВрд▓ рдмрд╣реБрдд рд╣рд▓реНрдХреЗ-рд╡рдЬрди рд╡рд╛рд▓реЗ рд╣реЛрддреЗ рд╣реИрдВ

рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рдирд╣реАрдВ рд╣реБрдЖ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдЙрдирдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЙрдирд╕реЗ рд▓рд┐рдВрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдЪрд▓рд╛рдП рдмрд┐рдирд╛ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдЖрд░реНрдХрд╛рдЗрд╡ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдХреЛрдИ рдЙрдЪрд┐рдд рддрд░реАрдХрд╛ рд╣реИ рдпрд╛рдиреА рдпрд╣ рдПрдХ рдПрдордПрд╕рдЖрдИ рдпрд╛ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рд╣реИ?

рдпреЗ рд░рд╣реЗ: http://landinghub.visualstudio.com/visual-cpp-build-tools

2015 рдФрд░ 2017 рджреЛрдиреЛрдВ рд╕рдВрд╕реНрдХрд░рдг рдкреВрд░реНрд╡-рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЬреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕реЗ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП 2017 рдХреЗ рдПрдХреНрд╕рдИ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ: https://docs.microsoft.com/en-us/visualstudio/install/install-vs- рдЕрд╕рдВрдЧрдд-рдЧреБрдгрд╡рддреНрддрд╛-рдиреЗрдЯрд╡рд░реНрдХ

рдЕрдЧрд░ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдзрд┐рдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ https://github.com/rust-lang/rust/issues/30027 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рддрд╛рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдПрд╕рдбреАрдХреЗ рдпрд╛ рдорд┐рдирдЬреАрдбрдмреНрд▓реНрдпреВ рдХреЗ рдЖрдпрд╛рдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХреЗред рдлрд┐рд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ CRT рдмрд┐рдЯреНрд╕ рдХреЛ рдЕрдкрдиреЗ рд╢реБрджреНрдз рд░рд╕реНрдЯ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ (рдЧрдгрд┐рдд/рдореЗрдореЛрд░реА рдлрд╝рдВрдХреНрд╢рдВрд╕, рдПрдВрдЯреНрд░реА рдкреЙрдЗрдВрдЯ, рдХреБрдЫ рдЕрдиреНрдп рд░рдирдЯрд╛рдЗрдо рдмрд┐рдЯреНрд╕ рд░рд╕реНрдЯ рдХреА рдЬрд╝рд░реВрд░рддреЛрдВ) рдХреЗ рд╕рд╛рде рдмрджрд▓рдирд╛ рд╣реИ рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡-рдирд┐рд╣рд┐рдд рд░рд╕реНрдЯ рдЯреВрд▓рдЪреЗрди рд╣реЛрдЧрд╛ рдЬреЛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рд╡рд┐рдВрдбреЛрдЬ рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдмрдирд╛рдПрдВ! рдЗрд╕рдХрд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк C/C++ рдХреЛрдб рдХреЛ рд╕реНрдерд┐рд░ рд░реВрдк рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ MinGW рдпрд╛ VC++ рд╕реЗ рдЙрдкрдпреБрдХреНрдд CRT рдореЗрдВ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рд░рд╕реНрдЯ рдХрд╛ рдкреВрд░рд╛ рдмрд┐рдВрджреБ рд░рд╕реНрдЯ рдореЗрдВ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред

рд▓рд┐рдирдХреНрд╕ рд╕реЗ рд╡рд┐рдВрдбреЛрдЬрд╝ рддрдХ рдХреНрд░реЙрд╕ рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЗ рдЕрд╕реНрдкрд╖реНрдЯ рд╡рд┐рд╖рдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИред рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛ рдХрд┐ рдПрд▓рдПрд▓рдбреА рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдПрд▓рдПрд▓рдбреА рдХреЗ рдПрд▓рдбреА рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рд╕рдЪ рд╣реИред рдпрд╣ lld рдХреЗ link.exe рдлреНрд▓реЗрд╡рд░ (lld-link) рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдм рдПрд▓рдбреА рд╕реНрд╡рд╛рдж рдХреЗ рд╕рд╛рде рднреА рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: https://reviews.llvm.org/rL312926

рдирдпрд╛ lld рдХрд╛ MinGW-рд╕рдВрдЧрдд рдбреНрд░рд╛рдЗрд╡рд░ lld-link рд▓рд┐рдВрдХрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рд╣реИред рдпрд╣ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдпреВрдирд┐рдХреНрд╕-рдИрд╢ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╡рд┐рдВрдбреЛрдЬ-рдИрд╢ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдПрд▓рдПрд▓рдбреА-рд▓рд┐рдВрдХ рдХреЗ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рд▓реЛрдЧ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ (рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд░реИрдкрд░ рдбреНрд░рд╛рдЗрд╡рд░ рдЕрдзреВрд░рд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ) рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ рдЖрд╕рд╛рди рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА MinGW рдХреЗ рд▓рд┐рдП Makefiles рди рд╣реЛред

рдореЗрд░реЗ рдкрд╛рд╕ рдХреНрд░реЙрд╕-рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ (рд╢рд╛рдпрдж рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг) рдкреНрд░рд╢реНрди рд╣реИред рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░, рд╕рднреА dllimport'ed рдкреНрд░рддреАрдХреЛрдВ рдореЗрдВ рдбреАрдПрд▓рдПрд▓ рдирд╛рдо рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдирд╕реЗ рдЙрдиреНрд╣реЗрдВ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ MSVC рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдк рдХреИрд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди-рд╕реА рдлрд╝рд╛рдЗрд▓реЗрдВ dllimport'ed рдкреНрд░рддреАрдХреЛрдВ рд╕реЗ рдЖрдпрд╛рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ?

рдореЗрд░реЗ рдкрд╛рд╕ рдХреНрд░реЙрд╕-рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ (рд╢рд╛рдпрдж рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг) рдкреНрд░рд╢реНрди рд╣реИред рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░, рд╕рднреА dllimport'ed рдкреНрд░рддреАрдХреЛрдВ рдореЗрдВ рдбреАрдПрд▓рдПрд▓ рдирд╛рдо рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдирд╕реЗ рдЙрдиреНрд╣реЗрдВ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ MSVC рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдк рдХреИрд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди-рд╕реА рдлрд╝рд╛рдЗрд▓реЗрдВ dllimport'ed рдкреНрд░рддреАрдХреЛрдВ рд╕реЗ рдЖрдпрд╛рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ?

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдЖрдпрд╛рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдпрд╛ рддреЛ рдЖрдпрд╛рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ https://github.com/rust-lang/rust/issues/30027 рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ winapi рдкреВрд░реА рдореЗрд╣рдирдд рдХрд░ рд╕рдХреЗрдВ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддреАрдХ рдХреМрди рд╕рд╛ рдбреАрдПрд▓рдПрд▓ рдЬрд╝реЗрдирдиреЗрд╕ рдЬреИрд╕реЗ рдСрд░реНрдбрд┐рдирд▓реНрд╕ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИред рдбреАрдПрд▓рдПрд▓ рдореЗрдВ рдкреНрд░рддреАрдХреЛрдВ/рдСрд░реНрдбрд┐рдирд▓реНрд╕ рдХреЗ рд▓рд┐рдВрдХ рд╕рдордп рдкрд░ рдкреНрд░рддреАрдХреЛрдВ рдХреЗ рдорд╛рдирдЪрд┐рддреНрд░рдг рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣реИ, рдЪрд╛рд╣реЗ рд╡рд╣ рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рдЖрдпрд╛рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдпрд╛ рдПрдиреЛрдЯреЗрд╢рди рд╣реЛред

https://reviews.llvm.org/rL311734 рдореЗрдВ рдЦреАрдВрдЪрдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВ macOS рдкрд░ lld рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ rustc рдХреЛ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ рд╕рдХреНрд╖рдо рд╣реВрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ dylib рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЕрднреА рднреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╢рд╛рдЦрд╛ рд╣реИ рдЬреЛ https://github.com/rust-lang/rust/pull/36120 рдХреЛ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░рддреА рд╣реИ https://github.com/rust-lang/rust/issues/43370 рдкрд░ рдЕрд╡рд░реБрджреНрдз рд╣реИ

@tamird : #43370 рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдПрд▓рдПрд▓рдбреА рдХреЛ https://github.com/rust-lang/rust/pull/48125 рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдм рдЯрд┐рдпрд░ 1 рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо (рдореИрдХ, рд▓рд┐рдирдХреНрд╕, рд╡рд┐рдВрдбреЛрдЬрд╝) рдХреЗ рд╕рд╛рде рд╢рд┐рдкрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП -Z linker-flavor рд╕рд╛рде рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ MSVC рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

$ RUSTFLAGS='-Z linker-flavor=lld-link' cargo build

рдХрд╛рд░реНрдЧреЛ рдХреЗ рдЕрдкрдиреЗ рд▓рд┐рдВрдХ рд╕рдордп рдХреЛ 2.5 рд╕реЗ рдШрдЯрд╛рдХрд░ 1.5 рдХрд░ рджрд┐рдпрд╛, рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕реБрдзрд╛рд░!

@alexcrichton , рдЕрдЧрд▓реЗ рдЪрд░рдг рдХреНрдпрд╛ рд╣реИрдВ? рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдПрд▓рдПрд▓рдбреА рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдХреА рдХреЛрдИ рдЕрд╡рдзрд╛рд░рдгрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛), рдФрд░ рдлрд┐рд░ рдореИрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓рдЯрд╛рдЗрдо/рд░рдирдЯрд╛рдЗрдо рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдПрд▓рдПрд▓рдбреА рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдХреЛрдИ рднреА рдкреНрд▓реЗрдЯрдлреЙрд░реНрдоред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕рдВрдХрд▓рди рдХреЗ рд╕рд╛рде, рд▓рд┐рдВрдХрд┐рдВрдЧ рдкреНрд░рджрд░реНрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╕рдВрдХрд▓рди рдХреЗ рд╕рд╛рде, рд▓рд┐рдВрдХрд┐рдВрдЧ рдкреНрд░рджрд░реНрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдпрд╣ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдЕрднреА рднреА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдХрд░реЗрдВред https://github.com/rust-lang/rust/issues/37543

@bstree рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЕрдЧрд▓реЗ рдЪрд░рдг рд╣реИрдВ, рдЗрд╕реЗ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ :)

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдордПрд╕рд╡реАрд╕реА рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорд┐рдирдЬреАрдбрдмреНрд▓реНрдпреВ/рд▓рд┐рдирдХреНрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ, рдФрд░ рд╣рдо рдУрдПрд╕рдПрдХреНрд╕ рдкрд░ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИрдВред рдХреНрд░реЙрд╕-рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рднреА рдпрдХреАрди рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ wasm рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ "рд╕реНрдерд┐рд░" рдХрд░реЗрдВрдЧреЗред

@alexcrichton рдХреНрдпрд╛ рдореИрдВ рдкреВрдЫ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк "рд╕реНрдерд┐рд░реАрдХрд░рдг" рдХреИрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВрдЧреЗ? рдЕрдиреНрдп рдкреНрд░рдореБрдЦ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд░рд╕реНрдЯ рд╕рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдПрд▓рдПрд▓рдбреА рдХреЗ рд╕рд╛рде рд▓рд┐рдВрдХрд┐рдВрдЧ рдХреЛ "рд╕реНрдерд┐рд░" рдХрд░рдирд╛ рдХреНрдпреЛрдВ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛? (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП macOS рдХреЗ рд▓рд┐рдП linux рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреНрд░реЙрд╕-рдХрдВрдкрд╛рдЗрд▓рд┐рдВрдЧ)ред

рдЕрднреА, рдпрд╣ рдХреНрд░реЙрд╕-рдХрдВрдкрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдРрд╕рд╛ рджрд░реНрдж рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд▓рд┐рдирдХреНрд╕ рд╕реЗ macOS (x86_64-apple-darwin) рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛ рдХреНрд░реЙрд╕-рдХрдВрдкрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЧреИрд░-рддреБрдЪреНрдЫ рдЪрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреИрд╕реЗ рдХрд┐ xcode sdk рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рд╕рдВрдкреВрд░реНрдг рдЯреВрд▓рдЪреЗрди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ред

@cynecx рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рд╡рд╛рд▓ рд╣реИ! рдПрдХ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рдЬреНрдпрд╛рджрд╛ рдирд╣реАрдВ рд╕реЛрдЪрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо рдПрд▓рдПрд▓рдбреА рдХреЛ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рд╕реНрдерд┐рд░-рд╕реНрдерд┐рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рд╣реИ, рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдФрд░ рдХрд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП linux рд╕реЗ macOS (x86_64-apple-darwin) рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛ рдХреНрд░реЙрд╕-рдХрдВрдкрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЧреИрд░-рддреБрдЪреНрдЫ рдЪрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреИрд╕реЗ рдХрд┐ xcode sdk рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рд╕рдВрдкреВрд░реНрдг рдЯреВрд▓рдЪреЗрди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ред

рдПрд▓рдПрд▓рдбреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣рд╛рдВ рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдЖрдкрдХреЛ рдЕрднреА рднреА рдПрдХреНрд╕рдХреЛрдб рдПрд╕рдбреАрдХреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╣реЗрдбрд░ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдкреБрдирд░реНрд╡рд┐рддрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдФрд░ рдЬреЛ рдЖрдк рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдкрдХреЛ рдЕрдиреНрдп рдПрд╕рдбреАрдХреЗ рдЯреВрд▓реНрд╕ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА)ред

рдПрд▓рдПрд▓рдбреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЕрдм рд░рд╛рдд рдореЗрдВ рдмрд┐рд▓реНрдЯ-рдЗрди рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЖрдк RUSTFLAGS='-Z linker-flavor=ld.lld' cargo build --target x86_64-unknown-linux-musl рд╕рд╛рде рд╡рд┐рдВрдбреЛрдЬ рд╕реЗ рд▓рд┐рдирдХреНрд╕ рддрдХ рд╢реБрджреНрдз рд░рд╕реНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдХреНрд░реЙрд╕-рдХрдВрдкрд╛рдЗрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓рд┐рдирдХреНрд╕ рдорд╢реАрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреЗ рдЙрдкрдХрд░рдг рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдврд╝рд┐рдпрд╛, рдЖрдк рдмрд╕ рд░рд╕реНрдЯ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ wasm рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ "рд╕реНрдерд┐рд░" рдХрд░реЗрдВрдЧреЗред

рдЬреИрд╕реЗ @rkarp рдиреЗ рдХрд╣рд╛, рдХрдВрдЯреЗрдирд░реАрдХреГрдд рд▓рд┐рдирдХреНрд╕ рд╡рд░реНрдХрд▓реЛрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ x86_64-рдЕрдЬреНрдЮрд╛рдд-рд▓рд┐рдирдХреНрд╕-рдореБрд╕рд▓ (рдФрд░ рдЕрдВрддрддрдГ рд╕реНрдЯреАрдб) рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдЙрди рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬреЛ рдЧреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЬрд╣рд╛рдВ рд╣рдо рд░рд╕реНрдЯ рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд▓рдЧрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕реА рддрд░рд╣ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдореИрдВ рд╢рд░реНрдд рд▓рдЧрд╛рддрд╛ рд╣реВрдВ рдХрд┐ x86_64-рдЕрдЬреНрдЮрд╛рдд-рд▓рд┐рдирдХреНрд╕-рдореБрд╕рд▓ рдХреЗ рд▓рд┐рдП рдПрд▓рдПрд▓рдбреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ wasm рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЖрдо рддреМрд░ рдкрд░, рдЬрдм рдХреНрд░реЙрд╕-рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ "рдЗрд╕реЗ рд╕рднреА рдореЗрдЬрдмрд╛рдиреЛрдВ рдФрд░/рдпрд╛ рд╕рднреА рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП" рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓рдХреНрд╖реНрдп-рджрд░-рд▓рдХреНрд╖реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕реЗ рд╕реНрдерд┐рд░ рдХрд░рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд▓рдХреНрд╖реНрдп рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреЗ рд╣реИрдВред

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореИрдВ x86_64-рдЕрдЬреНрдЮрд╛рдд-рд▓рд┐рдирдХреНрд╕-рдореБрд╕рд▓ рд▓рдХреНрд╖реНрдп рдХреЗ рд▓рд┐рдП рдПрд▓рдПрд▓рдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рдорджрдж рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдЬреЛ ASAP рдХреЛ рд╕реНрдерд┐рд░ рдХрд░ рджреЗрдЧрд╛ред

рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ 37 рдХреНрд░реЗрдЯ рд╣реИрдВ, рдФрд░ рдмрд┐рд▓реНрдб рд▓рд┐рдВрдХ рд▓рдЧрднрдЧ 70 рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ (рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг) рд╣реИрдВред рдЕрд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рд░реВрдк рд╕реЗ (рдиреЗрддреНрд░рдЧреЛрд▓рдХ top ) рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдХрд╛ рдХрдо рд╕реЗ рдХрдо рдЖрдзрд╛ рд╣рдо рдХреЗрд╡рд▓ рдПрд▓рдбреА рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдПрд▓рдПрд▓рдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╣рдорд╛рд░реЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдХрд╛рдлреА рддреЗрдЬреА рдЖрдПрдЧреАред рд╣рдо рд╕реНрдерд┐рд░ рдЬрдВрдЧ рдкрд░ рд╣реИрдВ рдФрд░ рдореИрдВ рдЕрднреА рддрдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП lld 6.0 рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рдирд╣реАрдВ рд╣реБрдЖ рд╣реВрдВред

@briansmith рдХреНрдпрд╛ рдЖрдкрдиреЗ рдорд╕реНрд▓ рдФрд░ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП LLD рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ? рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ -Z linker-flavor=ld.lld , рдФрд░ рдпрджрд┐ рдпрд╣ рдХрд╛рдо рдкреНрд░рд╢рдВрд╕рдиреАрдп рд▓рдЧрддрд╛ рд╣реИ рддреЛ рд╣рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!

@rocallahan рд╕рд┐рд░реНрдл рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реЛрдиреЗ рдХреЗ рд▓рд┐рдВрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣реИ рдирд╛? (рдЬреИрд╕рд╛ рдХрд┐ afaik рдпрд╣ рдорд╛рдирдХ рдмрд┐рдиреБрдЯрд┐рд▓реНрд╕ рд▓рд┐рдВрдХрд░ рд╕реЗ рддреЗрдЬрд╝ рд╣реИ)ред рдпрджрд┐ -Z linker-flavor=ld.lld рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдФрд░ рддреЗрдЬрд╝ рд╣реИ) рддреЛ рд╣рдо рд╢рд╛рдпрдж рдЗрд╕реЗ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! рд╡рд╣ рдХрд┐рд╕ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдерд╛?

рдЕрд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рд░реВрдк рд╕реЗ (рдиреЗрддреНрд░рдЧреЛрд▓рдХ рд╢реАрд░реНрд╖) рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдХрд╛ рдХрдо рд╕реЗ рдХрдо рдЖрдзрд╛ рд╣рдо рдХреЗрд╡рд▓ рдПрд▓рдбреА рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВред

рдпрд╣ рдбрд┐рдмрдЧ рдмрд┐рд▓реНрдб BTW рдХреЗ рд▓рд┐рдП рд╣реИред

рдЖрдк рд╕рднреА рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЧреЛрд▓реНрдб рд▓рд┐рдВрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣реИ рдирд╛? (рдЬреИрд╕рд╛ рдХрд┐ afaik рдпрд╣ рдорд╛рдирдХ рдмрд┐рдиреБрдЯрд┐рд▓реНрд╕ рд▓рд┐рдВрдХрд░ рд╕реЗ рддреЗрдЬрд╝ рд╣реИ)

рдирд╣реАрдВ, рдпрд╣ рдлреЗрдбреЛрд░рд╛ рд╕рд┐рд╕реНрдЯрдо рд▓рд┐рдВрдХрд░ рд╣реИ, рдорд╛рдирдХ рдЬреАрдПрдирдпреВ рд▓рд┐рдВрдХрд░ред

рд╡рд╣ рдХрд┐рд╕ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдерд╛?

рдлреЗрдбреЛрд░рд╛ 27, рдПрд╕рдПрд╕рдбреА рдХреЗ рд╕рд╛рде рдХреНрд╡рд╛рдб-рдХреЛрд░ рд╕реНрдХрд╛рдИрд▓реЗрдХ рд▓реИрдкрдЯреЙрдкред рдореБрдЭреЗ рдХреБрдЫ рдкреНрд░рджрд░реНрд╢рди рд╕рдВрдЦреНрдпрд╛рдПрдБ рдорд┐рд▓реЗрдВрдЧреАред

рдЖрд╣ рдареАрдХ рд╣реИ рдЬрд╛рдирдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ! рд▓рд┐рдВрдХрд░ рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рдмрдЬрд╛рдп рдбрд┐рдмрдЧ рдмрд┐рд▓реНрдб рдХреЛ рд╢рд╛рдпрдж рд╕реНрдкреНрд▓рд┐рдЯ рдбреНрд╡рд╛рд░реНрдл (https://github.com/rust-lang/rust/issues/34651) рд╕реЗ рд▓рд┐рдВрдХ рд╕рдордп рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд▓рд╛рдн рдорд┐рд▓реЗрдЧрд╛ред

рд╕рдордп рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐, @rocallahan рдпрджрд┐ рдЖрдкрдХреЛ ld.gold рдФрд░ ld.lld рд╕рд╛рде рджрд┐рдорд╛рдЧ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдореМрдХрд╛ рдорд┐рд▓рддрд╛ рд╣реИ?

рдЬрд╝рд░реВрд░ред рдореБрдЭреЗ рдпрд╣ рднреА рдпрд╛рдж рджрд┐рд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдбрд┐рдмрдЧ рд▓рд┐рдВрдХ рд╕рдордп рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрдХ # 48762 рдмрд╣реБрдд рдХрдо рд▓рдЯрдХрд╛ рд╣реБрдЖ рдлрд▓ рд╣реИред (рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реИрдХ рдХреА рдЧрдИ рд▓рд┐рдВрдХрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╕реЗ .debug_pubnames / .debug_pubtypes рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред)

рд╕реНрдкреНрд▓рд┐рдЯ рдбреАрдбрдмреНрд▓реНрдпреВрдПрдЖрд░рдПрдл рднрд▓реЗ рд╣реА рдЕрдЪреНрдЫрд╛ рд╣реЛ рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдпреВрдЬрд░реНрд╕ рдХреЛ рдкрд░реЗрд╢рд╛рдиреА рднреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдореИрдВ рдЙрд╕ рдореБрджреНрджреЗ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реВрдВрдЧрд╛ред

@briansmith рдХреНрдпрд╛ рдЖрдкрдиреЗ рдорд╕реНрд▓ рдФрд░ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП LLD рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ? рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ -Z рд▓рд┐рдВрдХрд░-рдлреНрд▓реЗрд╡рд░ = ld.lld рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдпрджрд┐ рдпрд╣ рдХрд╛рдо рдкреНрд░рд╢рдВрд╕рдиреАрдп рд▓рдЧрддрд╛ рд╣реИ рддреЛ рд╣рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!

рдареАрдХ рд╣реИ, рдореИрдВ рдЪреАрдЬреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛ред рд╢рд╛рдпрдж рд╢реБрд░реБрдЖрдд рдореЗрдВ "рдбрд┐рдлрд╝реЙрд▓реНрдЯ" рдФрд░ "рдХреЗрд╡рд▓ рд░рд╛рдд рдореЗрдВ" рдХреЗ рдмреАрдЪ рдПрдХ рдордзреНрдп рдореИрджрд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдПрд▓рдПрд▓рдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдЬреИрд╕реЗ рд╣рдо -Z рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди -Z рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╕реНрдерд┐рд░ рдирд┐рд░реНрдорд╛рдг рдореЗрдВред

рд▓реЗрдХрд┐рди -Z рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рддрд╛рдХрд┐ рдпрд╣ рд╕реНрдерд┐рд░ рдмрд┐рд▓реНрдб рдореЗрдВ рдХрд╛рдо рдХрд░реЗред

рдЖрдк RUSTC_BOOTSTRAP=1 RUSTFLAGS="-Z linker-flavor=foo" cargo build рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдХреГрдкрдпрд╛ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рдзреНрд╡рдЬ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рди рдХрд░реЗрдВ? рдореБрдЭреЗ рдЪрд┐рдВрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдкрд░реНрдпрд╛рдкреНрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдЗрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреА рд╣реИрдВ рддреЛ рдЪреАрдЬреЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдерд┐рд░ рд╣реЛ рдЬрд╛рдПрдВрдЧреА, рдкреВрд░реЗ рд╕реНрдерд┐рд░рддрд╛ рддрдВрддреНрд░ рдХреЗ рдмрд┐рдВрджреБ рдХреЛ рд╣рд░рд╛рдХрд░ред

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ =/

рдПрдХ рдбреЗрдЯрд╛ рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ, рд░рд╕реНрдЯ рд░реЗрдкреЛ рдореЗрдВ rustc_trans рдЯреЛрдХрд░рд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдореЗрд░реА рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ 78s рд▓рд┐рдВрдХ рд╕рдордп рд╕реЗ 1s рд▓рд┐рдВрдХ рд╕рдордп рддрдХ рдЧрд┐рд░ рдЧрдпрд╛ред

рдореЗрд░реЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣рдорд╛рд░реЗ рдЯреЛрдХрд░рд╛ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдХреЗ рдкрд╛рд╕ рдПрдХ рдЯреЛрдХрд░рд╛ рдореЗрдВ рдПрдХ рд╕рдлреЗрдж рд╕реНрдерд╛рди рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рд╕реЗ рд╣реЛрддрд╛ рд╣реИред рдХреНрд╡рд╛рдб рдХреЛрд░ рд╕реНрдХрд╛рдИрд▓реЗрдХ рд▓реИрдкрдЯреЙрдк, 16 рдЬреАрдмреА рд░реИрдо, рд░рд╕реНрдЯрд╕реА 1.24.0, рдПрд▓рдПрд▓рдбреА 7.0.0, рдЬреАрдПрдирдпреВ рдПрд▓рдбреА 2.29-13ред рд╣рдо рдПрдХ рдХрд╕реНрдЯрдо рд▓рд┐рдВрдХрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ .debug_pubnames рдФрд░ .debug_pubtypes ; рд▓рд┐рдВрдХрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореМрдЬреВрдж рд╣реЛрдиреЗ рдкрд░ LLD рдХрд╛рдлреА рднрд┐рдиреНрди рдХреЛрдб рдкрдереЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХрд┐ рдЪреАрдЬреЗрдВ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИрдВред

рдЬреАрдПрдирдпреВ рдПрд▓рдбреА:

real    2m39.138s
user    8m18.992s
sys 1m37.513s

рдПрд▓рдПрд▓рдбреА:

real    2m19.164s
user    6m4.477s
sys 0m56.858s

рд╕реЛрдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдЖрдпрд╛, рдЗрд╕рдиреЗ рд╣рдорд╛рд░реА рд▓рд┐рдВрдХрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рд░реЛрдХ рд▓рдЧрд╛ рджреАред рдкрд░рд┐рдгрд╛рдо рдХрд╛рдлреА рд╕реНрдерд┐рд░ рд╣реИрдВред рдПрд▓рдПрд▓рдбреА рдПрдВрдб-рдЯреВ-рдПрдВрдб рд╕рдордп рдХреЛ рдЗрддрдирд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╕реАрдкреАрдпреВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░рддрд╛ рд╣реИ; рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рдирд┐рд░реНрдорд╛рдг рдПрд▓рдбреАрдПрд╕ рдХреЗ рдЦрддреНрдо рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рд╕рдордп рдирд╣реАрдВ рд▓рдЧрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реАрдкреАрдпреВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдЦрд░реНрдЪ рдХрд░рддрд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП #50584 рджреЗрдЦреЗрдВ рдЬрд╣рд╛рдВ GNU ld рд╕реЗ lld рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рд╕реЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп "рдорд╛рдореВрд▓реА рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг" рдХрд╛рд░реНрдпрднрд╛рд░ 2.5x рд╕реЗ рдЕрдзрд┐рдХ рддреЗрдЬреА рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИред

рдПрд░ https://github.com/rust-lang/rust/issues/50584#issuecomment -400918647 рдпрд╣рд╛рдВ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реИ:


рдПрд▓рдПрд▓рдбреА рдХреЛ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓рд╛ рдХрджрдо рдПрдХ рдзреНрд╡рдЬ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреИрд╕реЗ -Z рд▓рд┐рдВрдХрд░-рдлреНрд▓реЗрд╡рд░ = рдПрд▓рдПрд▓рдбреА, рд╕рднреА рд▓рдХреНрд╖реНрдпреЛрдВ (рд╡рд┐рдВрдбреЛрдЬ + рдореИрдХ + рд▓рд┐рдирдХреНрд╕) рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛ред рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рд╡рд╣ рдХрд░реЗрдЧрд╛ред

рдПрдХ рдмрд╛рд░ рдпрд╣ рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд╛рдВрдЧрддреЗ рд╣реБрдП рд╕рдореБрджрд╛рдп рдХреЛ рдЗрд╕рдХрд╛ рд╡рд┐рдЬреНрдЮрд╛рдкрди рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╣рдо рдПрд▓рдПрд▓рдбреА рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рджреЛрдиреЛрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд░ рд╕рдм рдХреБрдЫ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ (рдЬреЛ рдХрд┐ рдПрдХ рдирдП рд▓рд┐рдВрдХрд░ рдХреЗ рд╕рд╛рде рд╕рдВрджрд┐рдЧреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдХрднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ!) рд╣рдо рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЪрд╛рд▓реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ рд╣рдо рдПрд▓рдПрд▓рдбреА рдХреЗ рдЪрдпрди рдХреЛ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдХрд╛рд░реНрдЧреЛ рдореЗрдВ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред toml рддрд╛рдХрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрдо рд╕реЗ рдХрдо рдЗрд╕рдореЗрдВ рдСрдкреНрдЯ-рдЗрди рдХрд░ рд╕рдХреЗрдВред

рд╣рдордиреЗ рдХреБрдЫ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрд▓рдПрд▓рдбреА рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛ рд╣реИ: https://rust-embedded.github.io/blog/2018-08-2x-psa-cortex-m-breakage/

рдореИрдВ wasm рдХреЗ рд▓рд┐рдП рднреА рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ?

рдХреНрдпрд╛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдмрд╛рд╣рд░реА lld рдмрд╛рдЗрдирд░реА рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдФрд░ rustc рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдЖрдВрддрд░рд┐рдХ lld рд╕рдорд░реНрдерди рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рджреЛрдиреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рддреА рд╣реИ? рдпрд╛ рдХреЗрд╡рд▓ рдкреВрд░реНрд╡?

рдХреНрдпрд╛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдмрд╛рд╣рд░реА lld рдмрд╛рдЗрдирд░реА рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдФрд░ rustc рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдЖрдВрддрд░рд┐рдХ lld рд╕рдорд░реНрдерди рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рджреЛрдиреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рддреА рд╣реИ? рдпрд╛ рдХреЗрд╡рд▓ рдкреВрд░реНрд╡?

рдЬрд╕реНрдЯ рдПрдХреНрд╕рдЯрд░реНрдирд▓ lld рдмрд╛рдЗрдирд░реА, IIUCред

@nnethercote рдХреНрдпрд╛ рдЖрдВрддрд░рд┐рдХ рд▓рд┐рдВрдХрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдпрд╛ рдХреНрдпрд╛ рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рджрд░реНрдЬ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЖрдВрддрд░рд┐рдХ рд▓рд┐рдВрдХрд░ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИред рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред

рдПрд▓рдПрд▓рд╡реАрдПрдо рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓рдПрд▓рдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП https://github.com/rust-lang/rust/pull/57514 рдЬрдореАрди рддреИрдпрд╛рд░ рдХреАред

рд╢рд╛рдпрдж рд╢реБрд░реВ рдореЗрдВ "рдбрд┐рдлрд╝реЙрд▓реНрдЯ" рдФрд░ "рдХреЗрд╡рд▓ рд░рд╛рдд рдореЗрдВ" рдХреЗ рдмреАрдЪ рдПрдХ рдордзреНрдп рдореИрджрд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдПрд▓рдПрд▓рдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдЬреИрд╕реЗ рд╣рдо -Z рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди -Z рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рддрд╛рдХрд┐ рдпрд╣ рд╕реНрдерд┐рд░ рдмрд┐рд▓реНрдб рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХреЗред

https://github.com/rust-lang/rust/pull/56351 рдиреЗ -C linker-flavor рдЬреЛрдбрд╝рд╛ред

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдХреНрдпрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореБрджреНрджреЛрдВ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдХреЗ рдЯреВрд▓рдЪреЗрди рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ -рдПрдордПрд╕рд╡реАрд╕реА рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрд▓рдПрд▓рдбреА рдХреЗ рд╕рд╛рде рд▓рд┐рдВрдХ"ред

рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рдореБрджреНрджрд╛ рд╕рднреА рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрд▓рдПрд▓рдбреА рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓рд┐рдВрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрд▓рдПрд▓рдбреА рдмреЗрд╣рдж рддреЗрдЬ рд╣реИ, рдФрд░ рд▓рд┐рдВрдХрд┐рдВрдЧ рд╕рдордп рдЕрдХреНрд╕рд░ рд╕рдВрдХрд▓рди рд╕рдордп рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдХ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╕рдВрдХрд▓рди рдЧрддрд┐ рдПрдХ рдмрд╛рд░рд╣рдорд╛рд╕реА рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ рдореИрдВрдиреЗ рдмреАрдПрдордУ рдореЗрдВ рдореИрдХреЛрдЬрд╝ рдкрд░ рдмрдЧ рджрд╛рдпрд░ рдХрд┐рдпрд╛ред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдпрд╣ WONTFIX рд╣реИред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ "рдПрд▓рдПрд▓рдбреА рдмреЗрд╣рдж рддреЗрдЬ рд╣реИ" рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдПрд▓рдПрд▓рдбреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИрдВ, рдФрд░ рдореИрдХреЛрдЬрд╝ рдкрд░ рдПрдХ рд░реБрдХреЗ рд╣реБрдП рд╡рд┐рдХрд╛рд╕ рд╕реЗ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИред

@briansmith рд╕реЗ рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдореБрджреНрджреЛрдВ рдХреЛ рд░рдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╣рдо рдЗрд╕реЗ рдореЗрдЯрд╛рдмрдЧ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд░ рдХреЛрдИ рд╣реИ рдЬреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХрд┐рди рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╢реБрд░реБрдЖрддреА рдореБрджреНрджреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдмреЗрдЭрд┐рдЭрдХ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдПрд▓рдПрд▓рдбреА рд╕рдорд░реНрдерди рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрд╣реБрдд рдмрд╛рд╣рд░ рд╣реВрдВред

рдХреНрдпрд╛ рдПрд▓рдПрд▓рдбреА рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдирд╛ рдХрд╣реАрдВ рднреА рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ? рдореЗрд░реЗ рдкрд╛рд╕ (рд▓рд┐рдирдХреНрд╕ рдкрд░) rustc -C linker-flavor=ld.lld hello.rs , рд▓реЗрдХрд┐рди рдореБрдЭреЗ рднрд╛рдЧреНрдп рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдПрд▓рдПрд▓рд╡реАрдПрдо рдХреА рд╣рдорд╛рд░реА рдкреНрд░рддрд┐ рдХреЗ рд╕рд╛рде рдПрд▓рдПрд▓рдбреА рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпрд╛ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ? рдореИрдВрдиреЗ рдПрд▓рдПрд▓рдбреА рдХреЛ рдЙрдкрдпреБрдХреНрдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдВрдЧ рдЕрднреА рднреА рд░рд╣рд╕реНрдпрдордп рд╣реИред рдПрд▓рдПрд▓рдбреА рдХреЛ рд░рд╕реНрдЯ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЖрдЬрд╝рдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЬ рдХреМрди рд╕реЗ рдХрджрдо рдЙрдард╛рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП?

@bstree рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ -C linker=rust-lld рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдХреНрдпрд╛ рдЗрд╕реЗ рдХрд╛рд░реНрдЧреЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдЬрдВрдЧ рдФрд░ рдХрд╛рд░реНрдЧреЛ рдХреЗ рдирд╡реАрдирддрдо рд░рд╛рдд рдХреЗ рдирд┐рд░реНрдорд╛рдг рдкрд░ рдПрдХ рд░рд┐рдХреНрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВред

$ RUSTFLAGS='-C linker=rust-lld' cargo build
   Compiling rust3 v0.1.0 (/home/carado/tmp/rust3)
error: linking with `rust-lld` failed: exit code: 1
  |
  = note: "rust-lld" "-flavor" "gnu" "-L" "/home/carado/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "/home/carado/tmp/rust3/target/debug/deps/rust3-c4f8c40972021c55.2ualxzb8lqn4ho3y.rcgu.o" "/home/carado/tmp/rust3/target/debug/deps/rust3-c4f8c40972021c55.32vfyq64cfbzv618.rcgu.o" "/home/carado/tmp/rust3/target/debug/deps/rust3-c4f8c40972021c55.4rbt3m5y8o8cl09t.rcgu.o" "/home/carado/tmp/rust3/target/debug/deps/rust3-c4f8c40972021c55.ben0932xzwyt64v.rcgu.o" "/home/carado/tmp/rust3/target/debug/deps/rust3-c4f8c40972021c55.fzsdnygvstiwzxo.rcgu.o" "/home/carado/tmp/rust3/target/debug/deps/rust3-c4f8c40972021c55.x0rq6ifodcf11zi.rcgu.o" "-o" "/home/carado/tmp/rust3/target/debug/deps/rust3-c4f8c40972021c55" "/home/carado/tmp/rust3/target/debug/deps/rust3-c4f8c40972021c55.1m259ox4uzrzk583.rcgu.o" "--gc-sections" "-pie" "-zrelro" "-znow" "-L" "/home/carado/tmp/rust3/target/debug/deps" "-L" "/home/carado/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "--start-group" "-Bstatic" "/home/carado/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-44988553032616b2.rlib" "/home/carado/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-607feef6be9150b2.rlib" "/home/carado/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libbacktrace-a8dbf6d92401e34a.rlib" "/home/carado/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libbacktrace_sys-9a4716f5e8a3e722.rlib" "/home/carado/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-988a64d96b043c6d.rlib" "/home/carado/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-cadd6177b8c6d586.rlib" "/home/carado/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-8f1d8efc92b45369.rlib" "/home/carado/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-1e76014677816767.rlib" "/home/carado/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-cc28bce38cb195d9.rlib" "/home/carado/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-4123e9e89add689a.rlib" "/home/carado/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-4d259c17788c1fb5.rlib" "/home/carado/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-9495dbda85bb8f16.rlib" "/home/carado/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-793d0026c575805f.rlib" "--end-group" "/home/carado/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-33c3162edae6574e.rlib" "-Bdynamic" "-ldl" "-lrt" "-lpthread" "-lgcc_s" "-lc" "-lm" "-lrt" "-lpthread" "-lutil" "-lutil"
  = note: rust-lld: error: unable to find library -ldl
          rust-lld: error: unable to find library -lrt
          rust-lld: error: unable to find library -lpthread
          rust-lld: error: unable to find library -lgcc_s
          rust-lld: error: unable to find library -lc
          rust-lld: error: unable to find library -lm
          rust-lld: error: unable to find library -lrt
          rust-lld: error: unable to find library -lpthread
          rust-lld: error: unable to find library -lutil
          rust-lld: error: unable to find library -lutil


error: aborting due to previous error

error: Could not compile `rust3`.

To learn more, run the command again with --verbose.

рдореБрдЭреЗ рдХреИрд░рд╛рдбреЛ рдЬреИрд╕реА рд╣реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓ рд░рд╣реА рд╣реИрдВред рд▓рд┐рдВрдХрд░ рдЗрдирд╡реЛрдХреЗрд╢рди рдореЗрдВ "рд╢реВрд╣реЙрд░реНрди" -L /usr/lib рдореЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд, рд▓реЗрдХрд┐рди рдпрд╣ рдЫреВрдЯреЗ рд╣реБрдП рдХрд╛рдореЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ -lgcc рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрд╣реАрдВ рднреА libgcc рд░реВрдк рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ (рдПрдХ libgcc_s.a ) рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рдЧреНрдиреВ-рд╡рд╛рдж рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПред

@almindor RUSTFLAGS='-C linker=rust-lld -L /usr/lib -L /usr/lib/gcc/x86_64-pc-linux-gnu/9.1.0' рдпрд╛ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдкрде рдЖрдкрдХреЗ рдбрд┐рд╕реНрдЯреНрд░реЛ рдФрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ред

рдХреНрдпрд╛ рдКрдкрд░ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдПрд▓рдПрд▓рдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИ? рдореИрдВ рдЗрд╕реЗ рдХрд╛рдо рдкрд░ рдирд╣реАрдВ рд▓рд╛ рд╕рдХрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо SIGSEGV рд╕рд╛рде рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:

Reading symbols from target/debug/hello...
(gdb) show directories
Source directories searched: ~/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/lib/rustlib/etc:$cdir:$cwd
(gdb) r
Starting program: target/debug/hello 

Program received signal SIGSEGV, Segmentation fault.
core::ops::function::FnOnce::call_once{{vtable-shim}} () at /rustc/a7f28678bbf4e16893bb6a718e427504167a9494/src/libcore/ops/function.rs:231
(gdb) l
226     #[stable(feature = "fn_once_output", since = "1.12.0")]
227     type Output;
228 
229     /// Performs the call operation.
230     #[unstable(feature = "fn_traits", issue = "29625")]
231     extern "rust-call" fn call_once(self, args: Args) -> Self::Output;
232 }
233 
234 mod impls {
235     #[stable(feature = "rust1", since = "1.0.0")] 
(gdb) info reg
rax            0x0                 0
rbx            0x0                 0
rcx            0x0                 0
rdx            0x0                 0
rsi            0x0                 0
rdi            0x0                 0
rbp            0x0                 0x0
rsp            0x7fffffffddb0      0x7fffffffddb0
r8             0x0                 0
r9             0x0                 0
r10            0x0                 0
r11            0x0                 0
r12            0x0                 0
r13            0x0                 0
r14            0x0                 0
r15            0x0                 0
rip            0x7ffff7ffc000      0x7ffff7ffc000 <core::ops::function::FnOnce::call_once{{vtable-shim}}>
eflags         0x10202             [ IF RF ]
cs             0x33                51
ss             0x2b                43
ds             0x0                 0
es             0x0                 0
fs             0x0                 0
gs             0x0                 0
(gdb) disassemble 
Dump of assembler code for function core::ops::function::FnOnce::call_once{{vtable-shim}}:
=> 0x00007ffff7ffc000 <+0>: mov    (%rdi),%rax
   0x00007ffff7ffc003 <+3>: mov    (%rax),%rdi
   0x00007ffff7ffc006 <+6>: jmpq   *0x11d4(%rip)        # 0x7ffff7ffd1e0
End of assembler dump.

рдпрд╣рд╛рдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП, рдЬрд╛рджреВ рдордВрддреНрд░ RUSTFLAGS="-C link-arg=-fuse-ld=lld" cargo build рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬреАрд╕реАрд╕реА 9 рдпрд╛ рдХреНрд▓реИрдВрдЧ рдЖрдкрдХреЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, -C linker=clang рдХреЛ GCC рд╕рдВрд╕реНрдХрд░рдг рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

рдЗрд╕реЗ рд╕реНрдерд╛рдпреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕реЗ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ ~/.cargo/config рдпрд╛ .cargo/config рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

[build]
rustflags = ["-C", "linker=clang"]
# rustflags = ["-C", "link-arg=-fuse-ld=lld"]

@lnicola рдиреЛрдЯ рдпрд╣ рдХреЗрд╡рд▓ рдЬреАрд╕реАрд╕реА 9 рдпрд╛ рдХреНрд▓реИрдВрдЧ рдХреЛ рд╕реАрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

@bstree рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИ? рдЗрд╕рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╡рд░реЛрдзрдХ рдХреНрдпрд╛ рд╣реИрдВ?

@ mati865 рдХреНрдпрд╛ рдЖрдк рдкреБрд░рд╛рдиреЗ рдЬреАрд╕реАрд╕реА рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рдЖрдордВрддреНрд░рдг рдЬрд╛рдирддреЗ рд╣реИрдВ?

@lnicola рдореЗрд░реЗ рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдореЗрдВ

@jonhoo рдореИрдВ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрд┐рд╕реА рднреА рдХрд╛рдо рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реВрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХрдВрдкрд╛рдЗрд▓рд░ рдЯреАрдо рд╕реЗ рдкреВрдЫрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореИрдВ рдЯреАрдореЛрдВ рдХреЛ рдЯреИрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рдЙрдирдХреЗ рд▓рд┐рдП рдЕрдиреБрдЪрд┐рдд рд╢реЛрд░ рднреА рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ред рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рддреБрд░рдВрдд рд╡рд╣рд╛рдВ рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ?

рдЯреНрд░рд╛рдЗрдПрдЬ; @ рдЬрдВрдЧ-рд▓реИрдВрдЧ/рдХрдВрдкрд╛рдЗрд▓рд░ рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реИ?

рдпрд╣рд╛рдВ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЬреЛ рдПрд▓рдПрд▓рдбреА рдХреЛ рд░рд╕реНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдк рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╕рднреА рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ рдЕрднреА рднреА рдЬрдВрдЧрд▓реА рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдпрд╣рд╛рдВ рд╕реВрдЪреАрдмрджреНрдз рд╕рд▓рд╛рд╣ рдХреЗ рд╕рд╛рде рднреАред

рдореИрдВрдиреЗ рдКрдкрд░ рдЬреЛ рдЖрджреЗрд╢ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдЬреАрд╕реАрд╕реА 9.2.0 рдФрд░ рдПрд▓рдПрд▓рдбреА 9.0.0 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрднреА-рдХрднреА рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЬреАрд╕реАрд╕реА 9 рдХреЗ рд╕рд╛рде рджреЗрдЦрд╛ рд╣реИ рдЬреЛ -рдлреНрдпреВрдЬ = рдПрд▓рдПрд▓рдбреА рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ред рдореИрдХреЛрдЬрд╝ рдкрд░ рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдХреБрдЫ рд▓рд┐рдВрдХ рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред

рдпрд╣рд╛рдВ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЬреЛ рдПрд▓рдПрд▓рдбреА рдХреЛ рд░рд╕реНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдк рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╕рднреА рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ рдЕрднреА рднреА рдЬрдВрдЧрд▓реА рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдпрд╣рд╛рдВ рд╕реВрдЪреАрдмрджреНрдз рд╕рд▓рд╛рд╣ рдХреЗ рд╕рд╛рде рднреАред

рдмрд┐рд▓реНрд▓реА / рдЖрджрд┐ / рд╕рд┐рд╕реНрдЯрдо-рд░рд┐рд▓реАрдЬрд╝
рдлреЗрдбреЛрд░рд╛ рд░рд┐рд▓реАрдЬрд╝ 30 (рддреАрд╕)

рд╕реАрд╕реА --рд╕рдВрд╕реНрдХрд░рдг
рд╕реАрд╕реА (рдЬреАрд╕реАрд╕реА) 9.2.1 20190827 (рд░реЗрдб рд╣реИрдЯ 9.2.1-1)

ld.lld --рд╕рдВрд╕реНрдХрд░рдг
рдПрд▓рдПрд▓рдбреА 8.0.0 (рдЬреАрдПрдирдпреВ рд▓рд┐рдВрдХрд░реНрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд)

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ

рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рджреЗрдЦрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ Windows рдХреЗ рд▓рд┐рдП GCC 9 рд╣реИ рдЬреЛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ -fuse=lld

@lnicola
рд╡рд┐рдВрдбреЛрдЬ рдЬреАрд╕реАрд╕реА 9 -fuse-ld=lld рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ (рдЬрдм рддрдХ рдХрд┐ рд╡реЗ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдХреЛрдИ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд░реЗрдЧрд╛?)
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ rust-mingw рдШрдЯрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд▓рд┐рдВрдХрд░ рдХреЛ .cargo/config рдореЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рддрд░рд╣ rustc рдиреЗ рд╕рд┐рд╕реНрдЯрдо рдПрдХ рдХреЗ рдмрдЬрд╛рдп GCC 6 рдХреЛ рд╢рд┐рдк рдХрд┐рдпрд╛ред

рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рд╣рд╛рд░реНрдбрдХреЛрдбреЗрдб рд▓рд┐рдВрдХрд░ рдлреНрд▓реИрдЧ --enable-long-section-names рдЬреЛ рдПрд▓рдПрд▓рдбреА 9 рдФрд░ рдкреБрд░рд╛рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ)ред рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  • рд░реИрдкрд░ рдмрдирд╛рдПрдВ рдЬреЛ рдЗрд╕ рдзреНрд╡рдЬ рдХреЛ рдкрдЯреНрдЯреА рдХрд░рддрд╛ рд╣реИ
  • рдЗрд╕ рдзреНрд╡рдЬ рдХреЛ рдиреЛ-рдСрдк рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП LLD рдХреЛ рдкреИрдЪ рдХрд░реЗрдВ
  • рд╕реНрдерд╛рдиреАрдп рдкреИрдЪ рд╡рд╛рд▓реЗ рд░рд╕реНрдЯ рдмрд┐рд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬреЛ рдЗрд╕ рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ

рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рд╣рд╛рд░реНрдбрдХреЛрдбреЗрдб рд▓рд┐рдВрдХрд░ рдлреНрд▓реИрдЧ --enable-long-section-names рд╣реИ рдЬреЛ рдПрд▓рдПрд▓рдбреА 9 рдФрд░ рдкреБрд░рд╛рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ)ред

рдЗрд╕ рднрд╛рдЧ рджреНрд╡рд╛рд░рд╛ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: https://github.com/rust-lang/rust/pull/66257
рд╡рд┐рдВрдбреЛрдЬ-рдЬреАрдПрдирдпреВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрднреА рднреА рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдиреНрдпреБрдЕрд▓ рдХрд╛рдо рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ рдЬреЛ -fuse-ld=lld рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

@bstree : рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ- https://github.com/rust-gamedev/wg/issues/50

рдПрдХ рдФрд░ рдбреЗрдЯрд╛ рдмрд┐рдВрджреБ: рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ RUSTFLAGS="-C link-arg=-fuse-ld=lld" рдЬрдм рдирд┐рд░реНрдорд╛рдг rustc рд╣реА рд╣реИ, рд╕рдордп рдЬреЛрдбрд╝рдиреЗ рдореЗрд░рд╛ рд╡реНрд░рдд 14 рдХреЛрд░ рд▓рд┐рдирдХреНрд╕ рдмреЙрдХреНрд╕ рдкрд░ 41s рдХреЗ рд▓рд┐рдП 93S рд╕реЗ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред

@nnethercote: рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рд╣реИ рдХрд┐ рдЕрд▓рдЧ рд╣реИ linker=lld (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдореЗрдВ [target.x86_64-unknown-linux-gnu] рдХреА рдзрд╛рд░рд╛ config.toml ?

@ рд╣рд╛рд░реВрди 1011 : рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рджреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХрд╛ рдПрдХ рд╣реА рдкреНрд░рднрд╛рд╡ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИред

@Aaron1011 рдпрд╣ рдмрдЬрдирд╛ рдЪрд╛рд╣рд┐рдП, https://github.com/rust-lang/rust/issues/39915#issuecomment -538049306 рджреЗрдЦреЗрдВред

@ рдорддрд┐865
рдХреНрдпрд╛ рдЖрдкрдиреЗ рд▓рд┐рдВрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ LLD рдХреЗ рд╕рд╛рде x86_64-pc-windows-gnu рдкрд░ rustc рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ?

рдореИрдВрдиреЗ рдЖрдЬ рдЗрд╕реЗ рдЖрдЬрдорд╛рдпрд╛ рдФрд░ LLD рдпрд╛ рддреЛ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмреАрдЪ рдореЗрдВ рд▓рдЯрдХ рдЧрдпрд╛ рдФрд░ рдХреЛрдИ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛, рдпрд╛ unknown argument: --version-script=... рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХреАред
рд╣реИрдВрдЧ рддрдм рднреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм LLD рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ LLVM рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

[llvm]
use-linker = "lld"

рдЙрдкрдХрд░рдг рд╕рдВрд╕реНрдХрд░рдг:

$ ld.lld --version
LLD 9.0.1 (https://github.com/msys2/MINGW-packages.git 5e3b8820ed9f04221affee4197e458aca2612e87) (compatible with GNU linkers)

$ gcc --version
gcc.exe (Rev2, Built by MSYS2 project) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

@petrochenkov рд╣рд╛рдБ рдореИрдВ рдЗрд╕реЗ рдХреБрдЫ рд╣реИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ:

  • рдПрд▓рдПрд▓рдбреА рд╕реАрдУрдПрдлрдПрдл рдмреИрдХрдПрдВрдб рд▓рд┐рдВрдХрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдПрд▓рдбреА рдФрд░ рдПрд▓рдПрд▓рдбреА рджреЛрдиреЛрдВ рдПрдордПрд╕рд╡реАрд╕реА рд╢реИрд▓реА .def рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реИрдВ; рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди
  • LLD рдХреЛ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп lib (рдпрд╣ UNIX рджреБрдирд┐рдпрд╛ рдореЗрдВ рдПрдХ рдорд╛рдирдХ рд╣реИ) рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рддрд░рд╣ Rust рдиреЗ рд╕рднреА windows-* рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛: https://github.com/rust-lang/ рдЬрдВрдЧ/рдмреВрдБрдж/9ebf47851a357faa4cd97f4b1dc7835f6376e639/src/libstd/sys/windows/env.rs#L4
    рдПрд▓рдбреА рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдмреБрд░рд╛ рдирд╣реАрдВ рдорд╛рдирддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдПрд▓рдПрд▓рдбреА рдпрд╛ рдЬрдВрдЧ рдХреА рддрд░рдл рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдХреНрдХрд╛ рджреЗрдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдореИрдВ рдпрд╣рд╛рдВ рднрд╡рд┐рд╖реНрдп рдХреА рдХреБрдЫ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рдЬрдВрдЧ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдХреБрдЫ рдкреБрд░рд╛рдиреЗ рджрд░реНрдж рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗ:

  • рдмрд╛рд╣рд░реА рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдПрд▓рдПрд▓рдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЗрд╕реЗ рд░рд╕реНрдЯрд╕реА рдХреЗ рднреАрддрд░ рд╕реНрдерд┐рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдПрдВ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрд╣ рдЦреБрдж рдХреЛ рдЬрдВрдЧ рд▓рдЧрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдЦреНрдд рдПрдХреАрдХрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЖрдЙрдЯ-рдСрдл-рдмреЙрдХреНрд╕ рдЕрдиреБрднрд╡ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░рддрд╛ рд╣реИред
  • рд▓рд┐рдВрдХрд░ рдХрдорд╛рдВрдб рдХреЗ рд░реВрдк рдореЗрдВ lld рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрде рдирд╛рдореЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдФрд░ рдЬрдм рднреА рдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реА рд╕реНрдкреЗрд╕ рд╣реЛ рддреЛ рдбрд┐рд╕реНрдХ IO рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЙрди рдбреЗрдЯрд╛ рдХреЛ рдореЗрдореЛрд░реА-рдЯреВ-рдореЗрдореЛрд░реА рд╕реЗ рдкрд╛рд╕ рдХрд░реЗрдВред рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реИрдХрдбрд╝реЛрдВ рдпрд╛ рд╣рдЬрд╛рд░реЛрдВ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдбрд┐рд╕реНрдХ IO рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдВрдХрд▓рди рд╕рдордп рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред

рд▓рд┐рдВрдХрд░ рдХрдорд╛рдВрдб рдХреЗ рд░реВрдк рдореЗрдВ lld рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрде рдирд╛рдореЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдФрд░ рдЬрдм рднреА рдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реА рд╕реНрдкреЗрд╕ рд╣реЛ рддреЛ рдбрд┐рд╕реНрдХ IO рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЙрди рдбреЗрдЯрд╛ рдХреЛ рдореЗрдореЛрд░реА-рдЯреВ-рдореЗрдореЛрд░реА рд╕реЗ рдкрд╛рд╕ рдХрд░реЗрдВред рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реИрдХрдбрд╝реЛрдВ рдпрд╛ рд╣рдЬрд╛рд░реЛрдВ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдбрд┐рд╕реНрдХ IO рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдВрдХрд▓рди рд╕рдордп рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рд╕рд┐рд░реНрдл IO рдмреИрдВрдбрд╡рд┐рдбреНрде рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рд╡рд┐рдВрдбреЛрдЬ рдЬреИрд╕реЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрдм рд╡рд┐рдВрдбреЛрдЬ рдбрд┐рдлреЗрдВрдбрд░ рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЬрд┐рд╕ рдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдЖрдк рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡рд╣ рдХрд╛рдлреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдордп рдЬреБрд░реНрдорд╛рдирд╛ рдЬреЛрдбрд╝рддреА рд╣реИ, рдФрд░ рд░рд╕реНрдЯ рдХреЗ рдХреЛрдбрдЬреЗрди рдпреВрдирд┐рдЯ рдореЙрдбрд▓ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреНрд░реЗрдЯ рд╕реИрдХрдбрд╝реЛрдВ рдЫреЛрдЯреА рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдВрдХрд▓рди рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдордпред

рдпрд╣ рдмрдЧ рдереЛрдбрд╝рд╛ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬреЛ рд▓реЛрдЧ рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рддреНрд╡рд░рд┐рдд рд╕рд╛рд░рд╛рдВрд╢ рдореЗрдВ рдореЗрд░рд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╢реЙрдЯ рд╣реИред

рдПрд▓рдПрд▓рдбреА рдХреНрдпрд╛ рд╣реИ

рдПрдХ рд▓рд┐рдВрдХрд░ рдЬреЛ llvm рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЬреЛ рджреЛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИ:

  • рдпрд╣ рд╕рдВрдХрд▓рди рдХреЛ рдкрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдиреБрдХреВрд▓ рд╣реИ (рдЗрд╕рд▓рд┐рдП рдПрдореНрдмреЗрдбреЗрдб рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЬреЛрд░)
  • рдпрд╣ рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реИ (рдЕрдХреНрд╕рд░ рдЧреЛрд▓реНрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдзреЗ рд╕рдордп рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ - рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ (рд░рд╕реНрдЯрд╕реА, рд╕рд░реНрд╡реЛ, рдЖрджрд┐) рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХрд┐рдВрдЧ рдореЗрдВ рдХрдИ рдорд┐рдирдЯ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд▓рд┐рдВрдХрд┐рдВрдЧ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдмрд┐рд▓реНрдб рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рди рдХрд╛ рдПрдХ рдмрдбрд╝рд╛% рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд░рдирдЯрд╛рдЗрдо рдХреЛ рд░реЛрдХрдирд╛ рдПрдХ рд╣реИ рдмрдбрд╝реА рдмрд╛рддред)

рдЪреАрдЬреЗрдВ рд░рд╕реНрдЯ рдЖрдЬ lld рдХреЗ рд╕рд╛рде рдХрд░рддреА рд╣реИ

  • рд░рд╕реНрдЯ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ lld рдХреА рдЕрдкрдиреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХреЛ рдмрд╛рдЗрдирд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд┐рдк рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЗрд╕реЗ rust-lld . рдХрд╣рддреЗ рд╣реИрдВ
  • рдХрдИ рдмреЗрдпрд░-рдореЗрдЯрд▓ рд▓рдХреНрд╖реНрдпреЛрдВ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ rust-lld рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  • рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ wasm . рдХреЗ рд▓рд┐рдП rust-lld рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  • (?) рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ "-рд╕реА рд▓рд┐рдВрдХрд░-рд╕реНрд╡рд╛рдж" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрдВрдЧ-рдПрд▓рдПрд▓рдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЧреИрд░-рдирдВрдЧреЗ рдзрд╛рддреБ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдиреАрдЪреЗ рджреЗрдЦреЗрдВ)

рдЕрдзрд┐рдХ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд░рд╕реНрдЯ-рдПрд▓рдПрд▓рдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдБ (рдЕрд░реНрдерд╛рдд рдбреЗрд╕реНрдХрдЯреЙрдк linux/mac/windows)

  • lld рдХреЗ рд▓рд┐рдП macOS (Mach-O) рдмреИрдХрдПрдВрдб рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

    • рдЦрд░реЛрдВрдЪ рд╕реЗ рдПрдХ рдкреБрдирд░реНрд▓реЗрдЦрди рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рд╢реБрд░реБрдЖрддреА рджрд┐рди рд╣реИрдВ

  • рд▓рд┐рдирдХреНрд╕/рдпреВрдирд┐рдХреНрд╕ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░, рдЖрдкрдХреЛ рд╕реАрдзреЗ рдПрд▓рдбреА/рдПрд▓рдПрд▓рдбреА рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕рд┐рд╕реНрдЯрдо рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ (рдпрд╛рдиреА рдЬреАрд╕реАрд╕реА) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд┐рдВрдХрд░ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА crt1.o рдЬреИрд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рддреАрдХреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрд▓рдбреА рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рд░рд╕реНрдЯ-рдПрд▓рдПрд▓рдбреА рдХрд╛ "рд╕рд┐рд░реНрдл" рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ; рд╣рдореЗрдВ рдЗрд╕реЗ рдЬреАрд╕реАрд╕реА/рдХреНрд▓реИрдВрдЧ/рдЬреЛ рдХреБрдЫ рднреА рдЦрд┐рд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред (рд╣рдо рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рддреАрдХ рддрд░реНрдХ рдХреЛ рд╕реНрд╡рдпрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ)

    • рдЖрдо рддреМрд░ рдкрд░, рдЖрдк рд▓рд┐рдВрдХрд░ рдХреЛ рдкрде рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдЦреЛрдЬ рдкрде рдореЗрдВ "рдПрд▓рдбреА" рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛

    • рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рд╡рд╣реА рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЗрд╕реЗ "ld.lld" рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ "-fuse-ld=lld" рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ



      • рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ ll рдХреНрд▓реИрдВрдЧ-рд╕реНрдЯрд╛рдЗрд▓ рдмрд╛рдЗрдирд░реА рдирд╛рдо рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕реЗ "ld" рдпрд╛ "ld.lld" рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рдЬрд╛рдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)


      • рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ -fuse-ld=lld GCC 9 рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреАрдЪрд░/рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ (рдХреНрд▓реИрдВрдЧ рдореЗрдВ рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╣реИ)



  • windows-msvc рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ, рдФрд░ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмреИрдХрдПрдВрдб рдореЗрдВ rust-lld рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реАрдорд┐рдд рд╕рдорд░реНрдерди рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
  • рд╡рд┐рдВрдбреЛрдЬрд╝-рдорд┐рдВрдЧрд╡ рд▓рдЧрднрдЧ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд▓рд┐рдирдХреНрд╕/рдпреВрдирд┐рдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЖрдк рдПрдХ рдкреНрд░рд╛рдЪреАрди рдЬреАрд╕реАрд╕реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░рджрд╛рдпреА рд╣реИрдВ, рдФрд░ рдЪреАрдЬреЗрдВ рдереЛрдбрд╝реА рдЕрдЬреАрдм рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЫрджреНрдо-рд╡рд┐рдВрдбреЛрдЬрд╝-рд▓рд┐рдирдХреНрд╕ рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд╣реАрдВ рд╣реИ?

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, lld рдирдпрд╛ рд╣реИ, рдпрд╣ рдЕрдзрд┐рдХрд╛рдВрд╢ OSes рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд╣реАрдВ рд╣реИ, рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЧрдд рдмрдЧ рд▓рдЧрднрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рд╛рдордиреЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВред

рдореИрдВрдиреЗ рджреЛ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ (рдЬрдВрдЧ-) lld рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рд▓рд┐рдП рджреЛ рдореЗрдЯрд╛рдмрдЧреНрд╕ рджрд╛рдпрд░ рдХрд┐рдП рд╣реИрдВ:

  • #71515 - x64 рдЙрдмрдВрдЯреВ 20.04 рдПрд▓рдЯреАрдПрд╕ (рдФрд░ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╕рднреА x64 рдИрдПрд▓рдПрдл рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо)
  • #71520 - x64 рдПрдордПрд╕рд╡реАрд╕реА рд╡рд┐рдВрдбреЛ

windows-msvc рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ, рдФрд░ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмреИрдХрдПрдВрдб рдореЗрдВ rust-lld рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реАрдорд┐рдд рд╕рдорд░реНрдерди рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

LLD + windows-msvc рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ, рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ rustc рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реЗрдЯрдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

lld-link рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕рдорд░реНрдерди rustc рдмреИрдХрдПрдВрдб рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВ, рд▓реЗрдХрд┐рди https://github.com/rust-lang/rust/issues/68647 рдЬреИрд╕реЗ рдмрдЧ рд╣реИрдВ

  • рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ ll рдХреНрд▓реИрдВрдЧ-рд╕реНрдЯрд╛рдЗрд▓ рдмрд╛рдЗрдирд░реА рдирд╛рдо рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕реЗ "ld" рдпрд╛ "ld.lld" рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рдЬрд╛рдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)

рдпрд╣ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди ld рдФрд░ ld.lld рдПрдХ рд╣реА рдореЛрдб рд╣реИрдВ: https://github.com/rust-lang/llvm-project/blob/rustc/10.0-2020-02-05/lld/tools/lld/lldред cpp (8.0-2019-01-16 рдХреЗ рдмрд╛рдж рд╕реЗ рд╣реА)

  • рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ -fuse-ld=lld GCC 9 рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреАрдЪрд░/рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ (рдХреНрд▓реИрдВрдЧ рдореЗрдВ рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╣реИ)

рдЪреВрдВрдХрд┐ ld.lld ld рдХреЗ рд╕рдорд╛рди рд╣реИ, рдФрд░ https://patches-gcc.linaro.org/patch/11148/ рдХреЗ рдЕрдиреБрд╕рд╛рд░ -fuse-ld=lld рдХреЗ рд╕рд╛рде рдПрдХрдорд╛рддреНрд░ рдкрд░рд┐рд╡рд░реНрддрди ld рдХреЗ рдмрдЬрд╛рдп ld.lld рдЪрд▓рд╛рдирд╛ рд╣реИ, рдпрджрд┐ рд╣рдо рдкрде рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЬреАрд╕реАрд╕реА 9+ рдкрд░ рд▓реЙрдХ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐: рдбреЗрдмрд┐рдпрди рд╕реНрдерд┐рд░ рдореЗрдВ рдХреЗрд╡рд▓ 8.3 рд╣реИ, рдФрд░ рдмреБрд▓реНрд╕рдЖрдИ рд╢рд╛рдпрдж 2021 рддрдХ рд░рд┐рд▓реАрдЬрд╝ рдирд╣реАрдВ рд╣реЛрдЧреАред

  • рд╡рд┐рдВрдбреЛрдЬрд╝-рдорд┐рдВрдЧрд╡ рд▓рдЧрднрдЧ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд▓рд┐рдирдХреНрд╕/рдпреВрдирд┐рдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЖрдк рдПрдХ рдкреНрд░рд╛рдЪреАрди рдЬреАрд╕реАрд╕реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрддрд░рджрд╛рдпреА рд╣реИрдВ, рдФрд░ рдЪреАрдЬреЗрдВ рдереЛрдбрд╝реА рдЕрдЬреАрдм рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЫрджреНрдо-рд╡рд┐рдВрдбреЛрдЬрд╝-рд▓рд┐рдирдХреНрд╕ рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд╣реАрдВ рд╣реИ?

mingw-w64 6.0.0, 2018-09-16 рдХреЛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЗрд╕рдореЗрдВ gcc 8.3.0 рд╣реИ, рдЬрд┐рд╕рдореЗрдВ -fuse-ld=lld рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдХрд╛рдлреА рдирдпрд╛ рд╣реИред mingw-w64 7.0.0, 2019-11-11 рдХреЛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЗрд╕рдореЗрдВ рдЬреАрд╕реАрд╕реА 9.3.0 рд╣реИ, рдЬрд┐рд╕рдореЗрдВ -рдлреНрдпреВрдЬ-рдПрд▓рдбреА = рдПрд▓рдПрд▓рдбреА рд╣реИред рдбреЗрдмрд┐рдпрди рдмрд╕реНрдЯрд░ (рд╕реНрдерд┐рд░) рдореЗрдВ 6.0.0, рдмреБрд▓реНрд╕рдЖрдИ (рдкрд░реАрдХреНрд╖рдг) рдореЗрдВ 7.0.0 рд╣реИред рдбреЗрдмрд┐рдпрди рдЦрд┐рдВрдЪрд╛рд╡ (рдУрд▓реНрдбрд╕реНрдЯреЗрдмрд▓) рдореЗрдВ рдЬреАрд╕реАрд╕реА 6.3.0 рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ 5.0.1 рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреАрд╕реАрд╕реА 6.3 рдХреЗ рд╕рд╛рде рдорд╣рддреНрд╡рдкреВрд░реНрдг рдореБрджреНрджреЗ рд╣реЛрдиреЗ рдкрд░ рдПрд▓рдПрд▓рдбреА рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдирд╡реАрдирддрдо рдбреЗрдмрд┐рдпрди рд╕реНрдерд┐рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдореИрдВрдиреЗ рджреЛ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ (рдЬрдВрдЧ-) lld рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рд▓рд┐рдП рджреЛ рдореЗрдЯрд╛рдмрдЧреНрд╕ рджрд╛рдпрд░ рдХрд┐рдП рд╣реИрдВ:

  • #71515 - x64 рдЙрдмрдВрдЯреВ 20.04 рдПрд▓рдЯреАрдПрд╕ (рдФрд░ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╕рднреА x64 рдИрдПрд▓рдПрдл рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо)
  • #71520 - x64 рдПрдордПрд╕рд╡реАрд╕реА рд╡рд┐рдВрдбреЛ

lld рдХреЗ macOS (Mach-O) рдкреЛрд░реНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ, рдпрд╛ рдмрд╣реБрдд рдХрдо рд╕реЗ рдХрдо, https://github.com/rust-lang/rust/issues/39915#issuecomment -618726211 рдХреЗ рдмрд╛рдж рд╕реЗ рдХрд╛рдлреА рдмреЗрд╣рддрд░ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИред рд▓рд┐рдЦрд╛ рдЧрдпрд╛!

рдЗрд╕ рдПрд▓рдПрд▓рд╡реАрдПрдо рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдореИрдВрдиреЗ lld рдФрд░ рдЗрд╕реЗ рдЯреЛрдХрд┐рдпреЛ-рдЖрд░рдПрд╕/рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рд┐рдВрдХрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рддрдм nightly-x86_64-apple-darwin рдЦрд┐рд▓рд╛рдл рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдФрд░ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЪрд▓рд╛рдПред рдореИрдВ (рдбреАрдмрдЧ) рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЦреБрд╢ рд╣реВрдВ:

  • ld , рдПрдХ рд╕рд╛рдл cargo build рдореЗрдВ 35 рд╕реЗрдХрдВрдб рд▓рдЧреЗред
  • lld , рдПрдХ рд╕рд╛рдл cargo build рдореЗрдВ 20 рд╕реЗрдХрдВрдб рд▓рдЧреЗред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐:

  • рдпреЗ рдкреНрд░рджрд░реНрд╢рди рд╕рдВрдЦреНрдпрд╛ рд╣рд╛рд▓ рд╣реА рдХреЗ рдореИрдХрдмреБрдХ рдкреНрд░реЛ рд╕реЗ 32GB RAM рдФрд░ 8-рдХреЛрд░ i9 рдХреЗ рд╕рд╛рде рдЖрдИ рд╣реИ, рдФрд░
  • рдПрд▓рдПрд▓рдбреА рдФрд░ рдордЪ-рдУ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдмрдХрд╛рдпрд╛ рдореБрджреНрджреЗ рд╣реИрдВ ред

@davidbarsky рдХреВрд▓! рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рд╕реЗ рдмрд╛рд╣рд░, рдЙрд╕ рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ zld рдХреИрд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ? ( https://github.com/michaeleisel/zld )

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрдпрд╛ рдЖрдкрдиреЗ рдерд░реНрдорд▓ рдХрд╛ рд╣рд┐рд╕рд╛рдм рджрд┐рдпрд╛? рдПрдордмреАрдкреА рдмрд╣реБрдд рдЬрд▓реНрджреА рдерд░реНрдорд▓ рдереНрд░реЙрдЯрд▓рд┐рдВрдЧ рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рд╢рдВрд╕рдХ рдЧрддрд┐ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рдеред рдПрдХ рд░рди рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрд╕ рдХрд╛рдЬ рдХреЗ рдкрд╛рд╕ рдорд╢реАрди рдХреЗ рдирд┐рдЪрд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд╕реНрдкрд░реНрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдардВрдбрд╛ рд╣реЛрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рд╕реЗ рд╕реНрдерд┐рд░рддрд╛ рдореЗрдВ рдорджрдж рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рд╕рд┐рд░реНрдл рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдмрдЧ, рдЙрдмрдВрдЯреВ 16 i686 рдкрд░

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

SharplEr picture SharplEr  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

modsec picture modsec  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

lambda-fairy picture lambda-fairy  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

wthrowe picture wthrowe  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

overvenus picture overvenus  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ