GCC 11 සම්පාදක කට්ටලය නිකුත් කිරීම

වසරක සංවර්ධනයෙන් පසුව, නොමිලේ GCC 11.1 සම්පාදක කට්ටලය නිකුත් කර ඇත, එය නව GCC 11.x ශාඛාවේ පළමු වැදගත් නිකුතුවයි. නව නිකුතු අංක යෝජනා ක්‍රමය යටතේ, සංවර්ධනය අතරතුර 11.0 අනුවාදය භාවිතා කරන ලද අතර, GCC 11.1 නිකුත් කිරීමට ටික කලකට පෙර, GCC 12.0 ශාඛාව දැනටමත් දෙබලක ඇති අතර, එයින් GCC 12.1 හි මීළඟ සැලකිය යුතු නිකුතුව සාදනු ඇත.

GCC 11.1 කැපී පෙනෙන්නේ DWARF 5 නිදොස් ගොනු ආකෘතිය පෙරනිමියෙන් භාවිතා කිරීමට සංක්‍රමණය වීම, C++17 ප්‍රමිතිය (“-std=gnu++17”) පෙරනිමියෙන් ඇතුළත් කිරීම, C++20 සඳහා සහය දැක්වීමේ සැලකිය යුතු වැඩිදියුණු කිරීම් සම්මත, C++23 සඳහා පර්යේෂණාත්මක සහාය, අනාගත C භාෂා ප්‍රමිතිය (C2x), නව කාර්ය සාධන ප්‍රශස්තකරණයට අදාළ වැඩිදියුණු කිරීම්.

