การเปิดตัวตัวเชื่อมโยง Mold 1.1 พัฒนาโดย LLVM lld

มีการเผยแพร่ Mold linker ออกมา ซึ่งสามารถนำมาใช้ทดแทน GNU linker บนระบบ Linux ได้อย่างรวดเร็วและโปร่งใส โครงการนี้ได้รับการพัฒนาโดยผู้เขียน LLVM lld linker คุณสมบัติที่สำคัญของ Mold คือความเร็วที่สูงมากในการเชื่อมโยงไฟล์อ็อบเจ็กต์ ซึ่งเหนือกว่า GNU gold และ LLVM lld linkers อย่างเห็นได้ชัด (การลิงก์ใน Mold ดำเนินการด้วยความเร็วเพียงครึ่งเดียวของความเร็วเพียงครึ่งหนึ่งของการคัดลอกไฟล์ด้วยยูทิลิตี้ cp) รหัสเขียนด้วยภาษา C++ (C++20) และเผยแพร่ภายใต้ลิขสิทธิ์ AGPLv3

ในเวอร์ชันใหม่:

  • เพิ่มการสนับสนุนสำหรับการเพิ่มประสิทธิภาพในขั้นตอนการเชื่อมโยง (LTO, การเพิ่มประสิทธิภาพเวลาลิงก์) การปรับให้เหมาะสม LTO จะแตกต่างกันไปโดยคำนึงถึงสถานะของไฟล์ทั้งหมดที่เกี่ยวข้องกับกระบวนการสร้าง ในขณะที่โหมดการปรับให้เหมาะสมแบบดั้งเดิมจะปรับให้เหมาะสมแต่ละไฟล์แยกจากกัน และไม่คำนึงถึงเงื่อนไขสำหรับการเรียกใช้ฟังก์ชันที่กำหนดไว้ในไฟล์อื่น ก่อนหน้านี้ เมื่อพบไฟล์รหัสกลาง (IR) ของ GCC หรือ LLVM ตัวเชื่อมโยง ld.bfd หรือ ld.lld ที่เกี่ยวข้องถูกเรียก ในตอนนี้ Mold ประมวลผลไฟล์ IR อย่างเป็นอิสระ และใช้ Linker Plugin API ซึ่งใช้ใน GNU ld และ GNU เช่นกัน ลิงค์เกอร์ทองคำ เมื่อเปิดใช้งาน LTO จะเร็วกว่าตัวเชื่อมโยงอื่นเพียงเล็กน้อยเท่านั้น เนื่องจากใช้เวลาส่วนใหญ่ไปกับการปรับปรุงโค้ดให้เหมาะสมแทนที่จะทำการเชื่อมโยง
  • เพิ่มการรองรับสถาปัตยกรรม RISC-V (RV64) บนโฮสต์และแพลตฟอร์มเป้าหมาย
  • เพิ่มตัวเลือก “--emit-relocs” เพื่อเปิดใช้งานการคัดลอกส่วนการย้ายจากไฟล์อินพุตไปยังไฟล์เอาต์พุตสำหรับการประยุกต์ใช้การปรับให้เหมาะสมในภายหลังในขั้นตอนหลังการเชื่อมโยง
  • เพิ่มตัวเลือก “--shuffle-sections” เพื่อสุ่มลำดับของส่วนต่างๆ ก่อนที่จะแก้ไขที่อยู่ในพื้นที่ที่อยู่เสมือน
  • เพิ่มตัวเลือก “--print-dependencies” และ “--print-dependencies=full” เพื่อส่งออกข้อมูลในรูปแบบ CSV เกี่ยวกับการพึ่งพาระหว่างไฟล์อินพุต ซึ่งตัวอย่าง สามารถใช้วิเคราะห์เหตุผลของการเชื่อมต่อเมื่อลิงก์ไฟล์อ็อบเจ็กต์บางไฟล์ หรือเมื่อดำเนินการลดขนาดการพึ่งพาระหว่างไฟล์
  • เพิ่มตัวเลือก "--warn-once" และ "--warn-textrel"
  • ลบการพึ่งพา libxxhash แล้ว

ที่มา: opennet.ru

เพิ่มความคิดเห็น