Sau một năm phát triển mạnh mẽ, việc phát hành phiên bản mới của «GCC 15.1» đã được công bố, được định vị là phiên bản ổn định đầu tiên trong nhánh 15.x mới của bộ biên dịch mã nguồn mở phổ biến này.
Bản phát hành này không chỉ chính thức ra mắt phiên bản GCC 15 mới mà còn đánh dấu sự khởi đầu cho quá trình chuẩn bị phát triển GCC 16, vì nhánh 16.0 đã được phân nhánh song song và sẽ đặt nền tảng cho bản phát hành chính tiếp theo là GCC 16.1.
GCC 15.1 Các tính năng mới chính
Một trong những thay đổi đáng chú ý nhất trong phiên bản mới này là GCC 15.1 áp dụng tiêu chuẩn C23 mặc định để biên dịch mã C, sử dụng tùy chọn -std=gnu23. Bản cập nhật này thay thế tiêu chuẩn trước đây được sử dụng theo mặc định là C17 (-std=gnu17) và giới thiệu một số tính năng mới của tiêu chuẩn mới. Trong số đó có hằng số nullptr, kiểu _BitInt(n), và các từ khóa bool, true và false, điều này có thể gây xung đột với các mã định danh hiện có trong mã cũ.
Một tính năng mới khác mà GCC 15.1 kết hợp là #embed chỉ thị để nhúng dữ liệu nhị phân, và các thuộc tính như không theo trình tự và có thể tái tạo, giúp kiểm soát tốt hơn thứ tự thực hiện và xác định kết quả nhất quán. Ngoài ra, các yếu tố của tiêu chuẩn C2Y trong tương lai đã được triển khai, chẳng hạn như các biến được khai báo trong điều kiện if, phạm vi giá trị trong các câu lệnh case, hậu tố tưởng tượng i và j, và hỗ trợ cho các toán tử ++ và — được áp dụng cho số phức.
Cải tiến trong C++ và C++26 trong tương lai
Trong trường hợp của ngôn ngữ C++, phiên bản mới của GCC 15.1 triển khai các tính năng đang được thảo luận cho tiêu chuẩn C++26, khi các tính năng mới được giới thiệu như toán tử "bạn bè", việc sử dụng constexpr với các biến thể của toán tử mới và cải tiến cú pháp cho các liên kết có cấu trúc và các thuộc tính như musttail để đảm bảo đệ quy đuôi.
Hỗ trợ C++23 cũng được mở rộng với các quy tắc mới để sử dụng export, cải tiến trong việc xử lý các đối tượng tạm thời và triển khai thử nghiệm các mô-đun std và std.compat trong libstdc++. Ngoài ra, tính bảo mật được tăng cường khi khởi tạo hợp nhất và quá trình biên dịch mã được cải thiện nhờ hệ thống băm mẫu hiệu quả hơn.
Cảnh báo mới và cải tiến trong phân tích tĩnh
Hệ thống Phân tích tĩnh được thiết kế lại trực quan làm nổi bật các vấn đề thông qua các biểu tượng, Mẹo di chuyển sang C23 và thư viện libgdiagnostics mới cho phép tái sử dụng logic chẩn đoán trong các dự án khác. Tính năng hỗ trợ tạo báo cáo theo định dạng SARIF cũng được giới thiệu, giúp tích hợp dễ dàng với các công cụ phân tích mã hiện đại.
Tại Các cảnh báo hiện có được thêm vào các cảnh báo mới, BẰNG -Wanalyzer-undefined-behavior-ptrdiff để phát hiện phép trừ giữa các con trỏ không liên quan, –Wtrailing-whitespace và -Wleading-whitespace để chỉ ra khoảng trắng không cần thiết và –Người bảo vệ Wheader để phát hiện lỗi trong việc bảo vệ tiêu đề.
Tối ưu hóa và hỗ trợ
Trong số những tối ưu hóa đáng chú ý, Một chế độ biên dịch gia tăng cho LTO được bao gồm (Tối ưu hóa thời gian liên kết), được thiết kế để tăng tốc độ biên dịch lại khi những thay đổi là tối thiểu. Cũng vector hóa vòng lặp được cải thiện, ngay cả trong trường hợp kích thước của mảng không được biết tại thời điểm biên dịch và tăng tốc độ biên dịch các tệp rất lớn.
Về phía hỗ trợ, các tiện ích mở rộng ARMv64 đã được thêm vào AArch8, hỗ trợ cho CPU mới như Apple M3, Cortex-X925 và NVIDIA Grace, đồng thời mở rộng nền tảng MinGW. Việc tạo mã cho GPU AMD Radeon được tăng cường với Hỗ trợ thử nghiệm cho dòng máy GFX9, GFX10.3 và GFX11 mới. Đối với kiến trúc x86, hỗ trợ cho AVX10.2 và các lệnh AMX mới được bật và hỗ trợ cho Xeon Phi Knights đã bị ngừng.
Bên cạnh đó, GCC 15.1 giới thiệu trình biên dịch cho COBOL (gcobol), hỗ trợ kiến trúc x86-64 và AArch64, và triển khai ngôn ngữ D được cập nhật (phiên bản 2.111.0). Đã thêm hỗ trợ cho số nguyên không dấu trong Fortran và việc áp dụng OpenMP 5.0 đến 6.0 đã được cải thiện, bao gồm cải tiến khả năng tương tác và sử dụng bộ nhớ thống nhất trên GPU.