LLVM 18.1.0 มาพร้อมกับการปรับปรุงการรองรับ แบ็กเอนด์ และอื่นๆ อีกมากมาย

โลโก้ LLVM

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

การเปิดตัวโครงการ LLVM 18.1.0 มาถึงหลังจากหกเดือนของการพัฒนาและมีการปรับปรุงด้วย GCC qครอบคลุมถึงคอมไพเลอร์ เครื่องมือเพิ่มประสิทธิภาพ และเครื่องสร้างโค้ด การเปลี่ยนแปลงที่เห็นได้ชัดเจน ในเวอร์ชั่นนี้ก็คือ รูปแบบใหม่เพื่อสร้างหมายเลขเวอร์ชันในโครงการ LLVM โดยเริ่มจากสาขา 18.x ตามแนวทางปฏิบัติของโครงการต่างๆ เช่น GCC และ GDB การใช้เวอร์ชันศูนย์ ("N.0") ได้ถูกนำมาใช้ในระหว่างการพัฒนา ในขณะที่เวอร์ชันเสถียรรุ่นแรกจะมีหมายเลข "N.1" การเปลี่ยนแปลงนี้ให้ประโยชน์โดยการแยกรุ่นตามสาขาหลักจากรุ่นในรุ่นสุดท้าย

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

สิ่งสำคัญคือต้องทราบว่าหากมีการเปลี่ยนแปลงในสาขาปัจจุบันที่ส่งผลต่อ ABI (Application Binary Interface) การอัพเดตจะมีผลกับการเปลี่ยนแปลงหลักที่สองของเวอร์ชัน เช่น 18.2.0 ช่วยให้มั่นใจได้ถึงการจัดการเวอร์ชันที่สม่ำเสมอและโปร่งใส ทำให้ผู้ใช้ได้รับความชัดเจนที่จำเป็นเกี่ยวกับความเสถียรและการแก้ไขที่เกิดขึ้นในแต่ละรีลีส

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

ในเวอร์ชันใหม่นี้ที่นำเสนอของ LLVM 18.1.0 ใน สถาปัตยกรรม X86 มีการปรับปรุงการรองรับส่วนขยาย ISA. โดยเฉพาะอย่างยิ่ง มีการเพิ่มการรองรับสำหรับส่วนขยาย USER_MSR, AVX10.1-256 และ AVX10.1-512 นอกจาก, ประเภท i128 ได้รับการรวมเป็นหนึ่งเดียวกับประเภท __int128 ของ GCC และเสียงดังกราว ซึ่งอำนวยความสะดวกในความเข้ากันได้แบบไบนารีมากขึ้นกับโปรเจ็กต์ภายนอกเช่น Rust

จุดเด่นอีกประการหนึ่งใน LLVM 18.1.0 คือสำหรับ RISC-V เนื่องจากมีการปรับปรุงหลายประการ และการเพิ่มเติมที่สำคัญโดยการรักษาเสถียรภาพและl รองรับส่วนขยาย รวมถึงมีการเพิ่มฟังก์ชันในตัวสำหรับส่วนขยายแล้ว และมีการใช้การสนับสนุนการทดลองสำหรับการสร้างโค้ดบนสถาปัตยกรรม RV32E, RV64E, ilp32e และ lp64e

ที่ด้านหลังของสถาปัตยกรรม LoongArch มีการเพิ่มฟังก์ชันในตัวสำหรับส่วนขยาย LSX (SIMD 128 บิต) และ LASX (256-บิต SIMD) ได้เพิ่มการรองรับสำหรับคำแนะนำใหม่ที่นำมาใช้ในข้อกำหนด LoongArch Reference Manual 1.10 และมีการใช้การสนับสนุนเบื้องต้นสำหรับ vectorization อัตโนมัติแล้ว

