Phiên bản mới của LLVM 9.0 đã được phát hành và đây là những tin tức về nó

LLVM

Sau 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 9.0 đã được trình bày, là bộ công cụ 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ã), mà biên dịch các chương trình thành một mã bit trung gian của các 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 nhiều cấp).

Nó được thiết kế để tối ưu hóa thời gian biên dịch, thời gian ràng buộc, thời gian thực thi bằng bất kỳ ngôn ngữ lập trình nào mà người dùng muốn xác định. Ban đầu được triển khai để biên dịch C và C ++, Thiết kế bất khả tri ngôn ngữ của LLVM và thành công của dự án đã sinh ra nhiều loại ngôn ngữ, bao gồm Objective-C, Fortran, Ada, Haskell, Java bytecode, Python, Ruby, ActionScript, GLSL, Clang, Rust, Gambas và những thứ khác.

Mã giả được tạo có thể được chuyển đổi bằng cách sử dụng trình biên dịch JIT thành các lệnh máy trực tiếp tại thời điểm thực hiện chương trình.

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

Trong số các tính năng mới của LLVM 9.0 tìm hỗ trợ để xóa thẻ phát triển thử nghiệm khỏi nền tảng RISC-V, Hỗ trợ C ++ cho OpenCL.

Một điểm mới lạ khác nổi bật là khả năng chia chương trình thành các phần được tải động trong LLD và việc triển khai cấu trúc »asm goto» được sử dụng trong mã nhân Linux.

Ngoài ra, nó cũng được nhấn mạnh rằng Libc ++ đã hỗ trợ cho WASI (Giao diện hệ thống WebAssembly) và LLD đã giới thiệu hỗ trợ ban đầu cho liên kết động WebAssembly. Đã thêm triển khai biểu thức dành riêng cho GCC »asm goto», cho phép bạn chuyển từ một khối nội tuyến đã lắp ráp sang một thẻ trong mã C.

Tính năng này là cần thiết để xây dựng nhân Linux ở chế độ »CONFIG_JUMP_LABEL = y« sử dụng Clang trên hệ thống x86_64. Xem xét những thay đổi được thêm vào trong các phiên bản trước, hạt nhân Linux hiện có thể được xây dựng trong Clang cho kiến ​​trúc x86_64 (trước đây, nó chỉ được hỗ trợ cho các kiến ​​trúc arm, aarch64, ppc32, ppc64le và mips).

Hỗ trợ cho các hướng dẫn BTI đã được thêm vào (Chỉ báo mục tiêu nhánh) và PAC (Mã xác thực con trỏ) cho kiến ​​trúc AArch64. Cải thiện đáng kể hỗ trợ cho các nền tảng MIPS, RISC-V và PowerPC.

Bên cạnh đó, Các dự án Android và ChromeOS đã chuyển sang sử dụng Clang để xây dựng hạt nhân và Google đang thử nghiệm Clang làm hạt nhân nền tảng xây dựng chính cho các hệ thống Linux đang chạy của mình.

Trong tương lai, trong quá trình biên dịch hạt nhân, có thể sử dụng các thành phần khác LLVM, bao gồm LLD, llvm-objcopy, llvm-ar, llvm-nm và llvm-objdump.

Một chức năng phân vùng thử nghiệm đã được thêm vào trình liên kết LLD, cho phép một chương trình được chia thành nhiều phần, mỗi phần được đặt trong một tệp ELF riêng biệt. Tính năng này cho phép bạn chạy phần chính của chương trình, khi cần, sẽ tải các thành phần còn lại trong quá trình (ví dụ: bạn có thể chọn trình xem PDF tích hợp sẵn làm tệp riêng biệt, tệp này sẽ chỉ được tải xuống khi người dùng mở tệp PDF).

Mặt khác, nhiều cải tiến trong phần phụ trợ cũng nổi bật. cho các kiến ​​trúc X86, AArch64, ARM, SystemZ, MIPS, AMDGPU và PowerPC.

Ví dụ: hỗ trợ cho các lệnh SVE2 và MTE (Phần mở rộng gắn thẻ bộ nhớ) đã được thêm vào kiến ​​trúc AArch64, hỗ trợ cho kiến ​​trúc Armv8.1-M và kiến ​​trúc MVE đã được thêm vào phần phụ trợ ARM.

Trong trường hợp AMDGPU, hỗ trợ cho kiến ​​trúc GFX10 đã được thêm vào (Navi), mặc định được bật để gọi một hàm và chuyển DPP kết hợp đã được kích hoạt (Nguyên thủy dữ liệu-Song song).

Trình gỡ lỗi LLDB đã giới thiệu tô sáng màu của các dấu vết trở lại; hỗ trợ thêm cho các khối gỡ lỗi DWARF4 và DWARF5 debug_info khối;

Các tiện ích llvm-objcopy và llvm-strip đã hỗ trợ thêm cho các tệp và đối tượng thực thi định dạng COFF.

Phần hỗ trợ cho kiến ​​trúc RISC-V được ổn định, không còn được định vị là thử nghiệm và được tạo theo mặc định. Hỗ trợ đầy đủ cho việc tạo mã cho các biến thể tập lệnh RV32I và RV64I với phần mở rộng MAFDC.

Fuente: http://releases.llvm.org/


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