โปรแกรมเชื่อมโยง Mold 3.0 ได้ถูกปล่อยออกมาแล้ว และสามารถใช้แทนโปรแกรมเชื่อมโยง GNU ได้อย่างรวดเร็วและโปร่งใสยิ่งขึ้น Linux-systems โครงการนี้กำลังได้รับการพัฒนาโดย Rui Ueyama ผู้เขียนตัวเชื่อมโยง LLVM lld จุดเด่นของ Mold คือความเร็วในการเชื่อมโยงที่สูงมาก เหนือกว่าตัวเชื่อมโยง GNU gold และ LLVM lld อย่างเห็นได้ชัด (การเชื่อมโยงใน Mold ช้ากว่าการคัดลอกไฟล์ด้วยยูทิลิตี้ cp เพียงครึ่งเดียว) โค้ดเขียนด้วยภาษา Rust และเผยแพร่ภายใต้ใบอนุญาต MIT
การลดเวลาในการเชื่อมโยงไฟล์ช่วยปรับปรุงการใช้งานโปรเจกต์ขนาดใหญ่ได้อย่างมาก โดยลดเวลารอระหว่างการสร้างไฟล์ปฏิบัติการในระหว่างการดีบักและการทดสอบการเปลี่ยนแปลง แรงจูงใจในการสร้าง Mold เกิดจากความหงุดหงิดที่ต้องรอให้การเชื่อมโยงเสร็จสมบูรณ์หลังจากการเปลี่ยนแปลงโค้ดแต่ละครั้ง ประสิทธิภาพที่ต่ำของตัวเชื่อมโยงที่มีอยู่บนระบบมัลติคอร์ และความต้องการที่จะลองใช้สถาปัตยกรรมการเชื่อมโยงที่แตกต่างไปจากเดิมโดยสิ้นเชิงโดยไม่ต้องใช้โมเดลที่ซับซ้อนเกินไป เช่น การเชื่อมโยงแบบเพิ่มทีละส่วน
Mold มีประสิทธิภาพสูงในการคอมไพล์ไฟล์ปฏิบัติการจากไฟล์ออบเจ็กต์จำนวนมากที่เตรียมไว้โดยคอมไพเลอร์ โดยใช้อัลกอริธึมที่เร็วกว่า การประมวลผลแบบขนานอย่างมีประสิทธิภาพบนคอร์ CPU ที่มีอยู่ และการใช้โครงสร้างข้อมูลที่มีประสิทธิภาพมากขึ้น ตัวอย่างเช่น Mold ใช้เทคนิคในการคำนวณที่ซับซ้อนพร้อมกับการคัดลอกไฟล์ การโหลดไฟล์ออบเจ็กต์ลงในหน่วยความจำล่วงหน้า การใช้ตารางแฮชที่รวดเร็วสำหรับการแก้ไขสัญลักษณ์ การสแกนตารางการย้ายตำแหน่งในเธรดแยกต่างหาก และการลบส่วนที่ซ้ำกันที่รวมกันในไฟล์ต่างๆ
Mold 3.0 โดดเด่นตรงที่เขียนโค้ดใหม่จาก C++ (C++20) เป็น Rust Mold 3.0 สามารถใช้แทน Mold 2.42.1 ซึ่งเป็นเวอร์ชัน C++ สุดท้ายได้อย่างราบรื่น และรองรับตัวเลือกและสถาปัตยกรรมเป้าหมายทั้งหมดที่มีอยู่ก่อนหน้านี้ การเปลี่ยนมาใช้ Rust ทำให้สามารถป้องกันโครงการจากปัญหาที่อาจเกิดขึ้นเมื่อจัดการกับไฟล์อ็อบเจ็กต์ที่เสียหายได้—ในกรณีที่เวอร์ชัน C++ เกิดข้อผิดพลาดเนื่องจากการเข้าถึงเกินขอบเขต การใช้งาน Rust จะหยุดที่ขั้นตอนการตรวจสอบขอบเขต ประสิทธิภาพของการใช้งาน Rust นั้นเทียบเท่ากับเวอร์ชัน C++
นอกจากการเปลี่ยนไปใช้ Rust แล้ว เป้าหมายสำคัญในการพัฒนาเวอร์ชัน 3.0 คือการปรับปรุงความเข้ากันได้กับ GNU ld และเตรียมโครงการให้พร้อมใช้งานเป็นตัวเชื่อมโยงเริ่มต้นในระบบปฏิบัติการต่างๆ Linuxระบบสร้างโปรแกรมได้ถูกแทนที่ด้วย Cargo และระบบทดสอบได้ถูกแทนที่ด้วย cargo test แทนที่ ctest ไลบรารี oneTBB ถูกลบออกจากรายการส่วนประกอบที่จำเป็นแล้ว
ที่มา: opennet.ru