ใน AArch64 ขยายการรองรับโปรเซสเซอร์เช่น Cortex-A520, Cortex-A720 และ Cortex-X4 และมีการรองรับกลไก Stack Clash Protection ซึ่งตรวจจับการโอเวอร์โฟลว์ของสแต็กและบล็อกวิธีการโจมตีตามจุดตัดของสแต็กและฮีป

นอกเหนือจากการปรับปรุงเฉพาะเหล่านี้กับแบ็กเอนด์ของสถาปัตยกรรมต่างๆ แล้ว ยังมีการปรับปรุงทั่วไปกับแบ็กเอนด์สำหรับสถาปัตยกรรม เช่น WebAssembly, MIPS, PowerPC และ AMDGPU ความสามารถของตัวเชื่อมโยง LLD ยังได้รับการขยาย การรองรับสถาปัตยกรรม RISC-V และ AArch64 ได้รับการปรับปรุง และมีการใช้งานการอัปเดตในไลบรารี Libc++ เพื่อติดตามความสามารถของ C++20, C++23 และ C มาตรฐาน ++26.

ในที่สุด ดีบักเกอร์ LLDB ได้เพิ่มการสนับสนุนสำหรับการแยกสัญลักษณ์และข้อมูลไบนารีจากเซิร์ฟเวอร์ภายนอกโดยอัตโนมัติ ที่รองรับโปรโตคอล DEBUGINFOD จึงขยายความสามารถในการดีบักบนสถาปัตยกรรมที่แตกต่างกันและเพิ่มการรองรับส่วนขยายเช่น SME และ SME2 (Scalable Matrix Extension) และสิ่งสำคัญที่ควรทราบคือการเชื่อมโยงสำหรับภาษา Python ได้ถูกลบออกในบางพื้นที่ซึ่งอาจ จำเป็นต้องมีการปรับเปลี่ยนกระบวนการพัฒนาที่ขึ้นอยู่กับลิงค์เหล่านี้

สำหรับส่วนของ การปรับปรุงที่นำมาใช้ใน Clang 18 รวมถึงการเปลี่ยนแปลงที่เกี่ยวข้องกับภาษา C:

  • โครงสร้าง สหภาพ และอาร์เรย์ที่มีแอตทริบิวต์ "const" ได้รับอนุญาตให้ใช้เป็นนิพจน์คงที่ได้ ตามการเปรียบเทียบกับ GCC
  • ตอนนี้ Enums สะท้อนให้เห็นในข้อมูลเมตา TBAA (Type-Based Alias ​​​​Analysis) เป็นประเภทจำนวนเต็มดั้งเดิม แทนที่จะถือว่าเป็นประเภท "char"
  • เพิ่มการรองรับแอตทริบิวต์ "counted_by" ซึ่งช่วยให้คุณระบุฟิลด์ในโครงสร้างด้วยอาร์เรย์ที่ยืดหยุ่นเพื่อกำหนดจำนวนองค์ประกอบในอาร์เรย์ที่ยืดหยุ่น ปรับปรุงประสิทธิภาพของการตรวจสอบบัฟเฟอร์ล้นในเสียงดังกราว
  • ดำเนินการรองรับนิพจน์ “requires c23” เพื่อลิงก์โมดูลและรองรับมาตรฐาน C23
  • คุณลักษณะทดลองถูกนำมาใช้เพื่อใช้อาร์กิวเมนต์ที่ไม่ได้พิมพ์ประเภทเพิ่มเติมในเทมเพลต ทำให้สามารถระบุค่าจุดทศนิยม ตัวชี้ และการอ้างอิงวัตถุย่อยได้
  • เพิ่มการสนับสนุนการทดลองสำหรับกลไก "การหักล้างสิ่งนี้" ซึ่งช่วยให้คุณใช้พารามิเตอร์ที่มีแอตทริบิวต์ "นี้" ในเทมเพลตและค้นหาหมวดหมู่ของนิพจน์ที่มีการเรียกใช้ฟังก์ชันนี้

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


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

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

*

*

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