Setelah satu tahun pengembangan yang intensif, peluncuran versi baru «GCC 15.1» diumumkan, yang diposisikan sebagai versi stabil pertama dalam cabang 15.x baru dari rangkaian kompiler sumber terbuka yang populer ini.
Rilis ini tidak hanya meluncurkan seri GCC 15 baru secara resmi, tetapi juga menandai dimulainya persiapan untuk pengembangan GCC 16, karena cabang 16.0 telah bercabang secara paralel dan akan meletakkan dasar untuk rilis utama berikutnya, GCC 16.1.
GCC 15.1 Fitur Baru Utama
Salah satu perubahan paling menonjol dalam versi baru ini adalah GCC 15.1 mengadopsi standar C23 sebagai default untuk mengkompilasi kode C, menggunakan opsi -std=gnu23. Pembaruan ini menggantikan standar sebelumnya yang digunakan secara default, C17 (-std=gnu17), dan memperkenalkan sejumlah fitur baru dari standar baru. Diantaranya adalah konstan nullptr, tipe _BitInt(n), dan kata kunci bool, true, dan false, yang dapat menyebabkan konflik dengan pengenal yang ada dalam kode lama.
Fitur baru lainnya yang disertakan dalam GCC 15.1 adalah #embed direktif untuk menanamkan data biner, dan atribut seperti tidak berurutan dan dapat direproduksi, yang memberikan kontrol lebih besar atas urutan eksekusi dan penentuan hasil yang konsisten. Selain itu, elemen standar C2Y masa depan telah diimplementasikan, seperti variabel yang dideklarasikan dalam kondisi if, rentang nilai dalam pernyataan case, sufiks imajiner i dan j, dan dukungan untuk operator ++ dan — yang diterapkan pada bilangan kompleks.
Peningkatan dalam C++ dan masa depan C++26
Dalam kasus bahasa C++, versi baru GCC 15.1 mengimplementasikan fitur yang sedang dibahas untuk standar C++26, seiring diperkenalkannya fitur-fitur baru seperti operator "teman", penggunaan constexpr dengan varian operator baru, dan penyempurnaan sintaksis untuk tautan terstruktur dan atribut seperti musttail untuk menjamin rekursi ekor.
Dukungan C++23 juga diperluas dengan aturan baru untuk menggunakan ekspor, peningkatan penanganan objek sementara, dan implementasi eksperimental modul std dan std.compat di libstdc++. Selain itu, keamanan diperkuat untuk inisialisasi serikat dan kompilasi kode ditingkatkan berkat sistem hashing templat yang lebih efisien.
Peringatan baru dan peningkatan dalam analisis statis
Sistem Analisis statis menerima desain ulang visual yang menyoroti masalah melalui simbol, Tips untuk migrasi ke C23, dan pustaka libgdiagnostics baru yang memungkinkan penggunaan kembali logika diagnostik dalam proyek lain. Dukungan untuk menghasilkan laporan dalam format SARIF juga diperkenalkan, memfasilitasi integrasi dengan alat analisis kode modern.
Di Peringatan yang ada ditambahkan ke peringatan yang baru, sebagai -Wanalyzer-perilaku-tidak-terdefinisi-ptrdiff untuk mendeteksi pengurangan antara pointer yang tidak terkait, –Wtrailing-whitespace dan -Wleading-whitespace untuk menunjukkan spasi yang tidak diperlukan, dan –Penjaga Wheader untuk mendeteksi kesalahan dalam perlindungan penyertaan header.
Optimasi dan dukungan
Di antara pengoptimalan yang penting, Mode kompilasi tambahan untuk LTO disertakan (Link-Time Optimization), yang dirancang untuk mempercepat kompilasi ulang saat perubahannya minimal. Juga vektorisasi loop ditingkatkan, bahkan dalam kasus di mana ukuran array tidak diketahui pada waktu kompilasi, dan meningkatkan kecepatan kompilasi file yang sangat besar.
Di sisi dukungan, ekstensi ARMv64 telah ditambahkan ke AArch8, dukungan untuk CPU baru seperti Apple M3, Cortex-X925 dan NVIDIA Grace, dan memperluas platform MinGW. Pembuatan kode untuk GPU AMD Radeon diperkuat dengan Dukungan eksperimental untuk seri GFX9, GFX10.3, dan GFX11 baru. Untuk arsitektur x86, dukungan untuk AVX10.2 dan instruksi AMX baru diaktifkan, dan dukungan untuk Xeon Phi Knights dihentikan.
Selain itu, GCC 15.1 memperkenalkan kompiler untuk COBOL (gcobol), dengan dukungan untuk arsitektur x86-64 dan AArch64, dan implementasi bahasa D yang diperbarui (versi 2.111.0). Dukungan untuk bilangan bulat tak bertanda di Fortran telah ditambahkan, dan adopsi OpenMP 5.0 hingga 6.0 telah ditingkatkan, termasuk peningkatan interoperabilitas dan penggunaan memori terpadu pada GPU.