Ngaleupaskeun GCC 13 kompiler suite

Saatos taun pangwangunan, sékrési kompiler suite GCC 13.1 gratis, sékrési signifikan munggaran dina cabang GCC 13.x énggal. Dina skéma panomeran pelepasan anyar, vérsi 13.0 dianggo nalika pangwangunan, sareng teu lami sateuacan sékrési GCC 13.1, cabang GCC 14.0 parantos dicabang, ti mana sékrési signifikan salajengna GCC 14.1 bakal kabentuk.

Parobahan utama:

  • GCC ngadopsi frontend pikeun ngawangun program dina basa programming Modula-2. Éta ngadukung kode wangunan anu saluyu sareng dialek PIM2, PIM3, sareng PIM4, ogé standar ISO anu ditarima pikeun basa éta.
  • A frontend kalawan palaksanaan kompiler basa Rust disiapkeun ku proyék gccrs (GCC Rust) geus ditambahkeun kana tangkal sumber GCC. Dina panempoan ayeuna, forntend ditandaan salaku ékspérimén sareng ditumpurkeun sacara standar. Sakali frontend geus siap (diperkirakeun dina release salajengna), éta toolkit GCC baku bisa dipaké pikeun compile program Rust tanpa kudu install compiler rustc diwangun ngagunakeun LLVM kamajuan.
  • Link-in-Step Optimization (LTO) nambihan dukungan pikeun server padamelan (jobserver) anu dikelola ku GNU make project pikeun ngaoptimalkeun palaksanaan ngawangun paralel dina sababaraha utas. Dina GCC, jobserver dipaké pikeun parallelize karya salila optimasi LTO dina konteks sakabéh program (WPA, Analisis sakabeh-program). Pipa ngaranna (--jobserver-style=fifo) dipaké sacara standar pikeun komunikasi sareng jobserver.
  • Analyzer statik (-fanalyzer) nawiskeun 20 pamariksaan diagnostik anyar, kalebet "-Wanalyzer-out-of-bounds", "-Wanalyzer-allocation-size", "-Wanalyzer-deref-before-check", "-Wanalyzer-infinite-recursion" -Wanalyzer-jump-through-null", "-va-listyzer".
  • Kamampuhan pikeun ngaluarkeun diagnostik dina format SARIF dumasar kana JSON parantos dilaksanakeun. The format anyar bisa dipaké pikeun meunangkeun hasil analisis statik (GCC -fanalyzer), kitu ogé pikeun meunangkeun informasi ngeunaan warnings sarta kasalahan. Aktipkeun dipigawé ku pilihan "-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file", dimana pilihan jeung "json" ngahasilkeun kaluaran dina varian GCC-spésifik tina format JSON.
  • Dilaksanakeun sababaraha fitur anu ditetepkeun dina standar C23 C, sapertos konstanta nullptr pikeun netepkeun pointer nol, ngagampangkeun ngagunakeun daptar kalayan jumlah variabel argumen (variadic), manjangkeun kamampuan enums, atribut noreturn, ngamungkinkeun panggunaan constexpr sareng otomatis nalika netepkeun objék, jinis sareng jinis operator align, align, aligner, aligner, aligner anyar, operator align, aligner, align, aligner, aligner, aligner, aligner, aligner, aligner, alignment, alignment, alignment, alignment, alignment, alignment, alignment, alignment, alignment, alignment, alignment, alignment, alignment, aligner, _local sareng leres, ngamungkinkeun kurung kosong nalika ization awal.
  • Sababaraha fitur anu ditetepkeun dina standar C++23 dilaksanakeun, sapertos kamampuan pikeun nempatkeun labél dina tungtung éksprési majemuk, kasaluyuan sareng jinis char8_t, diréktif preprocessor #warning, dipisahkeun (\u{}, \o{}, \x{}) sareng dingaranan ('\N{HURUF MODAL LATIN A}') ngewa operator, éksprési statik dina sababaraha operator, éksprési statik dina operator (urutan, résistansi statik) tina con stexpr, rojongan pikeun UTF-8 dina kode sumber.
  • Ningkatkeun dukungan ékspérimén pikeun standar C ++ 20 sareng C ++ 23 dina libstdc ++, sapertos nambihan dukungan file lulugu sarta std:: format, kamampuhan file lulugu nambahan , jenis titik floating tambahan ditambahkeun, file lulugu dilaksanakeun Jeung .
  • Ditambahkeun atribut fungsi anyar pikeun dokumén yén deskriptor file diliwatan dina variabel integer: "__attribute__((fd_arg (N)))", "__attribute__((fd_arg_read (N)))", jeung "__attribute__((fd_arg_write (N)))". Atribut anu ditangtukeun tiasa dianggo dina analisa statik (-fanalyzer) pikeun ngadeteksi padamelan anu salah sareng deskriptor file.
  • A atribut anyar "__attribute__((anggap (EXPR)))" geus ditambahkeun, kalawan nu bisa ngabejaan kompiler nu éksprési bener tur kompiler nu bisa ngagunakeun kanyataan ieu tanpa evaluating éksprési.
  • Ditambahkeun "-fstrict-flex-arrays = [level]" bandéra pikeun milih kabiasaan nalika ngolah unsur Asép Sunandar Sunarya fléksibel dina struktur (Anggota Array Fléksibel, hiji Asép Sunandar Sunarya ukuran teu katangtu dina tungtung struktur, contona, "int b []").
  • Ditambahkeun "-Wenum-int-mismatch" bandéra pikeun ngaluarkeun warnings lamun aya mismatch antara hiji tipe enumerated na hiji tipe integer.
  • The Fortran hareup-tungtung boga rojongan pinuh pikeun finalisasi.
  • Rojongan pikeun fungsi jeung tipe umum (generik) geus ditambahkeun kana tungtung hareup pikeun basa Go, sarta kasaluyuan jeung pakét pikeun Go 1.18 basa geus ensured.
  • Backend AArch64 ngadukung CPU Ampere-1A (ampere1a), Arm Cortex-A715 (cortex-a715), Arm Cortex-X1C (cortex-x1c), Arm Cortex-X3 (cortex-x3), sareng Arm Neoverse V2 (neoverse-v2). Rojongan pikeun "armv9.1-a", "armv9.2-a", sarta "armv9.3-a" argumen geus ditambahkeun kana pilihan "-march =". Ditambahkeun dukungan pikeun ekstensi prosésor FEAT_LRCPC, FEAT_CSSC sareng FEAT_LSE2.
  • Rojongan pikeun STAR-MC1 (star-mc1), Arm Cortex-X1C (cortex-x1c), sareng Arm Cortex-M85 (cortex-m85) CPUs parantos ditambahkeun kana backend arsitéktur ARM.
  • Rojongan pikeun Intel Raptor Lake, Meteor Lake, Sierra Forest, Grand Ridge, Emerald Rapids, Granite Rapids, sareng prosesor AMD Zen 86 (znver4) parantos ditambahkeun kana backend x4. The AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT, sarta AMX-COMPLEX instruksi set ekstensi arsitektur diusulkeun dina prosesor Intel geus dilaksanakeun. Pikeun C jeung C ++ dina sistem kalawan SSE2, tipe __bf16 disadiakeun.
  • Generasi kode backend pikeun AMD Radeon GPUs (GCN) nerapkeun kamampuh ngagunakeun akselerator AMD Instinct MI200 pikeun ngaronjatkeun kinerja OpenMP / OpenACC. Ningkatkeun vectorization ngagunakeun parentah SIMD.
  • Kamampuan backend sacara signifikan dimekarkeun pikeun platform LoongArch.
  • Ditambahkeun dukungan pikeun CPU T-Head's XuanTie C906 (thead-c906) dina backend RISC-V. Dilaksanakeun rojongan pikeun pawang vektor didefinisikeun dina RISC-V Véktor Extension Intrinsik 0.11 spésifikasi. Ditambahkeun dukungan pikeun 30 ekstensi spésifikasi RISC-V.
  • Nalika ngahasilkeun objék dibagikeun kalawan pilihan "-shared", kode ngamimitian euweuh ditambahkeun sanggeus nambahkeun lingkungan floating point lamun "-Ofast", "-ffast-math", atawa "-funsafe-math-optimizations" optimizations diaktipkeun.
  • Rojongan pikeun format debugging DWARF dilaksanakeun dina ampir kabéh konfigurasi.
  • Ditambahkeun "-gz = zstd" pilihan pikeun niiskeun inpormasi debug nganggo algoritma Zstandard. Ngahapus dukungan pikeun modeu komprési inpormasi debug "-gz=zlib-gnu".
  • Pangrojong awal pikeun OpenMP 5.2 (Buka Multi-Processing) geus ditambahkeun jeung palaksanaan OpenMP 5.0 jeung 5.1 standar geus dituluykeun, nangtukeun API jeung métode pikeun nerapkeun métode programming paralel dina multi-core jeung hibrid (CPU + GPU / DSP) sistem jeung memori dibagikeun jeung unit vectorization (SIMD).
  • Rojongan pikeun warisan debug format gudang informasi "STABS" (diaktipkeun ku pilihan -gstabs na -gxcoff), dijieun dina taun 1980-an sarta dipaké dina debugger dbx, geus dieureunkeun.
  • Pangrojong anu dileungitkeun pikeun Solaris 11.3 (kode pikeun ngadukung platform ieu bakal dipupus dina rilis anu bakal datang).

sumber: opennet.ru

Tambahkeun komentar