LLVM 9.0 เวอร์ชันใหม่ได้รับการเผยแพร่แล้วและนี่คือข่าว

LLVM

หลังจากหกเดือนของการพัฒนา มีการนำเสนอการเปิดตัวโครงการ LLVM 9.0 เวอร์ชันใหม่ ซึ่งเป็นชุดเครื่องมือที่เข้ากันได้กับ GCC (คอมไพเลอร์ตัวเพิ่มประสิทธิภาพและตัวสร้างโค้ด) ซึ่งรวบรวมโปรแกรมเป็นรหัสบิตกลางของคำสั่งเสมือนเสมือน RISC (เครื่องเสมือนระดับต่ำพร้อมระบบเพิ่มประสิทธิภาพหลายระดับ)

ได้รับการออกแบบมาเพื่อเพิ่มประสิทธิภาพเวลาในการรวบรวม, เวลาผูกมัด, เวลาดำเนินการในภาษาโปรแกรมใด ๆ ที่ผู้ใช้ต้องการกำหนด. เดิมใช้เพื่อคอมไพล์ C และ C ++, การออกแบบโดยไม่เชื่อเรื่องพระเจ้าภาษาของ LLVM และความสำเร็จของโครงการ ได้สร้างภาษาที่หลากหลายรวมถึง Objective-C, Fortran, Ada, Haskell, Java bytecode, Python, Ruby, ActionScript, GLSL, Clang, Rust, Gambas และอื่น ๆ

pseudocode ที่สร้างขึ้นสามารถแปลงโดยใช้คอมไพเลอร์ JIT เป็นคำสั่งของเครื่องได้โดยตรงในขณะที่ดำเนินการโปรแกรม

คุณสมบัติใหม่ที่สำคัญของ LLVM 9.0

ท่ามกลางคุณสมบัติใหม่ของ LLVM 9.0 ค้นหาการสนับสนุนเพื่อลบแท็กการพัฒนาทดลองออกจากแพลตฟอร์ม RISC-V, รองรับ C ++ สำหรับ OpenCL

อีกหนึ่งความแปลกใหม่ที่ ความโดดเด่นคือความสามารถในการแบ่งโปรแกรมออกเป็นส่วนที่โหลดแบบไดนามิก ใน LLD และการนำโครงสร้าง» asm goto »ไปใช้ในโค้ดเคอร์เนลของลินุกซ์

นอกจากนี้ยังเน้นว่า Libc ++ มาพร้อมกับการรองรับ WASI (WebAssembly System Interface) และ LLD แนะนำการสนับสนุนเบื้องต้นสำหรับการเชื่อมต่อแบบไดนามิก WebAssembly เพิ่มการใช้นิพจน์เฉพาะ GCC » asm goto »ซึ่งช่วยให้คุณสามารถเปลี่ยนจากบล็อกอินไลน์ที่ประกอบเป็นแท็กในโค้ด C ได้

คุณลักษณะนี้จำเป็นในการสร้างเคอร์เนล Linux ในโหมด» CONFIG_JUMP_LABEL = y «โดยใช้ Clang บนระบบ x86_64 เมื่อพิจารณาถึงการเปลี่ยนแปลงที่เพิ่มในเวอร์ชันก่อนหน้าตอนนี้เคอร์เนล Linux สามารถสร้างใน Clang สำหรับสถาปัตยกรรม x86_64 (ก่อนหน้านี้รองรับเฉพาะสถาปัตยกรรม arm, aarch64, ppc32, ppc64le และ mips

เพิ่มการรองรับคำแนะนำ BTI แล้ว (Branch Target Indicator) และ PAC (Pointer Authentication Code) สำหรับสถาปัตยกรรม AArch64 ปรับปรุงการสนับสนุนอย่างมีนัยสำคัญสำหรับแพลตฟอร์ม MIPS, RISC-V และ PowerPC

นอกจากนี้ โครงการ Android และ ChromeOS ได้เปลี่ยนไปใช้ Clang เพื่อสร้างเคอร์เนลแล้ว และ Google กำลังทดสอบ Clang เป็นเคอร์เนลสร้างแพลตฟอร์มหลักสำหรับระบบ Linux ที่ใช้งานอยู่

ในอนาคต ในระหว่างกระบวนการคอมไพล์เคอร์เนลจะสามารถใช้ส่วนประกอบอื่น ๆ ได้ LLVM ได้แก่ LLD, llvm-objcopy, llvm-ar, llvm-nm และ llvm-objdump

มีการเพิ่มฟังก์ชันพาร์ติชันทดลองใน LLD linker ซึ่งช่วยให้โปรแกรมสามารถแบ่งออกเป็นหลายส่วนโดยแต่ละส่วนจะอยู่ในไฟล์ ELF แยกกัน คุณลักษณะนี้ช่วยให้คุณสามารถเรียกใช้ส่วนหลักของโปรแกรมซึ่งจะโหลดส่วนประกอบที่เหลือในกระบวนการตามต้องการ (ตัวอย่างเช่นคุณสามารถเลือกโปรแกรมดู PDF ในตัวเป็นไฟล์แยกต่างหากซึ่งจะดาวน์โหลดก็ต่อเมื่อ ผู้ใช้เปิดไฟล์ PDF)

ในทางกลับกันการปรับปรุงจำนวนมากในแบ็กเอนด์ก็โดดเด่นเช่นกัน สำหรับสถาปัตยกรรม X86, AArch64, ARM, SystemZ, MIPS, AMDGPU และ PowerPC

ตัวอย่างเช่นมีการเพิ่มการสนับสนุนคำสั่ง SVE2 และ MTE (Memory Tagging Extensions) สำหรับสถาปัตยกรรม AArch64 การรองรับสถาปัตยกรรม Armv8.1-M และสถาปัตยกรรม MVE ได้ถูกเพิ่มเข้าไปในแบ็กเอนด์ ARM

ในกรณีของ AMDGPU มีการเพิ่มการรองรับสถาปัตยกรรม GFX10 (Navi) ค่าเริ่มต้นจะเปิดใช้งานเพื่อเรียกใช้ฟังก์ชันและส่งผ่าน DPP รวมที่เปิดใช้งาน (Data Primitives-Parallel)

ดีบักเกอร์ LLDB นำเสนอการเน้นสีของร่องรอยย้อนหลัง เพิ่มการสนับสนุนสำหรับ DWARF4 debug_types และ DWARF5 debug_info blocks;

โปรแกรมอรรถประโยชน์ llvm-objcopy และ llvm-strip ได้เพิ่มการรองรับไฟล์และอ็อบเจ็กต์ที่ปฏิบัติการได้ในรูปแบบ COFF

แบ็กเอนด์สำหรับสถาปัตยกรรม RISC-V มีความเสถียรซึ่งไม่ได้อยู่ในตำแหน่งทดลองอีกต่อไปและสร้างขึ้นโดยค่าเริ่มต้น รองรับการสร้างโค้ดสำหรับตัวแปรชุดคำสั่ง RV32I และ RV64I ที่มีนามสกุล MAFDC

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


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. รับผิดชอบข้อมูล: AB Internet Networks 2008 SL
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา