Versi baru LLVM 9.0 telah dirilis dan ini adalah beritanya

LLVM

Setelah enam bulan pembangunan peluncuran versi baru dari proyek LLVM 9.0 disajikan, yang merupakan toolkit yang kompatibel dengan GCC (kompiler, pengoptimal, dan pembuat kode), yang mengkompilasi program menjadi kode bit perantara dari instruksi virtual mirip RISC (mesin virtual tingkat rendah dengan sistem pengoptimalan multi-level).

Ini dirancang untuk mengoptimalkan waktu kompilasi, waktu pengikatan, waktu eksekusi dalam bahasa pemrograman apa pun yang ingin ditentukan pengguna. Awalnya diimplementasikan untuk mengkompilasi C dan C ++, Desain agnostik bahasa LLVM, dan kesuksesan proyek telah melahirkan berbagai macam bahasa, termasuk Objective-C, Fortran, Ada, Haskell, Java bytecode, Python, Ruby, ActionScript, GLSL, Clang, Rust, Gambas, dan lainnya.

Pseudocode yang dihasilkan dapat diubah menggunakan kompiler JIT menjadi instruksi mesin secara langsung pada saat eksekusi program.

Fitur baru utama dari LLVM 9.0

Di antara fitur-fitur baru LLVM 9.0 temukan dukungan untuk menghapus tag pengembangan eksperimental dari platform RISC-V, Dukungan C ++ untuk OpenCL.

Hal baru lainnya itu menonjol adalah kemampuan untuk membagi program menjadi bagian-bagian yang dimuat secara dinamis di LLD dan implementasi konstruksi »asm goto» yang digunakan dalam kode kernel Linux.

Selain itu, disoroti juga bahwa Libc ++ hadir dengan dukungan untuk WASI (WebAssembly System Interface), dan LLD memperkenalkan dukungan awal untuk pengikatan dinamis WebAssembly. Menambahkan penerapan ekspresi khusus GCC »asm goto», yang memungkinkan Anda beralih dari kumpulan sebaris yang dirakit ke tag dalam kode C.

Fitur ini diperlukan untuk membangun kernel Linux dalam mode »CONFIG_JUMP_LABEL = y« menggunakan Clang pada sistem x86_64. Mempertimbangkan perubahan yang ditambahkan pada versi sebelumnya, kernel Linux sekarang dapat dibangun di Clang untuk arsitektur x86_64 (sebelumnya, hanya didukung untuk arsitektur arm, aarch64, ppc32, ppc64le dan mips.

Dukungan untuk instruksi BTI telah ditambahkan (Branch Target Indicator) dan PAC (Pointer Authentication Code) untuk arsitektur AArch64. Dukungan yang ditingkatkan secara signifikan untuk platform MIPS, RISC-V, dan PowerPC.

Selain itu, Proyek Android dan ChromeOS telah beralih menggunakan Clang untuk membangun kernel dan Google sedang menguji Clang sebagai kernel platform build utama untuk sistem Linux yang sedang berjalan.

Di masa depan, selama proses kompilasi kernel, dimungkinkan untuk menggunakan komponen lain LLVM, termasuk LLD, llvm-objcopy, llvm-ar, llvm-nm, dan llvm-objdump.

Fungsi partisi eksperimental telah ditambahkan ke LLD linker, yang memungkinkan program dibagi menjadi beberapa bagian, yang masing-masing ditempatkan dalam file ELF terpisah. Fitur ini memungkinkan Anda untuk menjalankan bagian utama program, yang, jika diperlukan, akan memuat komponen yang tersisa dalam proses (misalnya, Anda dapat memilih penampil PDF bawaan sebagai file terpisah, yang akan diunduh hanya jika pengguna membuka file PDF).

Di sisi lain, banyak peningkatan di backend juga menonjol. untuk arsitektur X86, AArch64, ARM, SystemZ, MIPS, AMDGPU, dan PowerPC.

Misalnya, dukungan untuk instruksi SVE2 dan MTE (Memory Tagging Extensions) telah ditambahkan untuk arsitektur AArch64, dukungan untuk arsitektur Armv8.1-M, ​​dan arsitektur MVE telah ditambahkan ke backend ARM.

Dalam kasus AMDGPU, dukungan untuk arsitektur GFX10 telah ditambahkan (Navi), defaultnya diaktifkan untuk memanggil suatu fungsi dan meneruskan DPP gabungan yang diaktifkan (Data Primitives-Parallel).

Debugger LLDB memperkenalkan penyorotan warna jejak mundur; menambahkan dukungan untuk DWARF4 debug_types dan DWARF5 debug_info block;

Utilitas llvm-objcopy dan llvm-strip telah menambahkan dukungan untuk file dan objek berformat COFF.

Backend untuk arsitektur RISC-V distabilkan, yang tidak lagi diposisikan sebagai eksperimental dan dibuat secara default. Dukungan penuh untuk pembuatan kode varian set instruksi RV32I dan RV64I dengan ekstensi MAFDC.

sumber: http://releases.llvm.org/


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Bertanggung jawab atas data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.