ප්රධාන වෙනස්කම්:

  • C++ භාෂාව සඳහා පෙරනිමි මාදිලිය කලින් පිරිනැමූ C++17 වෙනුවට C++17 සම්මත (-std=gnu++14) භාවිත කිරීමට මාරු කර ඇත. වෙනත් සැකිලි පරාමිතියක් ලෙස භාවිතා කරන (-fno-new-ttp-matching) සැකිලි සැකසීමේදී නව C++17 හැසිරීම වරණාත්මකව අක්‍රිය කළ හැක.
  • AddressSanitizer මෙවලමෙහි දෘඩාංග ත්වරණය සඳහා සහය එකතු කරන ලද අතර, නිදහස් මතක ප්‍රදේශ වෙත ප්‍රවේශ වීම, වෙන් කර ඇති බෆරයේ සීමාවෙන් ඔබ්බට යාම සහ මතකය සමඟ වැඩ කිරීමේදී වෙනත් සමහර දෝෂ පිළිබඳ කරුණු තීරණය කිරීමට ඔබට ඉඩ සලසයි. දෘඪාංග ත්වරණය දැනට ඇත්තේ AArch64 ගෘහ නිර්මාණ ශිල්පය සඳහා පමණක් වන අතර Linux කර්නලය සම්පාදනය කිරීමේදී භාවිතය කෙරෙහි අවධානය යොමු කර ඇත. පරිශීලක අවකාශ සංරචක තැනීමේදී AddressSanitizer දෘඪාංග ත්වරණය සක්‍රීය කිරීමට, "-fsanitize=hwaddress" ධජය එකතු කර ඇති අතර කර්නල් ධජය "-fsanitize=kernel-hwaddress" එකතු කර ඇත.
  • නිදොස් කිරීමේ තොරතුරු උත්පාදනය කරන විට, DWARF 5 ආකෘතිය පෙරනිමියෙන් භාවිතා වේ, පෙර අනුවාදවලට සාපේක්ෂව, 25% වැඩි සංයුක්ත නිදොස් කිරීමේ දත්ත ජනනය කිරීමට ඉඩ සලසයි. DWARF 5 සඳහා සම්පූර්ණ සහය සඳහා අවම වශයෙන් binutils අනුවාදය 2.35.2 අවශ්‍ය වේ. DWARF 5 ආකෘතිය GDB 8.0, valgrind 3.17.0, elfutils 0.172 සහ dwz 0.14 සිට නිදොස් කිරීමේ මෙවලම් සඳහා සහය දක්වයි. DWARF හි වෙනත් අනුවාද භාවිතයෙන් නිදොස් ගොනු උත්පාදනය කිරීමට, ඔබට "-gdwarf-2", "-gdwarf-3" සහ "-gdwarf-4" විකල්ප භාවිතා කළ හැක.
  • GCC ගොඩනැගීම සඳහා භාවිතා කළ හැකි සම්පාදක සඳහා අවශ්‍යතා වැඩි කර ඇත. සම්පාදකය දැන් C++11 ප්‍රමිතියට සහය විය යුතුය (කලින් C++98 අවශ්‍ය විය), i.e. GCC 10 ගොඩනැගීමට GCC 3.4 ප්‍රමාණවත් නම්, GCC 11 ගොඩනැගීමට දැන් අවම වශයෙන් GCC 4.8 අවශ්‍ය වේ.
  • ඩම්ප් සුරැකීමට ගොනු වල නම සහ ස්ථානය, තාවකාලික ගොනු සහ LTO ප්‍රශස්තිකරණය සඳහා අවශ්‍ය අමතර තොරතුරු වෙනස් කර ඇත. "-dumpbase", "-dumpdir" සහ "-save-temps=*" විකල්පයන් හරහා මාර්ගය පැහැදිලිව වෙනස් නොකළහොත් එවැනි ගොනු සෑම විටම වත්මන් නාමාවලියෙහි සුරැකේ.
  • HSAIL (විෂම පද්ධති ගෘහ නිර්මාණ ශිල්පය අතරමැදි භාෂාව) භාෂාව සමඟ භාවිතා කිරීම සඳහා BRIG ද්විමය ආකෘතිය සඳහා වන සහය අත්හරින ලද අතර ඉක්මනින් ඉවත් කරනු ඇත.
  • ThreadSanitizer මාදිලියේ (-fsanitize=thread) හැකියාවන් පුළුල් කර ඇත, බහු-නූල් යෙදුමක විවිධ නූල්වලින් එකම දත්ත බෙදාගැනීමේදී ධාවන තත්ත්වයන් හඳුනා ගැනීමට සැලසුම් කර ඇත. නව නිකුතුව විකල්ප ධාවන කාල සහ පරිසරයන් සඳහා සහය මෙන්ම, ලිනක්ස් කර්නලය තුළ ධාවන තත්ත්වයන් ගතිකව හඳුනා ගැනීමට නිර්මාණය කර ඇති KCSAN (Kernel Concurrency Sanitizer) නිදොස් කිරීමේ මෙවලම සඳහා සහය එක් කරයි. "-param tsan-distinguish-volatile" සහ "-param tsan-instrument-func-entry-exit" යන නව විකල්ප එකතු කරන ලදී.
  • රෝග විනිශ්චය පණිවිඩවල තීරු අංක දැන් පිළිබිඹු වන්නේ පේළියේ ආරම්භයේ සිට බයිට් ගණන නොව, ඇත්ත වශයෙන්ම පේළියේ ස්ථාන කිහිපයක් හිමි බහු-බයිට් අක්ෂර සහ අක්ෂර සැලකිල්ලට ගන්නා තීරු අංක (උදාහරණයක් ලෙස, 🙂 අක්ෂරය ස්ථාන දෙකක් දරයි සහ බයිට් 4කින් කේතනය කර ඇත). එලෙසම, ටැබ් අක්ෂර දැන් නිශ්චිත හිස් සංඛ්‍යාවක් ලෙස සලකනු ලැබේ (-ftabstop විකල්පය හරහා වින්‍යාස කළ හැක, පෙරනිමි 8). පැරණි හැසිරීම ප්‍රතිෂ්ඨාපනය කිරීම සඳහා, “-fdiagnostics-column-unit=byte” විකල්පය යෝජනා කරනු ලබන අතර, ආරම්භක අගය තීරණය කිරීමට (0 හෝ 1 සිට අංකනය කිරීම) - “-fdiagnostics-column-origin=” විකල්පය.
  • දෛශිකය ශ්‍රිතයේ සම්පූර්ණ අන්තර්ගතයන් සැලකිල්ලට ගන්නා අතර පාලන ප්‍රවාහ ප්‍රස්ථාරයේ (CFG, පාලන-ප්‍රවාහ ප්‍රස්ථාරයෙහි) පෙර බ්ලොක් වෙත ඡේදනය සහ යොමු කිරීම් හා සම්බන්ධ සැකසුම් හැකියාවන් එක් කරයි.
  • එකම විචල්‍යය ස්විච් ප්‍රකාශනයකට සංසන්දනය කරන කොන්දේසි සහිත මෙහෙයුම් මාලාවක් පරිවර්තනය කිරීමේ හැකියාව ප්‍රශස්තකරණය ක්‍රියාත්මක කරයි. ස්විච් ප්‍රකාශනය පසුව බිට් පරීක්ෂණ උපදෙස් භාවිතයෙන් කේතනය කළ හැක (එවැනි පරිවර්තනය පාලනය කිරීමට “-fbit-tests” විකල්පය එකතු කර ඇත).
  • වැඩිදියුණු කරන ලද අන්තර් ක්‍රියා පටිපාටි ප්‍රශස්තකරණය. කාර්යයන් ඇමතීමේ දී අතුරු ආබාධ නිරීක්ෂණය කිරීමට සහ විශ්ලේෂණයේ නිරවද්‍යතාවය වැඩි දියුණු කිරීමට නව IPA-modref pass (-fipa-modref) එක් කරන ලදී. IPA-ICF සාමාර්ථය (-fipa-icf) ක්‍රියාත්මක කිරීම වැඩිදියුණු කිරීම, සම්පාදනය කිරීමේදී මතක පරිභෝජනය අඩු කරන අතර සමාන කේත බ්ලොක් ඒකාබද්ධ කරන ඒකාබද්ධ ශ්‍රිත ගණන වැඩි කරයි. IPA-CP (Interprocedural නියත ප්‍රචාරණය) සමත්වීමේදී, ලූපවල දන්නා මායිම් සහ ලක්ෂණ සැලකිල්ලට ගනිමින් පුරෝකථන හූරිස්ටික්ස් වැඩිදියුණු කර ඇත.
  • Linking Time Optimizations (LTO) හි ප්‍රමාණය අඩු කිරීමට සහ සැකසුම් වේගය වැඩි දියුණු කිරීමට බයිට්කේත ආකෘතිය ප්‍රශස්ත කර ඇත. බන්ධන අවධියේදී උපරිම මතක පරිභෝජනය අඩු කිරීම.
  • ක්‍රියාත්මක කිරීමේ විශේෂාංග විශ්ලේෂණය මත පදනම්ව වඩාත් ප්‍රශස්ත කේතයක් ජනනය කිරීමට ඉඩ සලසන කේත පැතිකඩ (PGO - පැතිකඩ-මාර්ගෝපදේශ ප්‍රශස්තිකරණය) ප්‍රතිඵල මත පදනම් වූ ප්‍රශස්තකරණ යාන්ත්‍රණය තුළ, ශුන්‍ය කවුන්ටරවල වඩාත් සංයුක්ත ඇසුරුම් හේතුවෙන් GCOV දත්ත සහිත ගොනු වල ප්‍රමාණය අඩු වේ. . වක්‍ර ඇමතුම් වලදී වැඩි පරාමිති නිරීක්ෂණය කිරීමෙන් "-fprofile-values" මාදිලිය වැඩි දියුණු කරන ලදි.
  • හවුල් මතකය සහ දෛශික ඒකක (SIMD) සහිත බහු-core සහ hybrid (CPU+GPU/DSP) පද්ධති මත සමාන්තර ක්‍රමලේඛන ක්‍රම යෙදීම සඳහා API සහ ක්‍රම නිර්වචනය කරන OpenMP 5.0 (Open Multi-Processing) ප්‍රමිතිය ක්‍රියාත්මක කිරීම දිගටම. වෙන්කිරීමේ විධානය සඳහා මූලික සහය සහ OpenMP ඉදිකිරීම් වල විෂම ලූප භාවිතා කිරීමේ හැකියාව එක් කරන ලදී. OMP_TARGET_OFFLOAD පරිසර විචල්‍යය සඳහා ක්‍රියාත්මක කළ සහාය.
  • C, C++ සහ Fortran භාෂා සඳහා ලබා දී ඇති OpenACC 2.6 සමාන්තර ක්‍රමලේඛන පිරිවිතර ක්‍රියාවට නැංවීම වැඩිදියුණු කර ඇති අතර, එය GPU සහ NVIDIA PTX වැනි විශේෂිත ප්‍රොසෙසරවල ඕෆ්ලෝඩ් මෙහෙයුම් සඳහා මෙවලම් නිර්වචනය කරයි.
  • C භාෂා සඳහා, නව ගුණාංගයක් “no_stack_protector” ක්‍රියාවට නංවා ඇත, අට්ටි ආරක්ෂාව සබල නොකළ යුතු කාර්යයන් සලකුණු කිරීමට නිර්මාණය කර ඇත (“-fstack-protector”). මතකය සමඟ වැඩ කිරීමේදී සාමාන්‍ය දෝෂ හඳුනා ගැනීම සඳහා ස්ථිතික විශ්ලේෂකයේ භාවිතා කරන මතකය (විභේදනකරු/ බෙදාහරින්නා) වෙන් කිරීම සහ නිදහස් කිරීම සඳහා ඇමතුම් යුගල හඳුනා ගැනීමට සහාය වීම සඳහා “malloc” ගුණාංගය පුළුල් කර ඇත (මතක කාන්දුවීම්, නිදහස් කිරීමෙන් පසු භාවිතා කිරීම, නිදහස් ශ්‍රිතයට ද්විත්ව ඇමතුම් යනාදිය) සහ සම්පාදක අනතුරු ඇඟවීම් වලදී “-Wmismatched-dealloc”, “-Wmismatched-new-delete” සහ “-Wfree-nonheap-object”, මතක බෙදාහැරීම සහ මතකය වෙන් කිරීමේ මෙහෙයුම් අතර නොගැලපීම ගැන දැනුම් දෙයි.
  • C භාෂාව සඳහා නව අනතුරු ඇඟවීම් එකතු කර ඇත:
    • "-Wmismatched-dealloc" (පෙරනිමියෙන් සක්‍රීය කර ඇත) - මතක වෙන් කිරීමේ ක්‍රියාකාරකම් සමඟ නොගැලපෙන දර්ශකයක් භාවිතා කරන මතක බෙදා හැරීමේ මෙහෙයුම් ගැන අනතුරු අඟවයි.
    • "-Wsizeof-array-div" ("-Wall" නියම කර ඇති විට සක්‍රීය වේ) - භාජකය අරා මූලද්‍රව්‍යයේ ප්‍රමාණයට නොගැලපේ නම්, ප්‍රමාණයේ ක්‍රියාකරුවන් දෙදෙනෙකු බෙදීම ගැන අනතුරු අඟවයි.
    • "-Wstringop-overread" (පෙරනිමියෙන් සක්‍රීය කර ඇත) - අරාව මායිමෙන් පිටත ප්‍රදේශයකින් දත්ත කියවන තන්තු ශ්‍රිතයක් ඇමතීම ගැන අනතුරු අඟවයි.
    • "-Wtsan" (පෙරනිමියෙන් සක්‍රීය කර ඇත) - ThreadSanitizer හි සහය නොදක්වන විශේෂාංග (std::atomic_thread_fence වැනි) භාවිතා කිරීම ගැන අනතුරු අඟවයි.
    • “-Warray-parameter” සහ “-Wvla-parameter” (“-Wall” සඳහන් කිරීමේදී සක්‍රීය කර ඇත) - ස්ථාවර සහ විචල්‍ය-දිග අරාවන් සමඟ සම්බන්ධිත තර්කවල නොගැලපෙන ප්‍රකාශන සමඟ ශ්‍රිත අභිබවා යාම ගැන අනතුරු අඟවයි.
    • "-Wuninitialized" අනතුරු ඇඟවීම දැන් ආරම්භ නොකළ ගතිකව වෙන් කළ මතකයෙන් කියවීමට උත්සාහ කරයි.
    • "-Wfree-nonheap-object" අනතුරු ඇඟවීම මගින් මතක බෙදා හැරීමේ ශ්‍රිතයන් ගතික මතක විසර්ජන ශ්‍රිත හරහා ලබා නොගත් දර්ශකයක් සමඟින් හැඳින්වෙන අවස්ථා වල නිර්වචනය පුළුල් කරයි.
    • "-Wmaybe-uninitialized" අනතුරු ඇඟවීම ආරම්භ නොකළ මතක ස්ථාන වෙත යොමු වන ශ්‍රිතයන් වෙත ගමන් කරන පොයින්ටර් හඳුනාගැනීම පුළුල් කර ඇත.
  • C භාෂාව සඳහා, C2X ප්‍රමිතියේ රාමුව තුළ සංවර්ධනය කරන ලද නව විශේෂාංගවල කොටසක් ක්‍රියාවට නංවා ඇත (-std=c2x සහ -std=gnu2x සඳහන් කිරීමෙන් සක්‍රීය කර ඇත): macros BOOL_MAX සහ BOOL_WIDTH, ශ්‍රිතයේ භාවිත නොකළ පරාමිතිවල නම් විකල්ප ඇඟවීම නිර්වචන (C++ හි මෙන්), උපලක්ෂණය “[ [nodiscard]]", පූර්ව සැකසුම් ක්‍රියාකරු "__has_c_attribute", macros FLT_IS_IEC_60559, DBL_IS_IEC_60559, LDBL_IS_IEC_60559, NDBL_IS_IEC_60559, __STDCIN_XNUMX,__STDXNUMX AN, FLT_SNAN, DBL_SNAN, LDBL_SNAN, DEC_INFINITY සහ DEC _NAN, NaN=macros සඳහා FloatN, _FloatNx සහ _DecimalN, ප්‍රකාශ කිරීමට පෙර සහ සංයුක්ත ප්‍රකාශයන් අවසානයේ පැනීමේ ලකුණු නියම කිරීමේ හැකියාව.
  • C++ සඳහා, C++20 ප්‍රමිතියේ යෝජිත වෙනස්කම් සහ නවෝත්පාදනයන්ගෙන් කොටසක් ක්‍රියාවට නංවා ඇති අතර, අතථ්‍ය ශ්‍රිත “consteval virtual”, වස්තූන්ගේ ජීවන චක්‍රයේ අවසානය සඳහා ව්‍යාජ විනාශ කරන්නන්, enum පන්තියේ භාවිතය සහ "නව" ප්‍රකාශනයේ අරාවක ප්‍රමාණය ගණනය කිරීම.
  • C++ සඳහා, අනාගත C++23 ප්‍රමිතිය (-std=c++23, -std=gnu++23, -std=c++2b, -std=gnu) සඳහා සංවර්ධනය කෙරෙන සමහර වැඩිදියුණු කිරීම් සඳහා පර්යේෂණාත්මක සහාය එක් කර ඇත. ++2b). උදාහරණයක් ලෙස, අත්සන් කළ size_t අගයන් සඳහා “zu” යන වචනාර්ථ උපසර්ගය සඳහා දැන් සහය ඇත.
  • පාවෙන ලක්ෂ්‍ය වර්ග සඳහා std::from_chars සහ std::to_chars ක්‍රියාත්මක කිරීම් හඳුන්වාදීම ඇතුළුව, libstdc++ විසින් C++17 ප්‍රමිතිය සඳහා සහය වැඩි දියුණු කර ඇත. std::bit_cast, std::source_location, atomic operations wait and notify, , , , , මෙන්ම මූලද්‍රව්‍ය ඇතුළුව C++20 සම්මතයේ නව මූලද්‍රව්‍ය ක්‍රියාත්මක කරන ලදී. අනාගත C++ සම්මත 23 (std::to_underlying, std::is_scoped_enum). සමාන්තර දත්ත සැකසීම සඳහා වර්ග සඳහා පර්යේෂණාත්මක සහාය එක් කරන ලදී (SIMD, දත්ත-සමාන්තර වර්ග). std::uniform_int_distribution ක්‍රියාත්මක කිරීම වේගවත් කර ඇත.
  • අනෙකුත් ක්‍රියාවලි වලට කේත උත්පාදක යන්ත්‍රයක් කාවැද්දීම සඳහා හවුල් පුස්තකාලයක් වන libgccjit වෙතින් ඇල්ෆා ගුණාත්මක ධජය ඉවත් කර එය යන්ත්‍ර කේතයට බයිට්කේත JIT සම්පාදනය සංවිධානය කිරීමට භාවිතා කරයි. MinGW සඳහා libgccjit ගොඩනැගීමේ හැකියාව එක් කරන ලදී.
  • AArch64 Armv8-R ගෘහ නිර්මාණ ශිල්පය සඳහා සහය එක් කරන ලදී (-march=armv8-r). AArch64 සහ ARM ගෘහ නිර්මාණ ශිල්පය සඳහා, ප්‍රොසෙසර සඳහා සහය එක් කර ඇත (පරාමිතීන් -mcpu සහ -mtune): Arm Cortex-A78 (cortex-a78), Arm Cortex-A78AE (cortex-a78ae), Arm Cortex-A78C (cortex-a78c) , Arm Cortex- X1 (cortex-x1), Arm Neoverse V1 (neoverse-v1) සහ Arm Neoverse N2 (neoverse-n2). Fujitsu A64FX (a64fx) සහ Arm Cortex-R82 (cortex-r82) CPU ද එකතු කර ඇති අතර, AArch64 ගෘහ නිර්මාණ ශිල්පයට පමණක් සහාය වේ.
  • එකතු කිරීම, අඩු කිරීම, ගුණ කිරීම සහ එකතු කිරීම/අඩු කිරීම යන ප්‍රභේදයන් සිදු කරන මෙහෙයුම් ස්වයංක්‍රීයව සිදු කිරීම සඳහා Armv8.3-a (AArch64/AArch32), SVE (AArch64), SVE2 (AArch64) සහ MVE (AArch32 M-profile) SIMD උපදෙස් භාවිතා කිරීම සඳහා සහය එක් කරන ලදී. සංකීර්ණ සංඛ්යා. MVE උපදෙස් කට්ටලය භාවිතයෙන් ARM සඳහා ස්වයං දෛශිකකරණය සඳහා මූලික සහාය එක් කරන ලදී.
  • ARM වේදිකා සඳහා, ACLE Q3 2020 පිරිවිතරයේ ලේඛනගත කර ඇති සියලුම NEON උපදෙස් ආවරණය වන පරිදි, විස්තීරණ දෛශික උපදෙස් (SIMD) මගින් ප්‍රතිස්ථාපනය කරන ලද සම්පූර්‍ණ සම්පාදක-ඒකාබද්ධ C ශ්‍රිත (Intrinsics) සපයනු ලැබේ.
  • GCN microarchitecture මත පදනම්ව AMD GPU සඳහා කේතය ජනනය කිරීම සඳහා gfx908 GPU සඳහා සහය පසුබිමට එක් කර ඇත.
  • නව ප්‍රොසෙසර සඳහා සහය එක් කරන ලද අතර ඒවා තුළ ක්‍රියාත්මක කරන ලද නව උපදෙස් කට්ටල දිගු:
    • Intel Sapphire Rapids (-march=sapphirerapids, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, SERIALIZE, PTWRITE, WAITPKG, TSXLD-TIK, TSXLD-TIX, ATMTX-8, AMTTX-X. NNI උපදෙස්.
    • Intel Alderlake (-march=alderlake, CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, KEYLOCKER, AVX-VNNI සහ HRESET උපදෙස් සඳහා සහය සක්‍රීය කරයි).
    • Intel Rocketlake (-march=rocketlake, SGX සහාය නොමැතිව Rocket Lake හා සමාන).
    • AMD Zen 3 (-march=znver3).
  • Intel ප්‍රොසෙසර මත පදනම් වූ IA-32/x86-64 පද්ධති සඳහා, නව ප්‍රොසෙසර උපදෙස් සඳහා සහය TSXLDTRK, SERIALIZE, HRESET, UINTRKEYLOCKER, AMX-TILE, AMX-INT8, AMX-BF16, AVX-VNNI එකතු කර ඇත.
  • x86-64 ගෘහ නිර්මාණ මට්ටම් තේරීමට "-march=x234-86-v[64]" කොඩි සඳහා සහය එක් කරන ලදී (v2 - SSE4.2, SSSE3, POPCNT සහ CMPXCHG16B දිගු ආවරණය කරයි; v3 - AVX2 සහ MOVBE; v4 - AVX-512 ) .
  • Big-endian බයිට් අනුපිළිවෙල සමඟ RISC-V පද්ධති සඳහා සහය එක් කරන ලදී. RISC-V උපදෙස් කට්ටල ගෘහ නිර්මාණ පිරිවිතරයේ අනුවාදය තේරීමට "-misa-spec=*" විකල්පය එක් කරන ලදී. කැනරි ටැග් භාවිතයෙන් AddressSanitizer සහ stack protection සඳහා සහය එක් කරන ලදී.
  • වැඩසටහනේ කේත ක්‍රියාත්මක කිරීමේ මාර්ග සහ දත්ත ප්‍රවාහයන් පිළිබඳ සම්පත්-දැඩි අන්තර් ක්‍රියා පටිපාටි විශ්ලේෂණය සිදු කරන “-ෆැනලයිසර්” ස්ථිතික විශ්ලේෂණ මාදිලියේ අඛණ්ඩ වැඩිදියුණු කිරීම. එක් මතක ප්‍රදේශයක් සඳහා නොමිලේ () ශ්‍රිතයට ද්විත්ව ඇමතුම්, ගොනු විස්තර කිරීමේ කාන්දුවීම්, ශුන්‍ය දර්ශක ඉවත් කිරීම සහ සම්මත කිරීම, නිදහස් කළ මතක කොටස් වෙත ප්‍රවේශ වීම, ආරම්භ නොකළ අගයන් භාවිතා කිරීම වැනි සම්පාදන අදියරේදී ගැටළු හඳුනා ගැනීමට මාදිලියට හැකියාව ඇත. නව අනුවාදයේ:
    • වැඩසටහනේ තත්වය නිරීක්ෂණය කිරීම සඳහා කේතය සම්පූර්ණයෙන්ම නැවත ලියා ඇත. ඉතා විශාල C ගොනු පරිලෝකනය කිරීමේ ගැටළු නිරාකරණය කර ඇත.
    • ආරම්භක C++ සහය එක් කරන ලදී.
    • මතක වෙන්කිරීම් සහ බෙදාහැරීමේ විශ්ලේෂණය විශේෂිත malloc සහ නිදහස් ශ්‍රිත වලින් වියුක්ත කර ඇති අතර, දැන් නව/මකන්න සහ නව[]/මකන්න[] සඳහා සහය දක්වයි.
    • නව අනතුරු ඇඟවීම් එකතු කරන ලදී: -Wanalyzer-shift-count-negative, -Wanalyzer-shift-count-overflow, -Wanalyzer-write-to-const සහ -Wanalyzer-write-to-string-literal.
    • නව නිදොස්කරණ විකල්ප එකතු කරන ලදි -fdump-analyzer-json සහ -fno-analyzer-feasibility.
    • GCC සඳහා ප්ලගීන හරහා විශ්ලේෂකය දිගු කිරීමේ හැකියාව ක්‍රියාත්මක කර ඇත (උදාහරණයක් ලෙස, CPython හි ගෝලීය අගුලු දැමීමේ (GIL) වැරදි භාවිතය පරීක්ෂා කිරීමට ප්ලගිනයක් සකස් කර ඇත).

මූලාශ්රය: opennet.ru

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