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 ප්‍රමිති සඳහා සහය පුළුල් කිරීමට කටයුතු දිගටම කරගෙන යයි. උදාහරණයක් ලෙස, "if consteval" ප්රකාශනය සඳහා සහය එකතු කර ඇත; ශ්‍රිත තර්ක වල ස්වයංක්‍රීයව භාවිතා කිරීමට අවසර ඇත ("f(auto(g()))"); constexpr ලෙස ප්‍රකාශයට පත් කරන ලද ශ්‍රිතවල වචනාර්ථ නොවන විචල්‍ය, ගොටෝ සහ ලේබල් භාවිතයට අවසර ඇත; බහුමාන දර්ශක ක්‍රියාකරු ක්‍රියාකරු[] සඳහා සහාය එකතු කරන ලදී; if, for and switch, ආරම්භක කුට්ටි වල හැකියාවන් පුළුල් කර ඇත ("(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 පිරිවිතර සඳහා පූර්ණ සහය සපයයි, එය Fortran සහ C කේතය අතර අතේ ගෙන යා හැකි බව සහතික කිරීමේ හැකියාවන් විස්තර කරයි.
  • පොදු දෛශික shuffle සහ shuffle මෙහෙයුම් සිදු කිරීමට තනි ඇමතුමක් ලබා දෙන, Clang වෙත කලින් එක් කරන ලද __builtin_shufflevector(vec1, vec2, index1, index2, ...) දිගුව සඳහා සහය එක් කරන ලදී.
  • "-O2" ප්‍රශස්තකරණ මට්ටම භාවිතා කරන විට, දෛශිකකරණය පෙරනිමියෙන් සක්‍රීය වේ (the -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-compare" ධජය එක් කරන ලදී.
  • හවුල් මතකය සහ දෛශික ඒකක (SIMD) සහිත බහු-core සහ දෙමුහුන් (CPU+GPU/DSP) පද්ධති මත සමාන්තර ක්‍රමලේඛන ක්‍රම යෙදීම සඳහා API සහ ක්‍රම නිර්වචනය කරන OpenMP 5.0 සහ 5.1 (Open Multi-Processing) ප්‍රමිතීන් ක්‍රියාත්මක කිරීම. , දිගටම කර ඇත.
  • OpenACC 2.6 සමාන්තර ක්‍රමලේඛන පිරිවිතරයන් වැඩිදියුණු කළ ක්‍රියාත්මක කිරීම, GPUs සහ NVIDIA PTX වැනි විශේෂිත ප්‍රොසෙසරවල ඕෆ්ලෝඩ් මෙහෙයුම් සඳහා මෙවලම් නිර්වචනය කරයි.
  • දිගු උපදෙස් සඳහා සහය Intel AVX86-FP512 සහ _Float16 වර්ගය x16 ගෘහ නිර්මාණ ශිල්පය සඳහා කේත උත්පාදන පසුබිමට එක් කර ඇත.
  • x86 ගෘහනිර්මාණ ශිල්පය සඳහා, කොන්දේසි විරහිතව ඉදිරියට පැනීමේ මෙහෙයුම් වලින් පසු උපදේශන අනුමාන ක්‍රියාත්මක කිරීම නිසා ඇති වන ප්‍රොසෙසර වල ඇති දුර්වලතා වලට එරෙහිව ආරක්ෂාව එක් කර ඇත. මතකයේ ඇති ශාඛා උපදෙස් (SLS, Straight Line Speculation) අනුගමනය කිරීමෙන් වහාම උපදෙස් පූර්ව-භංග කිරීම හේතුවෙන් ගැටළුව ඇතිවේ. ආරක්ෂාව සබල කිරීම සඳහා, "-mharden-sls" විකල්පය යෝජනා කෙරේ.
  • පර්යේෂණාත්මක ස්ථිතික විශ්ලේෂකය වෙත ආරම්භ නොකළ විචල්‍ය භාවිතය හඳුනා ගැනීම එකතු කරන ලදී. පේළිගත ඇතුළත් කිරීම් තුළ එකලස් කිරීමේ කේතය විශ්ලේෂණය කිරීම සඳහා මූලික සහාය එක් කරන ලදී. වැඩිදියුණු කළ මතක ලුහුබැඳීම. ස්විච ප්‍රකාශන සැකසීම සඳහා කේතය නැවත ලියා ඇත.
  • කේත උත්පාදක යන්ත්‍රයක් වෙනත් ක්‍රියාවලීන්ට කාවැද්දීමට සහ එය JIT බයිට්කේතය යන්ත්‍ර කේතයට සම්පාදනය කිරීමට භාවිතා කිරීම සඳහා හවුල් පුස්තකාලයක් වන libgccjit වෙත නව ඇමතුම් 30ක් එක් කරන ලදී.
  • CO-RE (Compile Once - Run Everywhere) යාන්ත්‍රණය සඳහා සහය BPF බයිට්කේතය ජනනය කිරීම සඳහා පසුබිමට එක් කර ඇත, එමඟින් ඔබට ලිනක්ස් කර්නලය සඳහා eBPF වැඩසටහන් කේතය එක් වරක් පමණක් සම්පාදනය කිරීමට සහ අනුවර්තනය කරන විශේෂ විශ්ව පූරකයක් භාවිතා කිරීමට ඉඩ සලසයි. වත්මන් කර්නලය සහ BPF වර්ග ආකෘතිය වෙත වැඩසටහන පූරණය කරන ලදී). CO-RE මඟින් සම්පාදනය කරන ලද eBPF වැඩසටහන්වල අතේ ගෙන යා හැකි හැකියාව පිළිබඳ ගැටළුව විසඳයි, එය කලින් භාවිතා කළ හැක්කේ ඒවා සම්පාදනය කරන ලද කර්නලයේ අනුවාදයේ පමණි, මන්ද දත්ත ව්‍යුහවල මූලද්‍රව්‍යවල පිහිටීම අනුවාදයෙන් අනුවාදයට වෙනස් වේ.
  • RISC-V පසුපෙළ නව උපදෙස් කට්ටල ගෘහ නිර්මාණ දිගු zba, zbb, zbc සහ zbs සඳහා සහය එක් කරයි, මෙන්ම දෛශික සහ අදිශ ගුප්ත ලේඛන මෙහෙයුම් සඳහා ISA දිගු. පෙරනිමියෙන්, RISC-V ISA 20191213 පිරිවිතර සඳහා සහය සපයා ඇත.T-HEAD c906 cores සඳහා ප්‍රශස්තකරණයන් සක්‍රීය කිරීමට -mtune=thead-c906 ධජය එක් කර ඇත.
  • __int128_t/integer(kind=16) වර්ගය සඳහා සහය GCN microarchitecture මත පදනම්ව AMD GPU සඳහා කේත උත්පාදන පසුබිමට එක් කර ඇත. එක් කණ්ඩායමකට පරිගණක ඒකකයකට (CU) වැඩ කණ්ඩායම් 40ක් දක්වා සහ උපදෙස් පෙරමුනු 16ක් දක්වා (තරංග ඉදිරිපස, SIMD එන්ජිම මගින් සමාන්තරව ක්‍රියාත්මක කරන ලද නූල් කට්ටලයක්) භාවිතා කළ හැක. මින් පෙර, CU එකකට එක් උපදෙස් දාරයක් පමණක් අවසර දී ඇත.
  • NVIDIA PTX (Parallel Thread Execution) උපදෙස් කට්ටල ගෘහ නිර්මාණ ශිල්පය භාවිතයෙන් කේතය ජනනය කිරීමට නිර්මාණය කර ඇති NVPTX පසුබිම, "-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_tfhar ලේඛනගත කර ඇත.
  • Arm Ampere-64 (-mcpu/-mtune ampere1), Arm Cortex-A1 (cortex-a510), Arm Cortex-A510 (cortex-a710) සහ Arm Cortex-X710 (cortex- x2) සඳහා සහාය. "-march" විකල්පය සමඟ භාවිතය සඳහා නව 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

අදහස් එක් කරන්න