LLVM 15.0 tiba dengan penambahbaikan untuk bahagian belakang yang berbeza, sokongan yang lebih besar dan banyak lagi

LLVM 15 melaksanakan penambahbaikan sokongan

LLVM 15.0 juga termasuk beberapa kemas kini menarik untuk C/C++.

Selepas enam bulan pembangunan, Keluaran projek LLVM 15.0 diumumkan, di mana banyak perubahan besar telah dilakukan, serta sokongan tambahan untuk pemproses baharu, seni bina dan banyak lagi.

Bagi mereka yang tidak biasa dengan LLVM, anda harus tahu bahawa ini ialah pengkompil yang serasi dengan GCC (penyusun, pengoptimum dan penjana kod) yang menyusun atur cara menjadi kod bit perantaraan arahan maya seperti RISC (mesin maya peringkat rendah dengan sistem pengoptimuman berbilang peringkat).

Pseudokod yang dijana boleh ditukar oleh pengkompil JIT ke dalam arahan mesin hanya pada masa pelaksanaan program.

Ciri baru utama LLVM 15.0

Dalam versi baharu yang dibentangkan ini, diserlahkan bahawa sokongan untuk pemproses Cortex-M85, serta untuk seni bina Armv9-A, Armv9.1-A dan Armv9.2-A, sambungan Armv8.1-M PACBTI-M.

Perubahan lain yang menonjol ialah menambah bahagian belakang DirectX percubaan bahawa menyokong format DXIL (Bahasa Perantara DirectX) digunakan untuk pelorek DirectX. Bahagian belakang didayakan melalui pilihan binaan "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=DirectX".

libc++ terus melaksanakan ciri baharu daripada piawaian C++20 dan C++2b, termasuk penyiapan pelaksanaan perpustakaan "format" dan versi percubaan pustaka "julat" yang dicadangkan.

Bagi bahagian perubahan yang berkaitan dengan Clang 15.0 disebutkan bahawa menambah sokongan percubaan untuk HLSL bahasa seperti C (High-Level Shading Language), yang digunakan untuk menulis shader bermula dengan DirectX 9, serta menterjemahkan shader HLSL ke dalam format binari DXIL (DirectX Intermediate Language) DirectX 12, serta format SPIR -V yang digunakan oleh Vulkan. Pada masa hadapan, merancang untuk melaksanakan sokongan untuk format DXBC (DirectX Bytecode) digunakan dalam DirectX 9-11. Pelaksanaannya disediakan oleh Microsoft dan berdasarkan DirectX Shader Compiler, dikeluarkan pada 2017, dibina berdasarkan LLVM 3.7.

Ia juga disebut bahawa ia berterusan dengan bekerja untuk menyokong piawaian C2X dan C++23 masa hadapan. Dilaksanakan untuk bahasa C: atribut noreturn, kata kunci palsu dan benar, jenis _BitInt(N) untuk integer kedalaman bit tertentu, makro *_WIDTH, awalan u8 untuk aksara UTF-8.

Selain itu, telah dilaksanakan untuk C++: penggabungan modul, Pengasingan ABI ahli fungsi, memerintahkan permulaan dinamik pembolehubah bukan tempatan dalam modul, pengendali indeks pelbagai dimensi, auto(x), pembolehubah bukan literal, goto dan label dalam fungsi yang diisytiharkan sebagai constexpr, jujukan melarikan diri yang dibataskan, yang dinamakan aksara melarikan diri.

Untuk sistem berdasarkan seni bina x86, menambahkan bendera "-fzero-call-used-regs", yang menyediakan sifar semua daftar CPU yang digunakan dalam fungsi sebelum mengembalikan kawalan daripada fungsi. pilihan ini melindungi daripada kebocoran data fungsi dan mengurangkan bilangan blok yang sesuai untuk mencipta peranti ROP (Return Oriented Programming) dalam eksploitasi sebanyak kira-kira 20%.

Rawak lokasi memori telah dilaksanakan daripada struktur untuk kod C, yang merumitkan pengekstrakan data daripada struktur sekiranya berlaku eksploitasi kelemahan. Rawak dihidupkan dan dimatikan dengan atribut randomize_layout dan no_randomize_layout, dan memerlukan benih ditetapkan dengan bendera "-frandomize-layout-seed" atau "-frandomize-layout-seed-file" untuk memastikan binaan berulang.

Daripada perubahan yang lain yang menonjol:

  • Keupayaan yang diperluaskan berkaitan dengan sokongan OpenCL dan OpenMP. Menambah sokongan untuk sambungan OpenCL cl_khr_subgroup_rotate.
  • Bahagian belakang yang dipertingkatkan untuk seni bina x86, PowerPC dan RISC-V.
    Pemaut LLD yang dipertingkatkan dan keupayaan penyahpepijat LLDB.
  • Menambahkan bendera "-fstrict-flex-arrays=" » yang mana anda boleh mengawal had elemen tatasusunan lembut dalam struktur (Ahli Susunan Lembut, tatasusunan saiz tidak tentu pada penghujung struktur).
  • Menambahkan pilihan "-warray-parameter" untuk memberi amaran tentang fungsi mengatasi dengan pengisytiharan hujah yang tidak sepadan yang dikaitkan dengan tatasusunan panjang tetap dan berubah-ubah.
  • Keserasian yang lebih baik dengan MSVC.
  • Menambah sokongan untuk "fungsi #pragma dan "#pragma alloc_text" yang disediakan dalam MSVC.
  • Menambah sokongan untuk bendera /JMC dan /JMC yang serasi dengan MSVC.
  • Menambahkan bendera "-m[no-]rdpru" untuk mengawal penggunaan arahan RDPRU, disokong daripada pemproses AMD Zen2.
  • Menambahkan bendera "-mfunction-return=thunk-extern" untuk melindungi daripada kerentanan RETBLEED, yang berfungsi dengan menambahkan urutan arahan yang mengecualikan penyertaan mekanisme pelaksanaan spekulatif untuk lompatan tidak langsung.

Akhirnya Sekiranya anda berminat untuk mengetahui lebih lanjut mengenainya, anda boleh menyemak butiran di pautan berikut.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab untuk data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.