การเปิดตัวเกิดขึ้น Wild Linker 0.9.0 — ตัวเชื่อมโยงประสิทธิภาพสูงตัวใหม่ที่เขียนด้วยภาษา Rust เวอร์ชันนี้เผยแพร่บน GitHub แล้ว 23 พฤษภาคม 2026 ปีโครงการนี้ถูกวางตำแหน่งให้เป็นเครื่องมือเชื่อมโยงเพื่อเร่งการพัฒนาแบบวนซ้ำ: ผู้เขียนต้องการให้การเชื่อมโยงเป็นแบบเพิ่มทีละขั้นในที่สุด แม้ว่าจะยังไม่ได้นำมาใช้ในเวอร์ชันปัจจุบันก็ตาม โค้ดนี้เผยแพร่ภายใต้ใบอนุญาตแบบสองทาง Apache 2.0 / MIT.

การเปลี่ยนแปลงหลักใน Wild 0.9 คือระบบรองรับ API ปลั๊กอินตัวเชื่อมโยงซึ่งเป็นอินเทอร์เฟซที่ถูกนำมาใช้ในลิงเกอร์ Gold และยังได้รับการสนับสนุนโดย GNU ld และ Mold สำหรับ Wild แล้ว นี่เป็นการเปิดทางไปสู่ ปลั๊กอินตัวเชื่อมโยง LTO — การเพิ่มประสิทธิภาพเวลาในการเชื่อมโยงผ่านปลั๊กอินตัวเชื่อมโยง นักพัฒนาได้ระบุไว้อย่างชัดเจนว่าฟีเจอร์นี้มีประโยชน์หลักๆ สำหรับโปรเจ็กต์ที่เขียนด้วยภาษา C, C++ และภาษาผสม ในขณะที่โปรเจ็กต์ Rust บริสุทธิ์มักจะทำการเพิ่มประสิทธิภาพเวลาในการเชื่อมโยง (LTO) ภายในอยู่แล้ว การสนับสนุนฟีเจอร์นี้ยังมีปัญหาที่ทราบกันดีอยู่ และการเชื่อมโยงผ่านปลั๊กอินอาจช้า

งานส่วนสำคัญในเวอร์ชัน 0.9 เกี่ยวข้องกับการเตรียมการสำหรับการถ่ายโอน Wild ไปยังที่อื่น Linux/ELF. ตรรกะเฉพาะของ ELF ได้ถูกย้ายออกจากส่วนที่เป็นนามธรรมแล้ว และได้เริ่มดำเนินการสนับสนุนแล้ว ผู้ชาย и WebAssemblyความสามารถเหล่านี้ยังไม่พร้อมสำหรับการใช้งานจริง แต่ส่วนประกอบแรกเริ่มได้ปรากฏให้เห็นแล้ว ได้แก่ การแยกวิเคราะห์ Mach-O การประมวลผลส่วนและเซ็กเมนต์ ตารางสัญลักษณ์ ลายเซ็นรหัส ไบนารีแบบ Fat รวมถึงการสนับสนุนเบื้องต้นสำหรับส่วน wasm สัญลักษณ์ และการย้ายตำแหน่ง

การเปลี่ยนแปลงที่สำคัญใน Wild Linker 0.9:

  • รองรับปลั๊กอินลิงเกอร์ เพิ่มการรองรับ API ของปลั๊กอินลิงเกอร์ ซึ่งจำเป็นสำหรับ LTO ของปลั๊กอินลิงเกอร์ และความเข้ากันได้กับสคริปต์การสร้าง GCC/GNU ld/Mold บางส่วน นอกจากนี้ยังแก้ไขปัญหาบางอย่างที่เกี่ยวข้องกับการเรียกกลับของปลั๊กอิน รวมถึง whole-archive, ThinLTO, ข้อจำกัดของไฟล์ที่เปิดได้ และการลบโค้ดที่ไม่ได้ใช้งานระหว่าง LTO

  • การขยายการรองรับสคริปต์ลิงเกอร์ครั้งใหญ่ มีการใช้งานคำสั่ง PROVIDE และ PROVIDE_HIDDEN, การแยกวิเคราะห์และการดำเนินการ ASSERT, การรองรับคำต่อท้าย MEMORY, ORIGIN, LENGTH, LOADADDR, ALIGNOF, SEGMENT_START, K และ M ในตัวเลข, ตัวดำเนินการตรรกะ, บิตไวส์ และเอกภาค และการจับคู่ตามชื่อไฟล์อินพุต ซึ่งทำให้ Wild เข้ากันได้กับสคริปต์การเชื่อมโยงที่ซับซ้อนซึ่งมักพบในซอฟต์แวร์ระบบและโครงการระดับต่ำมากขึ้น

  • การปรับปรุงสำหรับ RISC-V, AArch64, x86-64 และ LoongArch64 เพิ่มการผ่อนปรนการเรียก RISC-V, การผ่อนปรน HI20, R_RISCV_ALIGN, การตรวจสอบส่วนขยาย ISA ที่ขัดแย้งกัน, การย้ายตำแหน่ง AArch64 เพิ่มเติม, thunk ส่วนขยายช่วงสำหรับ AArch64, การจัดการการย้ายตำแหน่ง x86-64 จำนวนหนึ่งพร้อมการผ่อนปรน และการชี้แจงช่วงและการจัดเรียงสำหรับ LoongArch64

  • ตัวเลือกความเข้ากันได้ใหม่ เพิ่มการรองรับสำหรับ --dependency-file, --auxiliary, --exclude-libs, --enable-new-dtags, --disable-new-dtags, --trace, --nmagic, --compress-debug-sections, --pack-dynamic-relocs=relr, --use-android-relr-tags และรูปแบบที่ไม่มีช่องว่าง -o/path

  • การสร้างวัตถุเคลื่อนที่แบบคงที่ เพิ่มการรองรับการสร้างไฟล์อ็อบเจ็กต์แบบคงที่ที่สามารถเคลื่อนย้ายได้ ซึ่งเป็นไฟล์อ็อบเจ็กต์ระดับกลางที่ยังคงสามารถมีส่วนร่วมในการเชื่อมโยงเพิ่มเติมได้

  • การปรับปรุงประสิทธิภาพโดยไม่เน้นการปล่อยเวอร์ชันที่ "รวดเร็ว" ผู้เขียนระบุอย่างชัดเจนว่าเวอร์ชัน 0.9 ไม่ได้มีการปรับปรุงประสิทธิภาพที่สำคัญใดๆ แต่ก็ไม่มีการลดประสิทธิภาพลงเช่นกัน การปรับปรุงเฉพาะจุด ได้แก่ เส้นทางลัดสำหรับตัวจับคู่ที่ไม่ใช่แบบทั่วโลกในสคริปต์เวอร์ชัน การลดจำนวนการดำเนินการอะตอมิก การคำนวณแบบขนานของที่อยู่ส่วนและสัญลักษณ์ระหว่างการสแกนการผ่อนคลาย และการลดการประมวลผลซ้ำของส่วนที่แก้ไขแล้ว

  • มีการแก้ไขปัญหาความเข้ากันได้หลายอย่าง แก้ไขการจัดการสัญลักษณ์ที่ไม่นิยามที่อ่อนแอ, .ctors/.dtors, RELRO, สคริปต์เวอร์ชัน, SFrame, IFUNC, --version/-v, ข้อผิดพลาดสัญลักษณ์ที่ไม่นิยาม, คำเตือน, การย้ายตำแหน่งการดีบัก, .eh_frame, SHT_SYMTAB_SHNDX, การเชื่อมโยงแบบคงที่ของออบเจ็กต์ไดนามิก และสถานการณ์ต่างๆ ที่เกี่ยวข้องกับสคริปต์ลิงเกอร์

  • การจัดทำเอกสารและการบริหารโครงการ มีการเพิ่มข้อกำหนดด้านจริยธรรม นโยบายการใช้งาน LLM เอกสารการกำกับดูแล ตารางสนับสนุนสคริปต์ลิงเกอร์ คำแนะนำสำหรับการใช้ -fuse-ld=wild กับ GCC 16.1 และการติดตั้งผ่าน Brew นอกจากนี้ คลังเก็บข้อมูลยังถูกย้ายไปยังองค์กร GitHub แยกต่างหากชื่อ wild-linker ด้วย

ในขณะนี้ ป่า โดยทางการมุ่งเน้นเป็นหลักที่ Linux และ ELF ไฟล์ README ของโครงการระบุว่ารองรับ x86-64, ARM64, RISC-V riscv64gc และการสนับสนุนเบื้องต้น ลุงอาร์ช64 บน Linuxสามารถสร้างไบนารีแบบคงที่, static-PIE, ไฟล์ปฏิบัติการที่เชื่อมโยงแบบไดนามิก และไฟล์ .so ได้ ทำงานร่วมกับข้อมูลการดีบัก, GNU jobserver และสคริปต์ลิงเกอร์บางส่วน การเชื่อมโยงแบบเพิ่มทีละส่วน, สคริปต์ลิงเกอร์ที่ซับซ้อนมากขึ้น, Mach-O และอื่นๆ Windows ปัจจุบันถูกจัดอยู่ในประเภทโอกาสที่ยังไม่ได้รับการตระหนักหรือยังไม่เสร็จสมบูรณ์

ในทางปฏิบัติ Wild 0.9 ขยายความเข้ากันได้กับระบบนิเวศการสร้างที่มีอยู่ เริ่มขยายขอบเขตไปไกลกว่า ELF และเพิ่มการสนับสนุนสำหรับสถานการณ์ที่ทำให้การใช้ลิงเกอร์ทำได้ยากในโครงการขนาดใหญ่ที่มี C/C++ และแบบผสม สำหรับนักพัฒนา Rust แล้ว Wild ยังคงน่าสนใจในฐานะฐานที่เป็นไปได้สำหรับการเชื่อมโยงแบบเพิ่มทีละน้อยในอนาคต และสำหรับนักพัฒนาระบบแล้ว Wild ก็เป็นคู่แข่งที่รวดเร็วอีกรายหนึ่งของ GNU ld, LLD และ Mold

ที่มา: linux.org.ru

ซื้อโฮสติ้งที่เชื่อถือได้สำหรับไซต์ที่มีการป้องกัน DDoS เซิร์ฟเวอร์ VPS VDS 🔥 ซื้อบริการเว็บโฮสติ้งที่เชื่อถือได้ พร้อมระบบป้องกัน DDoS และเซิร์ฟเวอร์ VPS/VDS | ProHoster