Pada tanggal 3 Mei, rilis publik pertama dari GCC versi kesembilan berlangsung: GCC 9.1.
Ini berisi banyak perbaikan dan penambahan yang signifikan dibandingkan dengan yang kedelapan
Versi: kapan.
Perubahan umum
Pilihan
- Perintah yang menerima ukuran sekarang mendukung nilai 64-bit dan sufiks untuk menentukan ukuran;
- Opsi yang ditambahkan -flive-menambal,untuk mengontrol pengoptimalan yang berpotensi merusak penggantian kode dinamis;
- Menambahkan opsi --completion untuk mendukung pelengkapan otomatis di shell perintah;
- Diagnostik kompiler sekarang menyertakan nomor baris (-fno-diagnostics-show-line-numbers) Dan
mengetik informasi (label pertunjukan-diagnostik-fno); - Opsi yang ditambahkan -fdiagnostics-format=json untuk mengeluarkan diagnostik dalam format JSON;
- Opsi untuk menentukan perataan (-falign-fungsi, misalnya) kini dapat menerima beberapa opsi penyelarasan;
- Menambahkan opsi untuk memfilter daftar file (-fprofile-filter-file, -fprofile-kecualikan-file), yang diinstrumentasi oleh profiler;
- AddressSanitizer sekarang menggunakan penyelarasan yang lebih ringkas untuk menangkap akses yang tidak valid ke variabel di tumpukan;
- Banyak peningkatan keluaran -fopt-info;
- Opsi yang ditambahkan -fsave-optimasi-catatan untuk menyimpan laporan optimasi ke file;
- Opsi yang ditambahkan -fipa-stack-alignment ΠΈ -fipa-referensi-dapat dialamatkan.
Fitur bawaan baru
Atribut baru
Lain
Banyak perbaikan pembuatan kode yang terkait dengan:
- pembuatan konstruksi saklar;
- optimasi antar-prosedural;
- optimasi berdasarkan informasi profil;
- optimalisasi pada tahap perakitan (LTO);
Format internal gcov juga sekarang menjadi JSON, dan opsi baru --gunakan-warna-panas melibatkan pewarnaan baris kode berdasarkan seberapa sering digunakan.
Bahasa
Kualitas dan kelengkapan pelaksanaan Buka ACC bahasa C, C++, dan Fortran terus mengalami peningkatan.
Bahasa mirip C
- Dukungan parsial untuk OpenMP 5.0 telah diterapkan;
- Fitur tambahan __builtin_convertvector;
- Peringatan tambahan -Alamat-anggota-yang-dikemas;
- Perbaikan terhadap sejumlah peringatan yang ada;
- Teks kesalahan saat meneruskan jumlah argumen yang salah ke makro kini menyertakan deklarasi makro itu sendiri;
- Perbaikan pada saran koreksi kesalahan ketik.
C
- Mendukung _Static_assert dengan satu argumen untuk -std=c2x (standar C masa depan);
- Peringatan baru -Nilai mutlak, yang menangkap tipe argumen yang salah untuk fungsi seperti abs().
C + +
- Peringatan baru: -Wusang-salinan,
-Winit-daftar-seumur hidup,
-Gerakan yang berlebihan,
-Wessimizing-bergerak,
-Konversi kelas W; - Pekerjaan sedang dilakukan untuk mengimplementasikan fitur-fitur baru dari standar masa depan C++2a;
- Frontend sekarang menyimpan informasi yang lebih akurat tentang sejumlah elemen kode sumber, yang memungkinkan Anda menampilkan informasi lebih rinci dalam diagnostik;
- Peningkatan diagnostik untuk fungsi yang kelebihan beban, operator biner, pemanggilan fungsi, dan string format;
- Menambahkan perbaikan otomatis yang didukung oleh beberapa lingkungan pengembangan untuk sejumlah kesalahan populer (tanda kurung hilang, namespace, kesalahan ketik, dll.).
libstdc++
- Implementasi C++17 tidak lagi bersifat eksperimental;
- Menambahkan algoritma paralel, , , A tidak lagi membutuhkan -lstdc++fs;
- Peningkatan dukungan eksperimental untuk C++2a ( , , std::bind_front, dll.);
- Dukungan untuk membuka aliran file di Windows yang jalurnya berisi karakter non-char;
- Dukungan awal di Windows;
- Dukungan awal untuk Jaringan TS.
D
Bahasa D versi 2.076 disertakan dalam GCC.
Fortran
- Dukungan penuh untuk I/O asinkron;
- Argumen BACK yang diterapkan untuk MINLOC dan MAXLOC;
- Mengimplementasikan fungsi FINDLOC dan IS_CONTIGOUS;
- Sintaks untuk mengakses komponen bilangan kompleks telah diterapkan: c%re dan c%im;
- Sintaks yang diterapkan str%len dan a%kind;
- Deskriptor C yang diterapkan dan header ISO_Fortran_binding.h;
- Persyaratan yang dilonggarkan untuk hasil fungsi MAX dan MIN jika salah satu argumennya adalah NaN;
- Opsi yang ditambahkan -fdec-termasuk;
- Petunjuk ditambahkan DIBANGUN.
libgccjit
- Fitur tambahan gcc_jit_context_add_driver_option.
Lain
Banyak perubahan khusus arsitektur dan OS.
Sumber: linux.org.ru