Vào ngày 3 tháng 9.1, phiên bản thứ chín của GCC đã diễn ra phiên bản công khai đầu tiên: GCC XNUMX.
Nó chứa nhiều cải tiến và bổ sung đáng kể so với phiên bản thứ tám
phiên bản.
Những thay đổi chung
Tùy chọn
- Các lệnh chấp nhận kích thước hiện hỗ trợ các giá trị và hậu tố 64 bit để chỉ định kích thước;
- Tùy chọn đã thêm -flive-vá,để kiểm soát các hoạt động tối ưu hóa có khả năng phá hoại việc thay thế mã động;
- Đã thêm tùy chọn --completion để hỗ trợ tự động hoàn thành trong shell lệnh;
- Chẩn đoán trình biên dịch hiện bao gồm số dòng (-fno-chẩn đoán-show-line-số) Và
thông tin loại (fno-chẩn đoán-show-nhãn); - Tùy chọn đã thêm -fdiagnostics-format=json để xuất chẩn đoán ở định dạng JSON;
- Các tùy chọn để chỉ định căn chỉnh (-falign-các chức năng, chẳng hạn) hiện có thể chấp nhận một số tùy chọn căn chỉnh;
- Đã thêm tùy chọn để lọc danh sách tệp (-fprofile-filter-file, -fprofile-loại trừ-file), được thiết lập bởi trình hồ sơ;
- Địa chỉSanitizer hiện sử dụng căn chỉnh nhỏ gọn hơn để phát hiện các truy cập không hợp lệ vào các biến trên ngăn xếp;
- Nhiều cải tiến đầu ra -fopt-thông tin;
- Tùy chọn đã thêm -fsave-tối ưu hóa-bản ghi để lưu báo cáo tối ưu hóa vào một tập tin;
- Tùy chọn đã thêm -fipa-stack-căn chỉnh и -fipa-tham chiếu-có địa chỉ.
Các tính năng tích hợp mới
Thuộc tính mới
Khác
Nhiều cải tiến tạo mã liên quan đến:
- tạo ra các cấu trúc chuyển mạch;
- tối ưu hóa liên thủ tục;
- tối ưu hóa dựa trên thông tin hồ sơ;
- tối ưu hóa ở giai đoạn lắp ráp (LTO);
Ngoài ra định dạng nội bộ của gcov hiện là JSON và tùy chọn mới --use-hotness-màu sắc liên quan đến việc tô màu các dòng mã dựa trên tần suất chúng được sử dụng.
Ngôn ngữ
Chất lượng và tính đầy đủ của việc thực hiện mởACC các ngôn ngữ C, C++ và Fortran tiếp tục được cải thiện.
ngôn ngữ giống C
- Hỗ trợ một phần cho OpenMP 5.0 đã được triển khai;
- Đã thêm chức năng __buildin_convertvector;
- Đã thêm cảnh báo -Waddress-of-đóng gói-thành viên;
- Cải tiến một số cảnh báo hiện có;
- Văn bản lỗi khi chuyển sai số lượng đối số cho macro hiện bao gồm phần khai báo của chính macro đó;
- Cải tiến đề xuất sửa lỗi chính tả.
C
- Hỗ trợ _Static_assert với một đối số cho -std=c2x (tiêu chuẩn C trong tương lai);
- Cảnh báo mới -Wabsolute-giá trị, bắt được loại đối số sai cho các hàm như abs().
C + +
- Cảnh báo mới: -Wdeprecated-copy,
-Winit-list-lifetime,
-Wredundant-di chuyển,
-Wpessimizing-di chuyển,
-Chuyển đổi lớp W; - Công việc đang được tiến hành để triển khai các tính năng mới từ tiêu chuẩn tương lai C++2a;
- Giao diện người dùng hiện lưu trữ thông tin chính xác hơn về một số thành phần mã nguồn, cho phép bạn hiển thị thông tin chi tiết hơn trong chẩn đoán;
- Cải thiện chẩn đoán cho các hàm quá tải, toán tử nhị phân, lệnh gọi hàm và chuỗi định dạng;
- Đã thêm các bản sửa lỗi tự động được một số môi trường phát triển hỗ trợ đối với một số lỗi phổ biến (thiếu dấu ngoặc đơn, không gian tên, lỗi chính tả, v.v.).
libstdc ++
- Việc triển khai C++17 không còn mang tính thử nghiệm nữa;
- Đã thêm các thuật toán song song, , , MỘT không còn yêu cầu -lstdc++fs;
- Cải thiện hỗ trợ thử nghiệm cho C++ 2a ( , , std::bind_front, v.v.);
- Hỗ trợ mở luồng file trên Windows có đường dẫn chứa ký tự không phải char;
- Hỗ trợ ban đầu trên Windows;
- Hỗ trợ ban đầu cho Networking TS.
D
Phiên bản ngôn ngữ D 2.076 được bao gồm trong GCC.
Fortran
- Hỗ trợ đầy đủ cho I/O không đồng bộ;
- Đã triển khai đối số BACK cho MINLOC và MAXLOC;
- Đã triển khai các hàm FINDLOC và IS_CONTIGOUS;
- Cú pháp truy cập các thành phần của số phức đã được triển khai: c%re và c%im;
- Đã triển khai cú pháp str%len và a%kind;
- Đã triển khai bộ mô tả C và tiêu đề ISO_Fortran_bind.h;
- Giảm bớt các yêu cầu đối với kết quả của hàm MAX và MIN khi một trong các đối số là NaN;
- Tùy chọn đã thêm -fdec-bao gồm;
- Đã thêm chỉ thị ĐƯỢC XÂY DỰNG TRONG.
libgccjit
- Đã thêm chức năng gcc_jit_context_add_driver_option.
Khác
Nhiều thay đổi cụ thể về kiến trúc và hệ điều hành.
Nguồn: linux.org.ru