GCC 11.1 telah dikeluarkan, ini adalah berita dan perubahan terpentingnya

Setelah setahun pembangunan, Versi baru GCC 11.1 compiler suite dikeluarkan, pelepasan pertama yang signifikan di cawangan GCC 11.x baru. Di bawah skema penomboran versi baru, versi 11.0 digunakan selama pengembangan, dan tidak lama sebelum peluncuran GCC 11.1, cabang GCC 12.0 telah ditaburkan untuk membentuk versi utama berikutnya dari GCC 12.1.

GCC 11.1 menonjol untuk peralihan ke format fail debug lalai DWARF 5, penyertaan lalai dari standard C ++ 17 ("-std = gnu ++ 17"), peningkatan ketara dalam keserasian dengan standard C ++ 20, sokongan eksperimental untuk C ++ 23, peningkatan yang berkaitan dengan standard C masa depan bahasa (C2x), pengoptimuman prestasi baru.

GCC 11.1 Ciri Baru Utama

Mod lalai untuk bahasa C ++ diubah untuk menggunakan standard C ++ 17, bukannya C ++ 14 yang dicadangkan sebelumnya. Adalah mungkin untuk melumpuhkan tingkah laku C ++ 17 baru secara selektif ketika memproses templat yang menggunakan templat lain sebagai parameter (-fno-new-ttp-matching).

Menambah sokongan untuk pecutan perkakasan alat AddressSanitizer, yang membolehkan anda menentukan fakta mengakses kawasan memori yang dibebaskan, melebihi had penyangga yang diperuntukkan, dan beberapa jenis kesalahan lain ketika bekerja dengan memori. Percepatan perkakasan pada masa ini hanya tersedia untuk seni bina AArch64 dan menumpukan pada penggunaannya ketika menyusun kernel Linux.

Kebaruan lain yang dikemukakan adalah pengoptimuman dan penambahbaikan antara prosedur, kerana pas IPA-modref baru ditambahkan (-fipa-modref) untuk mengesan kesan sampingan dalam panggilan fungsi dan meningkatkan ketepatan analisis. Selain itu juga peningkatan pelaksanaan pas IPA-ICF (-fipa-icf), yang mengurangkan penggunaan memori kompilasi dan meningkatkan jumlah fungsi terpadu yang mana blok kod yang sama digabungkan.

El enjin pengoptimuman berdasarkan profil (PGO), mod "nilai -profil-nilai" yang lebih baik dengan menjejaki lebih banyak parameter untuk panggilan tidak langsung.

juga Pelaksanaan standard OpenMP 5.0 yang berterusan diserlahkan (Open Multi-Processing), di mana menambah sokongan awal untuk arahan penugasan dan keupayaan untuk menggunakan gelung tidak seragam dalam binaan OpenMP. Pemboleh ubah persekitaran OMP_TARGET_OFFLOAD kini disokong.

Pelaksanaan spesifikasi pengaturcaraan selari OpenACC 2.6 yang disediakan untuk bahasa C, C ++ dan Fortran, yang mendefinisikan alat untuk operasi muat turun ke GPU dan pemproses khusus seperti NVIDIA PTX, telah diperbaiki.

Untuk bahasa keluarga C, atribut baru "no_stack_protector" telah dilaksanakan, direka untuk menandakan fungsi yang tidak boleh diaktifkan perlindungan timbunan ("-fstack-protector"). Atribut "malloc" telah diperluas dengan sokongan untuk mengenal pasti pasangan panggilan untuk memperuntukkan dan membebaskan memori, yang digunakan dalam penghurai statik untuk mengesan kesalahan memori khas (kebocoran memori, penggunaan setelah bebas, panggilan dua kali ke fungsi bebas, dll.) dan peringatan penyusun "-Wmismatched-dealloc", "-Wmismatched- new-delete" dan " -Bebas-objek bebas-pelaporan "melaporkan operasi deallokasi dan deallokasi yang tidak konsisten.

Semasa menghasilkan maklumat debugging, format DWARF 5 digunakan secara lalai, yang, dibandingkan dengan versi sebelumnya, memungkinkan penjanaan data debugging yang 25% lebih padat. Sokongan DWARF 5 penuh memerlukan binutil sekurang-kurangnya versi 2.35.2.

Keupayaan mod ThreadSanitizer yang dipertingkatkan (-fsanitize = thread), kerana yae menambahkan sokongan untuk masa jalan dan persekitaran alternatif, serta sokongan untuk alat debug Kernel Concurrency Sanitizer (KCSAN) untuk mengesan keadaan perlumbaan secara dinamis dalam kernel Linux. Pilihan baru "–param tsan-difference-volatile" dan "–param tsan-instrument-func-entry-exit" telah ditambahkan.

Vectorizer menyediakan perakaunan semua kandungan fungsi dan pemprosesan tambahan keupayaan yang berkaitan dengan persimpangan dan rujukan ke blok sebelumnya dalam carta aliran kawalan (CFG).

Pengoptimum mempunyai kemampuan untuk mengubah serangkaian operasi bersyarat menjadi ekspresi perubahan, di mana pemboleh ubah yang sama dibandingkan. Di masa depan, ungkapan perubahan dapat dikodkan menggunakan petunjuk ujian bit (untuk mengawal penukaran ini, pilihan "-fbit-tes" telah ditambahkan).

Untuk C ++, sebahagian dari perubahan dan inovasi yang dicadangkan dalam standard C ++ 20 telah dilaksanakan, termasuk fungsi maya "consteval virtual", pemusnah pseudo untuk menghentikan kitaran hidup objek, menggunakan kelas enum dan mengira ukuran larik dalam ungkapan "baru".

Sekiranya anda ingin mengetahui lebih lanjut mengenainya, anda boleh menyemak butirannya di pautan berikut. 


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.