LLVM 16.0 và nó đã được phát hành và đây là những tin tức của nó

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ó.

Chỉ sau hơn sáu tháng phát triển, sự ra mắt của phiên bản mới của dự án LLVM 16.0, phiên bản trong đó một số lượng lớn các thay đổi và cải tiến được triển khai.

Đối với những người không quen thuộc với LLVM, bạn nên biết rằng điều này là một trình biên dịch tương thích với GCC (trình biên dịch, trình tối ưu hóa và trình tạo mã) biên dịch các chương trình thành bitcode trung gian lệnh ảo giống như RISC (một máy ảo cấp thấp với hệ thống tối ưu hóa đa cấp).

Mã giả được tạo có thể được trình biên dịch JIT chuyển đổi thành các lệnh máy ngay tại thời điểm thực thi chương trình.

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

Trong phiên bản mới được trình bày này, chúng ta có thể tìm thấy một số cải tiến quan trọng trong tiếng kêu 16.0, trong đó nổi bật là tiêu chuẩn C++/ObjC++ mặc định, mà được đặt thành gnu++17 (trước đây là gnu++14), mà ngụ ý hỗ trợ các tính năng C++ 17 với phần mở rộng GNU theo mặc định. Việc sử dụng các phần tử được định nghĩa trong tiêu chuẩn C++17 được cho phép trong mã LLVM.

Một trong những thay đổi nổi bật khác là nó đã được thêm vào hỗ trợ cho CPU Cortex-A715, Cortex-X3 và Neoverse Phần mở rộng V2, Armv8.3 và các tính năng đa phiên bản cho phụ trợ AArch64.
La khả năng tương thích nền tảng Armv2, Armv2A, Armv3 và Armv3M đã ngừng hoạt động trong phần phụ trợ của kiến ​​trúc ARM, không đảm bảo việc tạo mã chính xác. Đã thêm khả năng tạo mã cho các hướng dẫn để làm việc với các số phức và thêm hỗ trợ kiến ​​trúc bộ hướng dẫn (ISA) AMX-FP16, CMPCXADD, AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT sang phụ trợ X86.

Bên cạnh đó, các yêu cầu để xây dựng LLVM đã được tăng lên, Ngoài ra, bản dựng hiện phải tương thích với tiêu chuẩn C++ 17, tức là bản dựng yêu cầu ít nhất GCC 7.1, Clang 5.0, Apple Clang 10.0 hoặc Visual Studio 2019 16.7.

Mặt khác, nó cũng làm nổi bật phần phụ trợ được cải thiện cho kiến ​​trúc MIPS, PowerPC và RISC-V, cũng như hỗ trợ gỡ lỗi các tệp thực thi 64-bit cho kiến ​​trúc LoongArch cho trình gỡ lỗi LLDB và cải thiện việc xử lý các ký hiệu gỡ lỗi COFF.

Những thay đổi khác nổi bật:

  • Trong thư viện Libc++, công việc chính tập trung vào triển khai hỗ trợ các tính năng mới của tiêu chuẩn C++20 và C++23.
  • Thời gian liên kết đã được giảm đáng kể trong trình liên kết LDD bằng cách thực hiện song song quá trình quét định vị lại địa chỉ và các hoạt động khởi tạo phần. Đã thêm hỗ trợ để nén phần bằng thuật toán ZSTD.
  • Các chức năng nâng cao được triển khai với tiêu chuẩn C++20 cũng được đánh dấu.
  • nắm bắt các liên kết có cấu trúc trong các hàm lambda.
  • Toán tử đẳng thức trong các biểu thức.
  • Khả năng không chỉ định từ khóa typename trong một số ngữ cảnh,
  • Khả năng cho phép khởi tạo được thêm vào giữa các dấu ngoặc đơn ("Aggr(val1, val2)").
  • Các chức năng đã triển khai được xác định trong tiêu chuẩn C++2b trong tương lai.
  • Hỗ trợ được cung cấp với loại char8_t,
  • Đã mở rộng phạm vi ký tự được phép sử dụng trong "\N{…}",
  • Đã thêm khả năng sử dụng các biến được khai báo là "constexpr tĩnh" trong các hàm được khai báo là constexpr.
  • Các chức năng đã triển khai được xác định trong tiêu chuẩn C2x C trong tương lai:
  • Đã thêm hỗ trợ để tải nhiều tệp cấu hình (tệp cấu hình mặc định được tải trước, sau đó đến các tệp được chỉ định qua cờ “–config=”, hiện có thể được chỉ định nhiều lần).
  • Đã thay đổi thứ tự tải của các tệp cấu hình mặc định: clang cố tải tệp trước - .cfg và nếu không tìm thấy, nó sẽ cố tải hai tệp .cfg và .cfg.
  • Đã thêm cờ xây dựng mới "-fcoro-aligned-allocation" cho phân phối căn chỉnh khung thông thường.
  • Đã thêm cờ "-fmodule-output" để kích hoạt mô hình xây dựng một pha của các mô-đun C++ tiêu chuẩn.
  • Đã thêm chế độ "-Rpass-analysis=stack-frame-layout" để chẩn đoán sự cố với bố cục khung ngăn xếp.
  • Đã thêm thuộc tính __attribute__((target_version("cpu_features"))) và mở rộng chức năng của thuộc tính __attribute__((target_clones("cpu_features1″,"cpu_features2",…))) để chọn các phiên bản cụ thể của các tính năng do CPU AArch64 cung cấp .
  • Công cụ chẩn đoán nâng cao:
  • Đã thêm cảnh báo "-Wsingle-bit-bitfield-constant-conversion" để nắm bắt sự cắt ngắn ngầm định khi gán một cho trường bit có chữ ký một bit.
  • Chẩn đoán mở rộng cho các biến constexpr chưa được khởi tạo.
  • Đã thêm các cảnh báo "-Wcast-function-type-strict" và "-Win compatible-function-pointer-types-strict" để phát hiện các sự cố tiềm ẩn khi truyền các loại chức năng.

Cuối cùng Nếu bạn muốn biết thêm về nó, bạn có thể kiểm tra các chi tiết trong liên kết theo dõi.


Để 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.