Trình liên kết Mold 3.0 đã được phát hành và có thể được sử dụng như một sự thay thế nhanh hơn, minh bạch hơn cho trình liên kết GNU. Linux- hệ thống. Dự án đang được phát triển bởi Rui Ueyama, tác giả của trình liên kết LLVM lld. Tính năng chính của Mold là tốc độ liên kết cực cao, vượt trội đáng kể so với các trình liên kết GNU gold và LLVM lld (liên kết trong Mold chỉ nhanh bằng một nửa so với việc sao chép tệp bằng tiện ích cp). Mã được viết bằng Rust và được phân phối theo giấy phép MIT.
Việc giảm thời gian liên kết giúp cải thiện đáng kể khả năng sử dụng của các dự án lớn bằng cách giảm thời gian chờ đợi trong quá trình tạo tệp thực thi khi gỡ lỗi và kiểm tra các thay đổi. Động lực để tạo ra Mold xuất phát từ sự khó chịu khi phải chờ quá trình liên kết hoàn tất sau mỗi lần thay đổi mã, hiệu suất kém của các trình liên kết hiện có trên hệ thống đa lõi, và mong muốn thử một kiến trúc liên kết hoàn toàn khác mà không cần phải sử dụng các mô hình quá phức tạp như liên kết gia tăng.
Hiệu suất cao khi biên dịch tệp thực thi từ số lượng lớn tệp đối tượng do trình biên dịch chuẩn bị trong Mold đạt được bằng cách sử dụng các thuật toán nhanh hơn, song song hóa hoạt động chủ động giữa các lõi CPU khả dụng và sử dụng các cấu trúc dữ liệu hiệu quả hơn. Ví dụ, Mold triển khai các kỹ thuật để thực hiện các phép tính chuyên sâu đồng thời với việc sao chép tệp, tải trước các tệp đối tượng vào bộ nhớ, sử dụng bảng băm nhanh khi giải quyết các ký hiệu, quét các bảng di dời trong một luồng riêng biệt và loại bỏ các phần đã hợp nhất trùng lặp trong các tệp khác nhau.
Nhánh Mold 3.0 đáng chú ý vì đã viết lại toàn bộ mã nguồn từ C++ (C++20) sang Rust. Mold 3.0 có thể được sử dụng như một sự thay thế liền mạch cho Mold 2.42.1, phiên bản C++ cuối cùng, và hỗ trợ tất cả các tùy chọn và kiến trúc mục tiêu đã có trước đó. Việc chuyển đổi sang Rust đã giúp bảo vệ dự án khỏi các sự cố tiềm ẩn khi xử lý các tệp đối tượng bị hỏng — trong trường hợp phiên bản C++ bị lỗi do truy cập ngoài phạm vi, phiên bản Rust sẽ dừng lại ở giai đoạn kiểm tra phạm vi. Hiệu suất của phiên bản Rust tương đương với phiên bản C++.
Bên cạnh việc chuyển sang sử dụng Rust, một mục tiêu quan trọng trong quá trình phát triển nhánh 3.0 là cải thiện khả năng tương thích với GNU ld và chuẩn bị dự án để được sử dụng làm trình liên kết mặc định trong các bản phân phối. LinuxHệ thống biên dịch đã được thay thế bằng Cargo, và hệ thống kiểm thử đã được thay thế bằng cargo test, thay thế cho ctest. Thư viện oneTBB đã bị loại bỏ khỏi danh sách các thư viện phụ thuộc.
Nguồn: opennet.ru
