GCC 11.1 telah dirilis, ini adalah berita dan perubahan terpentingnya

Setelah satu tahun pembangunan, GCC 11.1 compiler suite versi baru dirilis, rilis signifikan pertama di cabang GCC 11.x baru. Di bawah skema penomoran versi baru, versi 11.0 digunakan selama pengembangan, dan tak lama sebelum rilis GCC 11.1, cabang GCC 12.0 telah bercabang untuk membentuk versi utama GCC 12.1 berikutnya.

GCC 11.1 menonjol untuk transisi ke format file debug default DWARF 5, penyertaan default standar C ++ 17 ("-std = gnu ++ 17"), peningkatan kompatibilitas yang signifikan dengan standar C ++ 20, dukungan eksperimental untuk C ++ 23, peningkatan yang terkait dengan standar masa depan bahasa C (C2x), pengoptimalan kinerja baru.

GCC 11.1 Fitur Baru Utama

Mode default untuk bahasa C ++ diubah untuk menggunakan standar C ++ 17, alih-alih C ++ 14 yang diusulkan sebelumnya. Perilaku C ++ 17 baru dapat dinonaktifkan secara selektif saat memproses template yang menggunakan template lain sebagai parameter (-fno-new-ttp-matching).

Menambahkan dukungan untuk akselerasi perangkat keras dari alat AddressSanitizer, yang memungkinkan Anda untuk menentukan fakta mengakses area memori yang dibebaskan, melebihi batas buffer yang dialokasikan, dan beberapa jenis kesalahan lainnya saat bekerja dengan memori. Akselerasi perangkat keras saat ini hanya tersedia untuk arsitektur AArch64 dan berfokus pada penggunaannya saat mengompilasi kernel Linux.

Kebaruan lain yang disajikan adalah pengoptimalan dan peningkatan antar prosedur, saat IPA-modref pass baru ditambahkan (-fipa-modref) untuk melacak efek samping dalam panggilan fungsi dan meningkatkan akurasi analisis. Selain itu juga a peningkatan implementasi lulus IPA-ICF (-fipa-icf), yang mengurangi konsumsi memori kompilasi dan meningkatkan jumlah fungsi terpadu di mana blok kode identik digabungkan.

El mesin pengoptimalan yang digerakkan oleh profil (PGO), meningkatkan mode "-fprofile-values" dengan melacak lebih banyak parameter untuk panggilan tidak langsung.

juga Implementasi lanjutan dari standar OpenMP 5.0 disorot (Open Multi-Processing), di mana menambahkan dukungan awal untuk direktif tugas dan kemampuan untuk menggunakan loop yang tidak seragam dalam build OpenMP. Variabel lingkungan OMP_TARGET_OFFLOAD sekarang didukung.

Implementasi spesifikasi pemrograman paralel OpenACC 2.6 yang disediakan untuk bahasa C, C ++ dan Fortran, yang mendefinisikan alat untuk memindahkan operasi ke GPU dan prosesor khusus seperti NVIDIA PTX, telah ditingkatkan.

Untuk bahasa keluarga C, atribut baru "no_stack_protector" telah diterapkan, dirancang untuk menandai fungsi yang perlindungan tumpukannya tidak boleh diaktifkan ("-fstack-protector"). Atribut "malloc" telah diperpanjang dengan dukungan untuk mengidentifikasi pasangan panggilan yang akan dialokasikan dan mengosongkan memori, yang digunakan dalam parser statis untuk mendeteksi kesalahan memori umum (kebocoran memori, penggunaan setelah kosong, panggilan ganda ke fungsi bebas, dll.) dan peringatan kompiler "-Wmismatched-dealloc", "-Wmismatched- new-delete" dan " -Wfree-nonheap-object "melaporkan operasi deallocation dan deallocation yang tidak konsisten.

Saat membuat informasi debugging, format DWARF 5 digunakan secara default, yang, dibandingkan dengan versi sebelumnya, memungkinkan pembuatan data debugging yang 25% lebih ringkas. Dukungan penuh DWARF 5 membutuhkan binutils setidaknya versi 2.35.2.

Kemampuan mode ThreadSanitizer yang ditingkatkan (-fsanitize = thread), karena yae menambahkan dukungan untuk runtime dan lingkungan alternatif, serta dukungan untuk alat debugging Kernel Concurrency Sanitizer (KCSAN) untuk secara dinamis mendeteksi kondisi balapan di dalam kernel Linux. Opsi baru "–param tsan-differish-volatile" dan "–param tsan-instrument-func-entry-exit" telah ditambahkan.

Vectorizer menyediakan penghitungan semua konten fungsi dan pemrosesan tambahan dari kapabilitas yang terkait dengan persimpangan dan referensi ke blok sebelumnya dalam diagram alir kontrol (CFG).

Pengoptimal memiliki kemampuan untuk mengubah serangkaian operasi bersyarat menjadi ekspresi perubahan, di mana variabel yang sama dibandingkan. Di masa mendatang, ekspresi perubahan dapat dikodekan menggunakan petunjuk pengujian bit (untuk mengontrol konversi ini, opsi "-fbit-tes" telah ditambahkan).

Untuk C ++, bagian dari perubahan dan inovasi yang diusulkan dalam standar C ++ 20 telah diimplementasikan, termasuk fungsi virtual "virtual konsteval", perusak semu untuk menghentikan siklus hidup objek, menggunakan kelas enum dan menghitung ukuran array dalam ekspresi "baru".

Jika Anda ingin tahu lebih banyak tentang itu, Anda dapat memeriksa detailnya di link berikut. 


Isi artikel mengikuti prinsip kami etika editorial. Untuk melaporkan kesalahan, klik di sini.

Jadilah yang pertama mengomentari

tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.