የGCC 13 ማጠናከሪያ ስብስብ መልቀቅ

ከአንድ አመት እድገት በኋላ ነፃ የማጠናቀቂያ ስብስብ GCC 13.1 ተለቋል፣ በአዲሱ የጂሲሲ 13.x ቅርንጫፍ ውስጥ የመጀመሪያው ጉልህ ልቀት ነው። በአዲሱ የመልቀቂያ ቁጥር አሰጣጥ እቅድ መሰረት, እትም 13.0 በእድገት ሂደት ውስጥ ጥቅም ላይ ውሏል, እና ጂሲሲ 13.1 ከመውጣቱ ጥቂት ቀደም ብሎ, የጂሲሲ 14.0 ቅርንጫፍ ቀድሞውኑ ተዘርግቷል, ከዚያ ቀጣዩ ዋና ልቀት GCC 14.1, ይመሰረታል.

ዋና ለውጦች፡-

  • GCC በሞዱላ-2 የፕሮግራም አወጣጥ ቋንቋ ፕሮግራሞችን ለመገጣጠም ግንባርን ያካትታል። ከPIM2፣ PIM3 እና PIM4 ዘዬዎች ጋር የሚዛመደው የኮድ ስብስብ እንዲሁም ተቀባይነት ያለው የ ISO መስፈርት ለአንድ ቋንቋ ይደገፋል።
  • በ gccrs ፕሮጀክት (GCC Rust) የተዘጋጀ የ Rust ቋንቋ ማጠናከሪያ ትግበራ ያለው የፊት ለፊት ጫፍ ወደ GCC ምንጭ ዛፍ ተጨምሯል። አሁን ባለው መልክ፣የፊት መጨረሻው እንደ የሙከራ ምልክት ተደርጎበታል እና በነባሪነት ተሰናክሏል። የፊት ለፊቱ ዝግጁ ከሆነ (በሚቀጥለው ልቀት ላይ የሚጠበቀው) መደበኛ የጂሲሲ መሳሪያዎች የ LLVM እድገቶችን በመጠቀም የተሰራውን rustc compiler ን መጫን ሳያስፈልግ በሩስት ቋንቋ ፕሮግራሞችን ማጠናቀር ይቻላል።
  • የLink Time Optimization (LTO) ሞተር በበርካታ ክሮች ላይ ትይዩ ግንባታዎችን አፈጻጸምን ለማመቻቸት በጂኤንዩ ፕሮጄክት ለሚደገፈው የስራ አገልጋይ ድጋፍ ጨምሯል። በጂ.ሲ.ሲ፣ jobserver በLTO ማመቻቸት ወቅት ስራን ከጠቅላላው ፕሮግራም አውድ (WPA፣ Whole-program Analysis) ጋር ለማመሳሰል ይጠቅማል። ከስራ ሰርቨር ጋር ለመገናኘት፣ የተሰየሙ ቧንቧዎች በነባሪነት ጥቅም ላይ ይውላሉ (-jobserver-style=fifo)።
  • የማይንቀሳቀስ ተንታኝ (-ፋናሊዘር) 20 አዳዲስ የምርመራ ፍተሻዎችን ያቀርባል፣ ከእነዚህም መካከል “-ዋናሊዘር-ከ-ወሰን-ውጭ”፣ “-ዋናሊዘር-አድል-መጠን”፣ “-ዋናሊዘር-ደረፍ-ቅድመ-ቼክ”፣ “-ዋናሊዘር- ማለቂያ የሌለው -ዳግመኛ" -ዋናሊዘር-ዘለል-በኑል፣"-ዋናሊዘር-ቫ-ሊስት-ሌክ"።
  • በ JSON ላይ በመመስረት ምርመራዎችን በ SARIF ቅርጸት የማውጣት ችሎታ ተተግብሯል። አዲሱ ቅርጸት የማይንቀሳቀስ ትንታኔ ውጤቶችን (GCC -fanalyzer) ለማግኘት እንዲሁም የማስጠንቀቂያ እና የስህተት መረጃ ለማግኘት ጥቅም ላይ ሊውል ይችላል። ማንቃት የሚደረገው በ"-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file" አማራጭ ሲሆን "json" ያላቸው አማራጮች በጂሲሲ-ተኮር የJSON ቅርፀት ልዩነት .
  • በC23 C ደረጃ የተገለጹ አንዳንድ ባህሪያትን ተግባራዊ አድርጓል፣ ለምሳሌ ባዶ ጠቋሚዎችን ለመለየት nullptr ቋሚ፣ የተለያዩ ዝርዝሮችን አጠቃቀምን ማቃለል፣ የመቁጠሪያውን አቅም ማስፋፋት፣ የ noreturn ባህሪ፣ ነገሮችን በሚገልጹበት ጊዜ ኮንስተክስፕር እና አውቶሞቢል መጠቀምን ይፈቅዳል፣ አይነት እና typeof_unqual፣ አዲስ ቁልፍ ቃላት alignas፣ alignof፣ bool፣ false፣ static_assert፣ thread_local እና እውነት፣ ይህም ባዶ ቅንፍ በሚነሳበት ጊዜ እንዲገለጽ ያስችላል።
  • በC++23 ደረጃ የተገለጹ አንዳንድ ባህሪያትን ተተግብሯል፣ ለምሳሌ በውህድ መግለጫዎች መጨረሻ ላይ ምልክቶችን ማስቀመጥ መቻል፣ ከቻር8_ቲ አይነት ጋር መጣጣም፣ #የማስጠንቀቂያ ቅድመ ፕሮሰሰር መመሪያ፣ የተወሰነ (\u{}፣ \o{}፣ \x{}) እና የተሰየሙ ('\N{LATIN CAPITAL LETTER A}') የማምለጫ ቅደም ተከተሎች፣ የማይንቀሳቀስ ኦፕሬተር()፣ የማይንቀሳቀስ ኦፕሬተር[]፣ በገለፃዎች ውስጥ የእኩልነት ኦፕሬተር፣ በ constexpr አጠቃቀም ላይ አንዳንድ ገደቦችን ማስወገድ፣ የ UTF ድጋፍ -8 በምንጭ ጽሑፎች ውስጥ።
  • libstdc++ ለC++20 እና C++23 መመዘኛዎች የሙከራ ድጋፍን አሻሽሏል፣ ለምሳሌ፣ የራስጌ ፋይል ድጋፍን ማከል እና std :: ቅርጸት፣ የተስፋፉ የራስጌ ፋይል ችሎታዎች ፣ ተጨማሪ ተንሳፋፊ ነጥብ ዓይነቶች ተጨምረዋል ፣ የራስጌ ፋይሎች ተተግብረዋል። እና .
  • የፋይል ገላጭ በኢንቲጀር ተለዋዋጭ ለሆነ ሰነድ አዲስ የተግባር ባህሪ ታክሏል፡ "__ባህሪ__((fd_arg(N)))""__ባህሪ__((fd_arg_read(N)))"እና"__ባህሪ__((fd_arg_write(N))) )" የተገለጹት ባህሪያት የፋይል ገላጭዎችን የተሳሳተ አሠራር ለመለየት በስታቲክ analyzer (-fanalyzer) ውስጥ መጠቀም ይቻላል።
  • አዲስ ባህሪ ታክሏል "__ባህሪ __((ኤክስፒአር))"፣ ይህም አገላለጹ እውነት መሆኑን ለአቀናባሪው መንገር ይችላሉ እና አቀናባሪው አገላለጹን ሳይገመግም ይህንን እውነታ ሊጠቀምበት ይችላል።
  • በህንፃዎች ውስጥ ተጣጣፊ ድርድር አባላትን (Flexible Array Members) በህንፃው መጨረሻ ላይ ያልተወሰነ መጠን ያለው ድርድር፣ ለምሳሌ "int b[]" ሲይዝ ባህሪን ለመምረጥ የ"-fstrict-flex-arrays=[level]" ታክሏል። ).
  • በኢንተም አይነት እና በኢንቲጀር አይነት መካከል አለመመጣጠን ካለ ለማስጠንቀቅ የ"-Wenum-int-mismatch" ባንዲራ ታክሏል።
  • የፎርትራን ቋንቋ ግንባር ማጠናቀቅን ሙሉ በሙሉ ይደግፋል።
  • ለጎ ቋንቋ የፊት ለፊት ክፍል ለአጠቃላይ ተግባራት እና አይነቶች ድጋፍ ተጨምሯል እና ለጎ ቋንቋ 1.18 ከጥቅሎች ጋር ተኳሃኝነት ተረጋግጧል።
  • የ AArch64 አርክቴክቸር ጀርባ ሲፒዩ Ampere-1A (ampere1a)፣ Arm Cortex-A715 (cortex-a715)፣ Arm Cortex-X1C (cortex-x1c)፣ Arm Cortex-X3 (cortex-x3) እና Arm Neoverse V2 (neoverse) ይደግፋል። -v2)። ለ "armv9.1-a"፣ "armv9.2-a" እና "armv9.3-a" ነጋሪ እሴት ወደ "-march=" አማራጭ ታክሏል። ለFEAT_LRCPC፣ FEAT_CSSC እና FEAT_LSE2 ፕሮሰሰር ቅጥያዎች ድጋፍ ታክሏል።
  • ለ CPU STAR-MC1 (star-mc1)፣ Arm Cortex-X1C (cortex-x1c) እና Arm Cortex-M85 (cortex-m85) ድጋፍ ለኤአርኤም አርክቴክቸር ከኋላ ተጨምሯል።
  • የ x86 አርክቴክቸር ጀርባ ለ Intel Raptor Lake፣ Meteor Lake፣ Sierra Forest፣ Grand Ridge፣ Emerald Rapids፣ Granite Rapids ፕሮሰሰሮች፣ እንዲሁም AMD Zen 4 (znver4) ፕሮሰሰሮች ድጋፍን ይጨምራል። በኢንቴል ፕሮሰሰር ውስጥ የታቀዱት የአርክቴክቸር ቅጥያዎች AVX-IFMA፣ AVX-VNNI-INT8፣ AVX-NE-CONVERT፣ CMPccXADD፣ AMX-FP16፣ PREFETCHI፣ RAO-INT እና AMX-COMPLEX መመሪያው ተተግብሯል። በSSE2 ስርዓቶች ላይ ለ C እና C++ ቋንቋዎች፣__bf16 አይነት ቀርቧል።
  • ለ AMD Radeon GPUs (ጂሲኤን) የኮድ ማመንጨት የOpenMP/OpenACC አፈጻጸምን ለማሻሻል AMD Instinct MI200 accelerators የመጠቀም ችሎታን ያካትታል። የሲምዲ መመሪያዎችን በመጠቀም የተሻሻለ ቬክተር.
  • የ LoongArch መድረክ የኋላ ኋላ አቅም በከፍተኛ ሁኔታ ተስፋፍቷል።
  • በ RISC-V አርክቴክቸር ጀርባ ለቲ-ጭንቅላት XuanTie C906 (thead-c906) ሲፒዩ ​​ድጋፍ ታክሏል። በ RISC-V Vector Extension Intrinsic 0.11 ዝርዝር ውስጥ ለተገለጹት የቬክተር ማቀነባበሪያዎች ድጋፍ ተተግብሯል. ለ RISC-V ዝርዝር ለ30 ቅጥያዎች ድጋፍ ታክሏል።
  • በ-Shared አማራጭ የተጋሩ ነገሮችን ማመንጨት -Ofast፣ ፈጣን-ሒሳብ፣ ወይም -funsafe-math-optimizations ከነቃ ተንሳፋፊ ነጥብ አካባቢን ከጨመረ በኋላ የማስጀመሪያ ኮድ ማከል ያቆማል።
  • ለDWARF ማረም ቅርፀት ድጋፍ በሁሉም ውቅሮች ውስጥ ነው የሚተገበረው።
  • የZstandard አልጎሪዝምን በመጠቀም የማረም መረጃን ለመጨመቅ አማራጭ "-gz=zstd" ታክሏል። ለቀድሞው "-gz=zlib-gnu" የማረም መጭመቂያ ሁነታ ድጋፍ ተቋርጧል።
  • ለOpenMP 5.2 (Open Multi-Processing) የመጀመሪያ ድጋፍ ታክሏል እና የ OpenMP 5.0 እና 5.1 ደረጃዎችን መተግበሩን ቀጥሏል፣ ይህም ኤፒአይዎችን እና ትይዩ የፕሮግራም አወጣጥ ዘዴዎችን በብዙ ኮር እና ድብልቅ (ሲፒዩ+ ጂፒዩ/ዲኤስፒ) ስርዓቶች በጋራ ማህደረ ትውስታ የመተግበር ዘዴዎችን ይገልጻል። እና የቬክተር አሃዶች (ሲኤምዲ).
  • በ 1980 ዎቹ ውስጥ የተፈጠረው እና በ dbx አራሚ ውስጥ ጥቅም ላይ የዋለው የ "STABS" የመረጃ ማከማቻ ቅርጸት (በ -gstabs እና -gxcoff አማራጮች የነቃ) የድሮው የ"STABS" ማረም ድጋፍ ተቋርጧል።
  • የ Solaris 11.3 ድጋፍ ተቋርጧል (ይህን መድረክ የሚደግፍ ኮድ ወደፊት በሚለቀቅበት ጊዜ ይወገዳል)።

ምንጭ: opennet.ru

አስተያየት ያክሉ