LLVM 16.0 และเปิดตัวแล้ว และนี่คือข่าวของมัน

โลโก้ LLVM

LLVM เป็นเฟรมเวิร์กสำหรับการพัฒนาคอมไพเลอร์รวมถึงช่วยสร้างภาษาโปรแกรมใหม่และปรับปรุงภาษาที่มีอยู่

หลังจากการพัฒนาเพียงหกเดือน การเปิดตัว เวอร์ชันใหม่ของโครงการ LLVM 16.0เวอร์ชันที่มีการดำเนินการเปลี่ยนแปลงและปรับปรุงจำนวนมาก

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

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

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

ในเวอร์ชันใหม่ที่นำเสนอนี้ เราสามารถพบการปรับปรุงที่สำคัญหลายประการ ในเสียงดังกราว 16.0 ซึ่งมาตรฐาน C++/ObjC++ ที่เป็นค่าดีฟอลต์โดดเด่นกว่า ซึ่ง ถูกตั้งค่าเป็น gnu++17 (เดิมคือ gnu++14) ซึ่ง หมายถึงการรองรับฟีเจอร์ C++17 พร้อมส่วนขยาย GNU ตามค่าเริ่มต้น. อนุญาตให้ใช้องค์ประกอบที่กำหนดในมาตรฐาน C++17 ในรหัส LLVM

การเปลี่ยนแปลงที่โดดเด่นอีกอย่างคือมันถูกเพิ่มเข้ามา รองรับซีพียู Cortex-A715, Cortex-X3 และ Neoverse ส่วนขยาย V2, Armv8.3 และฟีเจอร์หลายเวอร์ชันสำหรับแบ็กเอนด์ AArch64
La ความเข้ากันได้ของแพลตฟอร์ม Armv2, Armv2A, Armv3 และ Armv3M ถูกยกเลิกแล้ว ในแบ็กเอนด์สถาปัตยกรรม ARM ซึ่งไม่รับประกันการสร้างรหัสที่ถูกต้อง เพิ่มความสามารถในการสร้างรหัสสำหรับคำแนะนำในการทำงานกับจำนวนเชิงซ้อนและเพิ่ม รองรับสถาปัตยกรรม ของชุดคำสั่ง (ISA) AMX-FP16, CMPCXADD, AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT เป็นแบ็กเอนด์ X86

นอกเหนือจากนั้น, ข้อกำหนดสำหรับการสร้าง LLVM ได้เพิ่มขึ้น นอกจากนี้ บิลด์ควรเข้ากันได้กับมาตรฐาน C++17 เช่น บิลด์ต้องการอย่างน้อย GCC 7.1, Clang 5.0, Apple Clang 10.0 หรือ Visual Studio 2019 16.7

อีกด้านก็ยังเน้น แบ็กเอนด์ที่ได้รับการปรับปรุงสำหรับสถาปัตยกรรม MIPS, PowerPC และ RISC-Vเช่นเดียวกับการสนับสนุนการดีบักไฟล์ปฏิบัติการ 64 บิตสำหรับสถาปัตยกรรม LoongArch ไปจนถึงดีบักเกอร์ LLDB และการจัดการสัญลักษณ์การดีบัก COFF ที่ได้รับการปรับปรุง

จากการเปลี่ยนแปลงอื่น ๆ ที่โดดเด่น:

  • ในไลบรารี Libc++ งานหลักมุ่งเน้นไปที่การรองรับคุณสมบัติใหม่ของมาตรฐาน C++20 และ C++23
  • เวลาในการเชื่อมโยงลดลงอย่างมากในตัวเชื่อมโยง LDD โดยการทำให้การสแกนการย้ายตำแหน่งที่อยู่ขนานกันและการดำเนินการเริ่มต้นส่วน เพิ่มการรองรับการบีบอัดส่วนโดยใช้อัลกอริทึม ZSTD
  • ฟังก์ชันขั้นสูงที่ใช้กับมาตรฐาน C++20 ก็เน้นเช่นกัน
  • จับลิงก์ที่มีโครงสร้างในฟังก์ชันแลมบ์ดา
  • ตัวดำเนินการความเท่าเทียมกันภายในนิพจน์
  • ความสามารถในการไม่ระบุคีย์เวิร์ด typename ในบางบริบท
  • เพิ่มความสามารถในการเริ่มต้นระหว่างวงเล็บ ("Aggr(val1, val2)")
  • ฟังก์ชันการใช้งานที่กำหนดไว้ในมาตรฐาน C++2b ในอนาคต
  • รองรับประเภท char8_t
  • ขยายช่วงของอักขระที่อนุญาตให้ใช้ใน "\N{…}",
  • เพิ่มความสามารถในการใช้ตัวแปรที่ประกาศเป็น "static constexpr" ในฟังก์ชันที่ประกาศเป็น constexpr
  • ฟังก์ชั่นการใช้งานที่กำหนดไว้ในมาตรฐาน C2x C ในอนาคต:
  • เพิ่มการรองรับสำหรับการโหลดไฟล์การกำหนดค่าหลายไฟล์ (ไฟล์การกำหนดค่าเริ่มต้นจะถูกโหลดก่อน จากนั้นไฟล์ที่ระบุผ่านแฟล็ก “–config=” ซึ่งขณะนี้สามารถระบุได้หลายครั้ง)
  • เปลี่ยนลำดับการโหลดของไฟล์กำหนดค่าเริ่มต้น: เสียงดังกราวพยายามโหลดไฟล์ก่อน - .cfg และหากหาไม่พบก็จะพยายามโหลดสองไฟล์ .cfg และ .cfg
  • เพิ่มแฟล็กการสร้างใหม่ "-fcoro-aligned-allocation" สำหรับการกระจายการจัดแนวเฟรมแบบรูทีน
  • เพิ่มแฟล็ก "-fmodule-output" เพื่อเปิดใช้งานโมเดลการสร้างเฟสเดียวของโมดูล C++ มาตรฐาน
  • เพิ่มโหมด "-Rpass-analysis=stack-frame-layout" เพื่อวินิจฉัยปัญหาเกี่ยวกับเค้าโครงเฟรมสแต็ก
  • เพิ่มแอตทริบิวต์ __attribute__((target_version("cpu_features"))) ใหม่และขยายการทำงานของแอตทริบิวต์ __attribute__((target_clones("cpu_features1″,"cpu_features2",...))) เพื่อเลือกเวอร์ชันเฉพาะของคุณลักษณะที่มีให้โดย CPU AArch64 .
  • เครื่องมือวินิจฉัยขั้นสูง:
  • เพิ่มคำเตือน "-Wsingle-bit-bitfield-constant-conversion" เพื่อจับการตัดทอนโดยปริยายเมื่อกำหนดหนึ่งบิตให้กับบิตฟิลด์ที่มีลายเซ็นหนึ่งบิต
  • การวินิจฉัยเพิ่มเติมสำหรับตัวแปร constexpr ที่ไม่ได้กำหนดค่าเริ่มต้น
  • เพิ่มคำเตือน "-Wcast-function-type-strict" และ "-Wincompatible-function-pointer-types-strict" เพื่อตรวจจับปัญหาที่อาจเกิดขึ้นเมื่อส่งประเภทฟังก์ชัน

ในที่สุด หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติม คุณสามารถตรวจสอบรายละเอียดในไฟล์ ลิงค์ต่อไปนี้


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

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

*

*

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