LLVM 18.1.0 ra mắt với các cải tiến hỗ trợ, phụ trợ và hơn thế nữa

Biểu trưng LLVM

LLVM là một khuôn khổ để phát triển các trình biên dịch cũng như giúp xây dựng các ngôn ngữ lập trình mới và cải thiện các ngôn ngữ hiện có.

Lễ ra mắt dự án LLVM 18.1.0 ra mắt sau sáu tháng phát triển và cải tiến các tính năng với GCC qChúng bao gồm các trình biên dịch, trình tối ưu hóa và trình tạo mã. Một sự thay đổi đáng chú ý trong phiên bản này nó là lược đồ mới để tạo số phiên bản trong dự án LLVM bắt đầu từ nhánh 18.x. Theo thông lệ của các dự án như GCC và GDB, việc sử dụng phiên bản 0 ("N.1") đã được áp dụng trong quá trình phát triển, trong khi phiên bản ổn định đầu tiên được đánh số là "N.XNUMX". Thay đổi này mang lại lợi ích bằng cách tách các bản dựng dựa trên nhánh chính khỏi các bản dựng trên nhánh phát hành cuối cùng.

Ví dụ: để chuẩn bị cho bản phát hành hiện tại (18.1.0), việc phát triển đã được thực hiện bằng cách sử dụng nhánh không ổn định của LLVM 18.0. Phiên bản ổn định đầu tiên sau đó được phát hành với số hiệu 18.1.0, đánh dấu đỉnh cao của một chu kỳ thử nghiệm và phát triển rộng rãi. Ngoài ra, kế hoạch mới này cho phép tạo thông tin liên lạc khắc phục hai tuần một lần nếu cần thiết, theo các số 18.1.1, 18.1.2, v.v.

Điều quan trọng cần lưu ý là nếu các thay đổi được thực hiện đối với nhánh hiện tại ảnh hưởng đến ABI (Giao diện nhị phân ứng dụng), thì bản cập nhật sẽ được phản ánh bằng thay đổi đối với chữ số thứ hai của phiên bản, ví dụ: 18.2.0. Điều này đảm bảo việc quản lý phiên bản nhất quán và minh bạch, mang đến cho người dùng sự rõ ràng cần thiết về tính ổn định và những sửa đổi được thực hiện trong mỗi bản phát hành.

Các tính năng mới chính của LLVM 18.1.0

Trong phiên bản mới này được trình bày về LLVM 18.1.0, trong Kiến trúc X86, cải tiến hỗ trợ cho các phần mở rộng ISA đã được triển khai. Đặc biệt, hỗ trợ đã được thêm cho các tiện ích mở rộng USER_MSR, AVX10.1-256 và AVX10.1-512. Bên cạnh đó, Loại i128 đã được hợp nhất với loại __int128 của GCC và clang, tạo điều kiện cho khả năng tương thích nhị phân cao hơn với các dự án bên ngoài như Rust.

Một điểm nổi bật khác trong LLVM 18.1.0 là dành cho RISC-V, vì một số cải tiến đã được thực hiện và bổ sung đáng kể bằng cách ổn định vàl Hỗ trợ cho các tiện ích mở rộng, cộng với các chức năng tích hợp cho tiện ích mở rộng đã được thêm vào và hỗ trợ thử nghiệm đã được triển khai để tạo mã trên các kiến ​​trúc RV32E, RV64E, ilp32e và lp64e.

Ở phần phụ trợ của kiến ​​trúc LoongArch, các chức năng tích hợp đã được thêm vào cho tiện ích mở rộng LSX (SIMD 128-bit) và LASX (SIMD 256-bit), hỗ trợ đã được thêm vào cho các hướng dẫn mới được giới thiệu trong Thông số kỹ thuật của Hướng dẫn tham khảo LoongArch 1.10 và hỗ trợ ban đầu cho việc vector hóa tự động đã được triển khai.

Trong AArch64, Hỗ trợ mở rộng cho các bộ xử lý như Cortex-A520, Cortex-A720 và Cortex-X4, và hỗ trợ đã được triển khai cho cơ chế Stack Clash Protection, cơ chế này phát hiện lỗi tràn ngăn xếp và chặn các phương thức tấn công dựa trên sự giao nhau giữa ngăn xếp và vùng heap.

Ngoài những cải tiến cụ thể này đối với phần phụ trợ của nhiều kiến ​​trúc khác nhau, những cải tiến chung đã được thực hiện đối với phần phụ trợ dành cho các kiến ​​trúc như WebAssembly, MIPS, PowerPC và AMDGPU. Khả năng của trình liên kết LLD cũng đã được mở rộng, hỗ trợ cho kiến ​​trúc RISC-V và AArch64 đã được cải thiện và các bản cập nhật đã được triển khai cho thư viện Libc++ để tuân theo các khả năng của C++20, C++23 và C tiêu chuẩn ++26.

Cuối cùng, Trình gỡ lỗi LLDB đã thêm hỗ trợ để tự động trích xuất các ký hiệu và dữ liệu nhị phân từ các máy chủ bên ngoài hỗ trợ giao thức DEBUGINFOD, do đó mở rộng khả năng gỡ lỗi trên các kiến ​​trúc khác nhau và thêm hỗ trợ cho các phần mở rộng như SME và SME2 (Phần mở rộng ma trận có thể mở rộng) và điều quan trọng cần lưu ý là các ràng buộc cho ngôn ngữ Python đã bị xóa ở một số khu vực, điều này có thể yêu cầu điều chỉnh các quy trình phát triển phụ thuộc vào các liên kết này.

Đối với các bộ phận của những cải tiến đã được triển khai trong Clang 18 bao gồm những thay đổi liên quan đến ngôn ngữ C:

  • Các cấu trúc, liên kết và mảng có thuộc tính "const" hiện được phép sử dụng làm biểu thức không đổi, tương tự như GCC.
  • Enum hiện được phản ánh trong siêu dữ liệu TBAA (Phân tích bí danh dựa trên loại) dưới dạng loại số nguyên ban đầu thay vì được coi là loại "char".
  • Đã thêm hỗ trợ cho thuộc tính "count_by", cho phép bạn chỉ định một trường trong cấu trúc có mảng linh hoạt để xác định số phần tử trong mảng linh hoạt, cải thiện hiệu quả kiểm tra tràn bộ đệm trong clang.
  • Đã triển khai hỗ trợ cho biểu thức “yêu cầu c23” để liên kết các mô-đun và hỗ trợ tiêu chuẩn C23.
  • Một tính năng thử nghiệm đã được triển khai để sử dụng các loại đối số chưa được gõ bổ sung trong các mẫu, cho phép đặc tả các giá trị dấu phẩy động, con trỏ và tham chiếu đối tượng con.
  • Đã thêm hỗ trợ thử nghiệm cho cơ chế “Suy ra điều này”, cho phép bạn sử dụng các tham số có thuộc tính “this” trong một mẫu và khám phá danh mục biểu thức mà hàm này được gọi.

Cuối cùng, nếu bạn quan tâm có thể biết thêm về nó, bạn có thể tham khảo chi tiết Trong liên kết sau đây.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: AB Internet Networks 2008 SL
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.