Rilis saka GCC 13 compiler suite

Sawise setahun pembangunan, free compiler Suite GCC 13.1 wis dirilis, release pinunjul pisanan ing cabang GCC 13.x anyar. Sesuai karo skema penomoran rilis anyar, versi 13.0 digunakake ing proses pangembangan, lan sakcepete sadurunge rilis GCC 13.1, cabang GCC 14.0 wis dadi cabang, saka ngendi rilis utama sabanjure, GCC 14.1, bakal dibentuk.

Owah-owahan utama:

  • GCC kalebu frontend kanggo ngrakit program ing basa pamrograman Modula-2. DΓ©wan kode sing cocog karo dialek PIM2, PIM3 lan PIM4, uga standar ISO sing ditampa kanggo basa tartamtu, didhukung.
  • A mburi ngarep karo implementasine saka compiler basa Rust disiapake dening project gccrs (GCC Rust) wis ditambahake menyang wit sumber GCC. Ing wangun saiki, mburi maju ditandhani minangka eksperimen lan dipatΓ¨ni minangka standar. Sawise frontend wis siyap (karepake ing release sabanjurΓ©), alat GCC standar bisa digunakake kanggo ngumpulake program ing basa Rust tanpa perlu nginstal compiler rustc, dibangun nggunakake pembangunan LLVM.
  • Mesin Link Time Optimization (LTO) nambahake dhukungan kanggo jobserver sing didhukung dening proyek GNU make kanggo ngoptimalake eksekusi bangunan paralel ing pirang-pirang utas. Ing GCC, jobserver digunakake kanggo parallelize karya sak Optimization LTO ing konteks kabeh program (WPA, Whole-program Analysis). Kanggo sesambungan karo jobserver, jenenge pipe digunakake minangka standar (-jobserver-style=fifo).
  • Analyzer statis (-fanalyzer) nawakake 20 pemeriksaan diagnostik anyar, kalebu "-Wanalyzer-out-of-bounds", "-Wanalyzer-allocation-size", "-Wanalyzer-deref-before-check", "-Wanalyzer- tanpa wates -rekursi" -Wanalyzer-jump-through-null", "-Wanalyzer-va-list-leak".
  • Kemampuan kanggo ngasilake diagnostik ing format SARIF, adhedhasar JSON, wis dileksanakake. Format anyar bisa digunakake kanggo njupuk asil analisis statis (GCC -fanalyzer), uga diwenehi informasi bebaya lan kesalahan. Ngaktifake wis rampung kanthi pilihan "-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file", ing ngendi opsi karo "json" ngasilake output ing varian khusus GCC saka format JSON .
  • Dilaksanakake sawetara fitur sing ditetepake ing standar C23 C, kayata konstanta nullptr kanggo nemtokake null pointer, nyederhanakake panggunaan dhaptar variadic, ngembangake kemampuan enumerasi, atribut noreturn, ngidini panggunaan constexpr lan otomatis nalika nemtokake obyek, jinis lan typeof_unqual, tembung kunci anyar alignas, alignof, bool, false, static_assert, thread_local lan bener, ngidini kurung kosong bisa ditemtokake nalika initialization.
  • Dilaksanakake sawetara fitur sing ditetepake ing standar C++ 23, kayata kemampuan kanggo nyelehake tandha ing pungkasan ekspresi majemuk, kompatibilitas karo jinis char8_t, arahan preprocessor #warning, diwatesi (\u{}, \o{}, \x{}) lan dijenengi ('\N{HURUF KAPITAL LATIN A}') urutan uwal, operator statis (), operator statis [], operator kesetaraan ing ekspresi, ngilangi sawetara watesan babagan panggunaan constexpr, dhukungan kanggo UTF -8 ing teks sumber.
  • libstdc ++ wis nambah dhukungan eksperimen kanggo standar C ++ 20 lan C ++ 23, contone, nambah dhukungan file header. lan std:: format, kapabilitas file header ditambahi , jinis titik ngambang tambahan ditambahake, file header dileksanakake lan .
  • Nambahake atribut fungsi anyar kanggo nyathet yen deskriptor file diterusake ing variabel integer: "__attribute__((fd_arg(N)))", "__attribute__((fd_arg_read(N)))" lan "__attribute__((fd_arg_write(N))) )" Atribut kasebut bisa digunakake ing analisa statis (-fanalyzer) kanggo ndeteksi operasi sing salah karo deskriptor file.
  • Nambahake atribut anyar "__attribute__((assume (EXPR)))", karo sampeyan bisa ngomong compiler sing expression bener lan compiler bisa nggunakake kasunyatan iki tanpa ngevaluasi expression.
  • Nambahake gendera "-fstrict-flex-arrays=[level]" kanggo milih prilaku nalika nangani unsur array fleksibel ing struktur (Anggota Array Fleksibel, susunan ukuran sing ora ditemtokake ing mburi struktur, contone, "int b[]" ).
  • Nambahake gendera "-Wenum-int-mismatch" kanggo ngelingake yen ana ora cocog antarane jinis enum lan jinis integer.
  • Frontend kanggo basa Fortran kanthi lengkap ndhukung finalisasi.
  • Ing mburi ngarep kanggo basa Go, dhukungan kanggo fungsi lan jinis umum (umum) wis ditambahake, lan kompatibilitas karo paket kanggo basa Go 1.18 wis dijamin.
  • Backend kanggo arsitektur AArch64 ndhukung CPU Ampere-1A (ampere1a), Arm Cortex-A715 (cortex-a715), Arm Cortex-X1C (cortex-x1c), Arm Cortex-X3 (cortex-x3) lan Arm Neoverse V2 (neoverse). -v2). Added support kanggo "armv9.1-a", "armv9.2-a" lan "armv9.3-a" bantahan kanggo "-march =" pilihan. Dhukungan ditambahake kanggo ekstensi prosesor FEAT_LRCPC, FEAT_CSSC lan FEAT_LSE2.
  • Dhukungan kanggo CPU STAR-MC1 (star-mc1), Arm Cortex-X1C (cortex-x1c) lan Arm Cortex-M85 (cortex-m85) wis ditambahake ing backend kanggo arsitektur ARM.
  • Backend kanggo arsitektur x86 nambah dhukungan kanggo Intel Raptor Lake, Meteor Lake, Sierra Forest, Grand Ridge, Emerald Rapids, prosesor Granite Rapids, uga prosesor AMD Zen 4 (znver4). Instruksi pesawat ekstensi arsitektur AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT lan AMX-COMPLEX, ngajokaken ing prosesor Intel, wis dipun ginakaken. Kanggo basa C lan C ++ ing sistem SSE2, jinis __bf16 diwenehake.
  • Backend generasi kode kanggo AMD Radeon GPUs (GCN) kalebu kemampuan kanggo nggunakake akselerator AMD Instinct MI200 kanggo nambah kinerja OpenMP/OpenACC. Ngapikake vectorization nggunakake instruksi SIMD.
  • Kapabilitas backend kanggo platform LoongArch wis ditambahi sacara signifikan.
  • Ing backend kanggo arsitektur RISC-V, dhukungan kanggo CPU XuanTie C906 (thead-c906) T-Head wis ditambahake. Dhukungan kanggo prosesor vektor sing ditetepake ing spesifikasi RISC-V Vector Extension Intrinsic 0.11 wis dileksanakake. Nambahake dhukungan kanggo 30 ekstensi menyang spesifikasi RISC-V.
  • Ngasilake obyek sing dienggo bareng karo opsi -shared mandheg nambah kode wiwitan sawise nambah lingkungan floating point yen -Ofast, -ffast-math, utawa -funsafe-math-optimizations diaktifake.
  • Dhukungan kanggo format debug DWARF dileksanakake ing meh kabeh konfigurasi.
  • Nambahake opsi "-gz = zstd" kanggo ngompres informasi debugging nggunakake algoritma Zstandard. Dhukungan kanggo mode kompresi debugging "-gz=zlib-gnu" warisan wis mandheg.
  • Nambahake dhukungan awal kanggo OpenMP 5.2 (Open Multi-Processing) lan implementasine standar OpenMP 5.0 lan 5.1, sing nemtokake API lan metode kanggo ngetrapake metode pemrograman paralel ing sistem multi-inti lan hibrida (CPU+GPU/DSP) kanthi memori sing dienggo bareng. lan vektorisasi unit (SIMD).
  • Dhukungan kanggo format panyimpenan informasi debugging "STABS" warisan (diaktifake karo opsi -gstabs lan -gxcoff), digawe ing taun 1980-an lan digunakake ing debugger dbx, wis mandheg.
  • Dhukungan kanggo Solaris 11.3 wis ora digunakake (kode kanggo ndhukung platform iki bakal dibusak ing rilis mangsa ngarep).

Source: opennet.ru

Add a comment