GCC 12 рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реВрдЯрдЪреЗ рдкреНрд░рдХрд╛рд╢рди

рдПрдХрд╛ рд╡рд░реНрд╖рд╛рдЪреНрдпрд╛ рд╡рд┐рдХрд╛рд╕рд╛рдирдВрддрд░, рдореЛрдлрдд рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реВрдЯ GCC 12.1 рд░рд┐рд▓реАрдЬ рдХрд░рдгреНрдпрд╛рдд рдЖрд▓рд╛ рдЖрд╣реЗ, рдЬреЛ рдирд╡реАрди GCC 12.x рд╢рд╛рдЦреЗрддреАрд▓ рдкрд╣рд┐рд▓рд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдкреНрд░рдХрд╛рд╢рди рдЖрд╣реЗ. рдирд╡реАрди рд░рд┐рд▓реАрдЭ рдХреНрд░рдорд╛рдВрдХрди рдпреЛрдЬрдиреЗрдиреБрд╕рд╛рд░, рдЖрд╡реГрддреНрддреА 12.0 рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпреЗрдд рд╡рд╛рдкрд░рд▓реА рдЧреЗрд▓реА рдЖрдгрд┐ GCC 12.1 рдЪреНрдпрд╛ рдкреНрд░рдХрд╛рд╢рдирд╛рдЪреНрдпрд╛ рдХрд╛рд╣реА рдХрд╛рд│рд╛рдкреВрд░реНрд╡реА, GCC 13.0 рд╢рд╛рдЦрд╛ рдЖрдзреАрдЪ рдмрдВрдж рдЭрд╛рд▓реА рд╣реЛрддреА, рдЬреНрдпрд╛рдЪреНрдпрд╛ рдЖрдзрд╛рд░рд╛рд╡рд░ рдкреБрдвреАрд▓ рдкреНрд░рдореБрдЦ рдкреНрд░рдХрд╛рд╢рди, GCC 13.1, рд╣реЛрдИрд▓. рддрдпрд╛рд░ рдХрд░рдгреЗ. 23 рдореЗ рд░реЛрдЬреА, рдкреНрд░рдХрд▓реНрдк GCC рдЪреНрдпрд╛ рдкрд╣рд┐рд▓реНрдпрд╛ рдЖрд╡реГрддреНрддреАрдЪреНрдпрд╛ рд╕реНрдерд╛рдкрдиреЗрдкрд╛рд╕реВрди 35 рд╡рд░реНрд╖реЗ рд╕рд╛рдЬрд░реА рдХрд░реЗрд▓.

рдореБрдЦреНрдп рдмрджрд▓:

  • CTF (рдХреЙрдореНрдкреЕрдХреНрдЯ рдЯрд╛рдЗрдк рдлреЙрд░рдореЕрдЯ) рдбреАрдмрдЧрд┐рдВрдЧ рдлреЙрд░рдореЕрдЯрд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ рдЖрд╣реЗ, рдЬреЗ C рдкреНрд░рдХрд╛рд░, рдлрдВрдХреНрд╢рдиреНрд╕ рдЖрдгрд┐ рдбреАрдмрдЧрд┐рдВрдЧ рдЪрд┐рдиреНрд╣рд╛рдВрдордзреАрд▓ рдХрдиреЗрдХреНрд╢рдирдмрджреНрджрд▓ рдорд╛рд╣рд┐рддреАрдЪреЗ рдХреЙрдореНрдкреЕрдХреНрдЯ рд╕реНрдЯреЛрд░реЗрдЬ рдкреНрд░рджрд╛рди рдХрд░рддреЗ. ELF рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдордзреНрдпреЗ рдПрдореНрдмреЗрдб рдХреЗрд▓реНрдпрд╛рд╡рд░, рдбреЗрдЯрд╛ рдбреБрдкреНрд▓рд┐рдХреЗрд╢рди рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА рдлреЙрд░рдореЕрдЯ EFL рдХреЕрд░реЗрдХреНрдЯрд░ рдЯреЗрдмрд▓рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ.
  • 1980 рдордзреНрдпреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ "STABS" рдбреАрдмрдЧрд┐рдВрдЧ рдорд╛рд╣рд┐рддреА рд╕реНрдЯреЛрд░реЗрдЬ рдлреЙрд░рдореЕрдЯрд╕рд╛рдареА рд╕рдорд░реНрдерди рдирд╛рдкрд╕рдВрдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ.
  • C рдЖрдгрд┐ C++ рднрд╛рд╖рд╛рдВрд╕рд╛рдареА рднрд╡рд┐рд╖реНрдпрд╛рддреАрд▓ C2X рдЖрдгрд┐ C++ 23 рдорд╛рдирдХрд╛рдВрд╕рд╛рдареА рд╕рдорд░реНрдердирд╛рдЪрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреЗ рдХрд╛рдо рд╕реБрд░реВ рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, "рдЗрдл рдХреЙрдиреНрд╕реНрдЯреЗрд╡реНрд╣рд▓" рдЕрднрд┐рд╡реНрдпрдХреНрддреАрд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ; рдлрдВрдХреНрд╢рди рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕рдордзреНрдпреЗ рдСрдЯреЛ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА (тАЬf(auto(g()))тАЭ); constexpr рдореНрд╣рдгреВрди рдШреЛрд╖рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдлрдВрдХреНрд╢рдиреНрд╕рдордзреНрдпреЗ рдиреЙрди-рд▓рд┐рдЯрд░рд▓ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕, рдЧреЛрдЯреЛ рдЖрдгрд┐ рд▓реЗрдмрд▓реНрд╕рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рдгреНрдпрд╛рд╕ рдкрд░рд╡рд╛рдирдЧреА рдЖрд╣реЗ; рдмрд╣реБрдЖрдпрд╛рдореА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдСрдкрд░реЗрдЯрд░ рдСрдкрд░реЗрдЯрд░рд╕рд╛рдареА рдЬреЛрдбрд▓реЗрд▓реЗ рд╕рдорд░реНрдерди[]; рдЬрд░, рд╕рд╛рдареА рдЖрдгрд┐ рд╕реНрд╡рд┐рдЪ, рдЗрдирд┐рд╢рд┐рдПрд▓рд╛рдпрдЭреЗрд╢рди рдмреНрд▓реЙрдХреНрд╕рдЪреА рдХреНрд╖рдорддрд╛ рд╡рд╛рдврд╡рд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ (тАЬрд╕рд╛рдареА (T = int рд╡рд╛рдкрд░реВрди; T e : v)тАЭ).
  • C++ рд╕реНрдЯрдБрдбрд░реНрдб рд▓рд╛рдпрдмреНрд░рд░реАрдиреЗ C++20 рдЖрдгрд┐ C++23 рдорд╛рдирдХрд╛рдВрдЪреНрдпрд╛ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╡рд┐рднрд╛рдЧрд╛рдВрд╕рд╛рдареА рд╕рдорд░реНрдерди рд╕реБрдзрд╛рд░рд▓реЗ рдЖрд╣реЗ. std::move_only_function рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ, , std::basic_string::resize_and_overwrite, , рдЖрдгрд┐ std::invoke_r. constexpr рдлрдВрдХреНрд╢рдиреНрд╕рдордзреНрдпреЗ std::unique_ptr, std::vector, std::basic_string, std::optional рдЖрдгрд┐ std::variant рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рдЖрд╣реЗ.
  • Fortran рдлреНрд░рдВрдЯрдПрдВрдб TS 29113 рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирд╕рд╛рдареА рдкреВрд░реНрдг рд╕рдорд░реНрдерди рдкреБрд░рд╡рддреЛ, рдЬреЗ рдлреЛрд░рдЯреНрд░рд╛рди рдЖрдгрд┐ C рдХреЛрдб рджрд░рдореНрдпрд╛рди рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреНрд╖рдорддрд╛рдВрдЪреЗ рд╡рд░реНрдгрди рдХрд░рддреЗ.
  • __builtin_shufflevector(vec1, vec2, index1, index2, ...) рдПрдХреНрд╕реНрдЯреЗрдВрд╢рдирд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ рдЖрд╣реЗ рдЬреЗ рдХреНрд▓реЕрдВрдЧрдордзреНрдпреЗ рдкреВрд░реНрд╡реА рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреЗ рд╕рд╛рдорд╛рдиреНрдп рд╡реЗрдХреНрдЯрд░ рд╢рдлрд▓ рдЖрдгрд┐ рд╢рдлрд▓ рдСрдкрд░реЗрд╢рдиреНрд╕ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд┐рдВрдЧрд▓ рдХреЙрд▓ рдСрдлрд░ рдХрд░рддреЗ.
  • "-O2" рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рд╕реНрддрд░ рд╡рд╛рдкрд░рддрд╛рдирд╛, рд╡реНрд╣реЗрдХреНрдЯрд░рд╛рдпрдЭреЗрд╢рди рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рд╕рдХреНрд╖рдо рдХреЗрд▓реЗ рдЬрд╛рддреЗ (-ftree-vectorize рдЖрдгрд┐ -fvect-cost-model=рдЕрддреНрдпрдВрдд-рд╕реНрд╡рд╕реНрдд рдореЛрдб рд╕рдХреНрд╖рдо рдХреЗрд▓реЗ рдЖрд╣реЗрдд). рдЕрддреНрдпрдВрдд рд╕реНрд╡рд╕реНрдд рдореЙрдбреЗрд▓ рд╡реНрд╣реЗрдХреНрдЯрд░реАрдХрд░рдгрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ рддреЗрд╡реНрд╣рд╛рдЪ рд╡реНрд╣реЗрдХреНрдЯрд░ рдХреЛрдб рд╕реНрдХреЗрд▓рд░ рдХреЛрдбрд▓рд╛ рдкреВрд░реНрдгрдкрдгреЗ рдмрджрд▓реВ рд╢рдХрддреЛ.
  • рд╕рдорд╕реНрдпрд╛рдВрдЪрд╛ рдорд╛рдЧреЛрд╡рд╛ рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рд╕реБрд░реВ рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рднреЗрджреНрдпрддрд╛ рдЕрд╡рд░реЛрдзрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реНрдЯреЕрдХрд╡рд░реАрд▓ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдЪреЗ рд╕реНрдкрд╖реНрдЯ рдЖрд░рдВрднреАрдХрд░рдг рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА "-ftrivial-auto-var-init" рдореЛрдб рдЬреЛрдбрд▓рд╛.
  • C рдЖрдгрд┐ C++ рднрд╛рд╖рд╛рдВрд╕рд╛рдареА, рдСрдмреНрдЬреЗрдХреНрдЯрдЪрд╛ рдЖрдХрд╛рд░ рдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрдВрдЧрднреВрдд рдлрдВрдХреНрд╢рди __builtin_dynamic_object_size рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреЗ рдХреНрд▓реЕрдВрдЧрдЪреНрдпрд╛ рд╕рдорд╛рди рдлрдВрдХреНрд╢рдирд╢реА рд╕реБрд╕рдВрдЧрдд рдЖрд╣реЗ.
  • C рдЖрдгрд┐ C++ рднрд╛рд╖рд╛рдВрд╕рд╛рдареА, "рдЕрдиреБрдкрд▓рдмреНрдз" рд╡рд┐рд╢реЗрд╖рддрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЖрдкрдг рдлрдВрдХреНрд╢рдиреНрд╕ рдЪрд┐рдиреНрд╣рд╛рдВрдХрд┐рдд рдХрд░реВ рд╢рдХрддрд╛ рдЬреЗ рдЖрдкрдг рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓реНрдпрд╛рд╕ рддреНрд░реБрдЯреА рдирд┐рд░реНрдорд╛рдг рдХрд░рддреАрд▓).
  • C рдЖрдгрд┐ C++ рднрд╛рд╖рд╛рдВрд╕рд╛рдареА, "#elifdef" рдЖрдгрд┐ "#elifndef" рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдирд┐рд░реНрджреЗрд╢рд╛рдВрд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ.
  • UTF-8 рд╡рд░реНрдг рдЪреБрдХреАрдЪреНрдпрд╛ рдкрджреНрдзрддреАрдиреЗ рд╡рд╛рдкрд░рд▓реЗ рдЕрд╕рд▓реНрдпрд╛рд╕ рдЪреЗрддрд╛рд╡рдгреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА "-Wbidi-chars" рдзреНрд╡рдЬ рдЬреЛрдбрд▓рд╛, рджреНрд╡рд┐рджрд┐рд╢рд╛рддреНрдордХ рдордЬрдХреВрд░ рдЬреНрдпрд╛ рдХреНрд░рдорд╛рдиреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ рддреЛ рдХреНрд░рдо рдмрджрд▓реВрди.
  • рдЕреЕрд░реЗрдЪрд╛ рд╕рдВрджрд░реНрдн рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рджреЛрди рдСрдкрд░реЗрдВрдбрдЪреА рддреБрд▓рдирд╛ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддрд╛рдирд╛ рдЪреЗрддрд╛рд╡рдгреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА "-Warray-рддреБрд▓рдирд╛" рдзреНрд╡рдЬ рдЬреЛрдбрд▓рд╛.
  • OpenMP 5.0 рдЖрдгрд┐ 5.1 (рдУрдкрди рдорд▓реНрдЯреА-рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ) рдорд╛рдирдХрд╛рдВрдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА, рдЬреЗ API рдЖрдгрд┐ рд╕рд╛рдорд╛рдпрд┐рдХ рдореЗрдорд░реА рдЖрдгрд┐ рд╡реНрд╣реЗрдХреНрдЯрд░рд╛рдпрдЭреЗрд╢рди рдпреБрдирд┐рдЯреНрд╕ (SIMD) рд╕рд╣ рдорд▓реНрдЯреА-рдХреЛрд░ рдЖрдгрд┐ рд╣рд╛рдпрдмреНрд░рд┐рдб (CPU+GPU/DSP) рд╕рд┐рд╕реНрдЯреАрдорд╡рд░ рд╕рдорд╛рдВрддрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрджреНрдзрддреА рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдкрджреНрдзрддреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛рдд. , рд╕реБрд░реВ рдареЗрд╡рд▓реА рдЖрд╣реЗ.
  • OpenACC 2.6 рд╕рдорд╛рдВрддрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рдирдЪреА рд╕реБрдзрд╛рд░рд┐рдд рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА, рдЬреА GPU рдЖрдгрд┐ NVIDIA PTX рд╕рд╛рд░рдЦреНрдпрд╛ рд╡рд┐рд╢реЗрд╖ рдкреНрд░реЛрд╕реЗрд╕рд░рд╡рд░ рдСрдлрд▓реЛрдбрд┐рдВрдЧ рдСрдкрд░реЗрд╢рдиреНрд╕рд╕рд╛рдареА рдЯреВрд▓реНрд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ.
  • рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╕реВрдЪрдирд╛ рдЗрдВрдЯреЗрд▓ AVX86-FP512 рдЖрдгрд┐ _Float16 рдкреНрд░рдХрд╛рд░рд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди x16 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╛рдареА рдХреЛрдб рдЬрдирд░реЗрд╢рди рдмреЕрдХрдПрдВрдбрдордзреНрдпреЗ рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ.
  • x86 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╛рдареА, рдмрд┐рдирд╢рд░реНрдд рдлреЙрд░рд╡рд░реНрдб рдЬрдВрдк рдСрдкрд░реЗрд╢рдиреНрд╕рдирдВрддрд░ рд╕реВрдЪрдирд╛рдВрдЪреНрдпрд╛ рд╕рдЯреНрдЯрд╛ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдореБрд│реЗ рдкреНрд░реЛрд╕реЗрд╕рд░рдордзреАрд▓ рднреЗрджреНрдпрддреЗрдкрд╛рд╕реВрди рд╕рдВрд░рдХреНрд╖рдг рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ. рдореЗрдорд░реАрдордзреАрд▓ рд╢рд╛рдЦрд╛ рд╕реВрдЪрдирд╛ (рдПрд╕рдПрд▓рдПрд╕, рд╕реНрдЯреНрд░реЗрдЯ рд▓рд╛рдЗрди рд╕реНрдкреЗрдХреНрдпреБрд▓реЗрд╢рди) рдирдВрддрд░ рддрд╛рдмрдбрддреЛрдм рд╕реВрдЪрдирд╛рдВрдЪреНрдпрд╛ рдкреНрд░реА-рдПрдореНрдкреНрдЯрд┐рд╡реНрд╣ рдкреНрд░рдХреНрд░рд┐рдпреЗрдореБрд│реЗ рд╕рдорд╕реНрдпрд╛ рдЙрджреНрднрд╡рддреЗ. рд╕рдВрд░рдХреНрд╖рдг рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, тАЬ-mharden-slsтАЭ рдкрд░реНрдпрд╛рдп рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЖрд╣реЗ.
  • рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╕реНрдЯреЕрдЯрд┐рдХ рдЕреЕрдирд╛рд▓рд╛рдпрдЭрд░рдордзреНрдпреЗ рд╕реБрд░реВ рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рдЪрд╛ рд╢реЛрдз рдЬреЛрдбрд▓рд╛. рдЗрдирд▓рд╛рдЗрди рдЗрдиреНрд╕рд░реНрдЯрдордзреНрдпреЗ рдЕрд╕реЗрдВрдмрд▓реА рдХреЛрдбрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ. рд╕реБрдзрд╛рд░рд┐рдд рдореЗрдорд░реА рдЯреНрд░реЕрдХрд┐рдВрдЧ. рд╕реНрд╡рд┐рдЪ рдЕрднрд┐рд╡реНрдпрдХреНрддреАрдВрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЛрдб рдкреБрдиреНрд╣рд╛ рд▓рд┐рд╣рд┐рд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ.
  • libgccjit рдордзреНрдпреЗ 30 рдирд╡реАрди рдХреЙрд▓реНрд╕ рдЬреЛрдбрд▓реЗ, рдХреЛрдб рдЬрдирд░реЗрдЯрд░рд▓рд╛ рдЗрддрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдВрдордзреНрдпреЗ рдПрдореНрдмреЗрдб рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ JIT рдХрдВрдкрд╛рдЗрд▓ рдмрд╛рдпрдЯреЗрдХреЛрдб рдорд╢реАрди рдХреЛрдбрдордзреНрдпреЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рд╕рд╛рдорд╛рдпрд┐рдХ рд▓рд╛рдпрдмреНрд░рд░реА.
  • рд╕реАрдУ-рдЖрд░рдИ (рдПрдХрджрд╛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рд╛ - рд╕рд░реНрд╡рддреНрд░ рдЪрд╛рд▓рд╡рд╛) рдпрдВрддреНрд░рдгреЗрд╕рд╛рдареА рд╕рдорд░реНрдерди BPF рдмрд╛рдЗрдЯрдХреЛрдб рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдмреЕрдХрдПрдВрдбрдордзреНрдпреЗ рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдирд▓рд╕рд╛рдареА eBPF рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕рдЪрд╛ рдХреЛрдб рдлрдХреНрдд рдПрдХрджрд╛рдЪ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЖрдгрд┐ рд╡рд┐рд╢реЗрд╖ рдпреБрдирд┐рд╡реНрд╣рд░реНрд╕рд▓ рд▓реЛрдбрд░рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. рд╡рд░реНрддрдорд╛рди рдХрд░реНрдирд▓ рдЖрдгрд┐ BPF рдкреНрд░рдХрд╛рд░ рдлреЙрд░рдореЕрдЯрд╡рд░ рд▓реЛрдб рдХреЗрд▓реЗрд▓рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо). CO-RE рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ eBPF рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕рдЪреНрдпрд╛ рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреАрдЪреНрдпрд╛ рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рддреЗ, рдЬреЗ рдкреВрд░реНрд╡реА рдлрдХреНрдд рдХрд░реНрдирд▓рдЪреНрдпрд╛ рдЖрд╡реГрддреНрддреАрдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рдЬреНрдпрд╛рд╕рд╛рдареА рддреЗ рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рд╣реЛрддреЗ, рдХрд╛рд░рдг рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕рдордзреАрд▓ рдШрдЯрдХрд╛рдВрдЪреА рд╕реНрдерд┐рддреА рдЖрд╡реГрддреНрддреА рддреЗ рдЖрд╡реГрддреНрддреА рдмрджрд▓рддреЗ.
  • RISC-V рдмреЕрдХрдПрдВрдб рдирд╡реАрди рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рд╕реЗрдЯ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╡рд┐рд╕реНрддрд╛рд░ zba, zbb, zbc рдЖрдгрд┐ zbs, рддрд╕реЗрдЪ рд╡реЗрдХреНрдЯрд░ рдЖрдгрд┐ рд╕реНрдХреЗрд▓рд░ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлрд┐рдХ рдСрдкрд░реЗрд╢рдиреНрд╕рд╕рд╛рдареА ISA рд╡рд┐рд╕реНрддрд╛рд░рд╛рдВрд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрддреЗ. рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░, RISC-V ISA 20191213 рддрдкрд╢реАрд▓рд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХреЗрд▓реЗ рдЖрд╣реЗ. T-HEAD c906 рдХреЛрд░рд╕рд╛рдареА рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рд╕рдХреНрд╖рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА -mtune=thead-c906 рдзреНрд╡рдЬ рдЬреЛрдбрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ.
  • GCN рдорд╛рдпрдХреНрд░реЛрдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╡рд░ рдЖрдзрд╛рд░рд┐рдд AMD GPU рд╕рд╛рдареА __int128_t/integer(kind=16) рдкреНрд░рдХрд╛рд░рд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдХреЛрдб рдЬрдирд░реЗрд╢рди рдмреЕрдХрдПрдВрдбрдордзреНрдпреЗ рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ. рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдкреНрдпреБрдЯрд┐рдВрдЧ рдпреБрдирд┐рдЯ (CU) рдкрд░реНрдпрдВрдд 40 рдХрд╛рд░реНрдп рдЧрдЯ рдЖрдгрд┐ рдкреНрд░рддрд┐ рдЧрдЯ 16 рд╕реВрдЪрдирд╛ рдлреНрд░рдВрдЯ (рд╡реЗрд╡реНрд╣рдлреНрд░рдВрдЯ, SIMD рдЗрдВрдЬрд┐рдирджреНрд╡рд╛рд░реЗ рд╕рдорд╛рдВрддрд░рдкрдгреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдереНрд░реЗрдбреНрд╕рдЪрд╛ рд╕рдВрдЪ) рд╡рд╛рдкрд░рдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ. рдкреВрд░реНрд╡реА, рдкреНрд░рддрд┐ CU рдлрдХреНрдд рдПрдХ рд╕реВрдЪрдирд╛ рдХрд┐рдирд╛рд░реА рдкрд░рд╡рд╛рдирдЧреА рд╣реЛрддреА.
  • NVPTX рдмреЕрдХрдПрдВрдб, NVIDIA PTX (Parallel Thread Execution) рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рд╕реЗрдЯ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╡рд╛рдкрд░реВрди рдХреЛрдб рдЬрдирд░реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓реЗ, тАЬ-marchтАЭ, тАЬ-mptxтАЭ рдЖрдгрд┐ тАЬ-march-mapтАЭ рдзреНрд╡рдЬ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд▓реА рдЖрд╣реЗ. PTX ISA sm_53, sm_70, sm_75 рдЖрдгрд┐ sm_80 рд╕рд╛рдареА рд▓рд╛рдЧреВ рдХреЗрд▓реЗрд▓реЗ рд╕рдорд░реНрдерди. рдбреАрдлреЙрд▓реНрдЯ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ sm_30 рдЖрд╣реЗ.
  • PowerPC / PowerPC64 / RS6000 рдкреНрд░реЛрд╕реЗрд╕рд░рд╕рд╛рдареА рдмреЕрдХрдПрдВрдбрдордзреНрдпреЗ, рдЕрдВрдЧрднреВрдд рдлрдВрдХреНрд╢рдиреНрд╕рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдкреБрдиреНрд╣рд╛ рд▓рд┐рд╣рд┐рд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ. рдЕрдВрдЧрднреВрдд рдлрдВрдХреНрд╢рдиреНрд╕ __builtin_get_texasr, __builtin_get_texasru, __builtin_get_tfhar, __builtin_get_tfiar, __builtin_set_texasr, __builtin_set_texasru, __builtin_set_texasru, __builtin_set_t_t_firhar рдЖрдгрд┐ рджрд╕реНрддрдРрд╡рдЬ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЖрд╣реЗрдд.
  • рдЖрд░реНрдо рдЕрдБрдкрд┐рдЕрд░-64 (-mcpu/-mtune ampere1), рдЖрд░реНрдо рдХреЙрд░реНрдЯреЗрдХреНрд╕-A1 (рдХреЙрд░реНрдЯреЗрдХреНрд╕-a510), рдЖрд░реНрдо рдХреЙрд░реНрдЯреЗрдХреНрд╕-A510 (рдХреЙрд░реНрдЯреЗрдХреНрд╕-рдП710) рдЖрдгрд┐ рдЖрд░реНрдо рдХреЙрд░реНрдЯреЗрдХреНрд╕-X710 (рдХреЙрд░реНрдЯреЗрдХреНрд╕- x2) рд╕рд╛рдареА рд╕рдорд░реНрдерди. "-рдорд╛рд░реНрдЪ" рдкрд░реНрдпрд╛рдпрд╛рд╕рд╣ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рдирд╡реАрди ARMv2 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░реНрдпрд╛рдпрд╛рдВрд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ: armv8-a, armv8.7-a, armv8.8-a. рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд ARM рд╕реВрдЪрдирд╛ (ls9) рдЪреНрдпрд╛ рд╡рд╛рдкрд░рд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд, рдЕрдгреВ рд▓реЛрдбрд┐рдВрдЧ рдЖрдгрд┐ рдореЗрдорд░реАрдордзреНрдпреЗ рдбреЗрдЯрд╛ рдЬрддрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрдВрдкрд╛рдЗрд▓рд░ (рдЗрдВрдЯреНрд░рд┐рдиреНрд╕рд┐рдХреНрд╕) рдордзреНрдпреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ C рдлрдВрдХреНрд╢рдиреНрд╕рдЪреА рдЬреЛрдбрд▓реЗрд▓реА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА. mopsoption ARM рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд╛рдкрд░реВрди memcpy, memmove рдЖрдгрд┐ memset рдлрдВрдХреНрд╢рдиреНрд╕рд▓рд╛ рдЧрддреА рджреЗрдгреНрдпрд╛рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ.
  • рдПрдХ рдирд╡реАрди рдЪреЗрдХрд┐рдВрдЧ рдореЛрдб рдЬреЛрдбрд▓рд╛ тАЬ-fsanitize=shadow-call-stackтАЭ (ShadowCallStack), рдЬреЛ рд╕рдзреНрдпрд╛ рдлрдХреНрдд AArch64 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗ рдЖрдгрд┐ тАЬ-ffixed-r18тАЭ рдкрд░реНрдпрд╛рдпрд╛рд╕рд╣ рдХреЛрдб рдмрд┐рд▓реНрдб рдХрд░рддрд╛рдирд╛ рдХрд╛рд░реНрдп рдХрд░рддреЛ. рд╕реНрдЯреЕрдХрд╡рд░ рдмрдлрд░ рдУрд╡реНрд╣рд░рдлреНрд▓реЛ рдЭрд╛рд▓реНрдпрд╛рд╕ рдлрдВрдХреНрд╢рдирдордзреВрди рд░рд┐рдЯрд░реНрди рдЕреЕрдбреНрд░реЗрд╕ рдУрд╡реНрд╣рд░рд░рд╛рдИрдЯ рдХрд░рдгреНрдпрд╛рдкрд╛рд╕реВрди рдореЛрдб рд╕рдВрд░рдХреНрд╖рдг рдкреБрд░рд╡рддреЛ. рдлрдВрдХреНрд╢рдирдордзреНрдпреЗ рдирд┐рдпрдВрддреНрд░рдг рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рдЖрдгрд┐ рдлрдВрдХреНрд╢рдирдордзреВрди рдмрд╛рд╣реЗрд░ рдкрдбрдгреНрдпрд╛рдкреВрд░реНрд╡реА рд╣рд╛ рдкрддреНрддрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рд░рд┐рдЯрд░реНрди рдЕреЕрдбреНрд░реЗрд╕ рд╡реЗрдЧрд│реНрдпрд╛ "рд╢реЕрдбреЛ" рд╕реНрдЯреЕрдХрдордзреНрдпреЗ рд╕реЗрд╡реНрд╣ рдХрд░рдгреЗ рд╣реЗ рд╕рдВрд░рдХреНрд╖рдгрд╛рдЪреЗ рд╕рд╛рд░ рдЖрд╣реЗ.

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

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