Rui Ueyama, tác giả của trình liên kết LLVM lld và trình biên dịch chibicc, đã phát hành phiên bản ổn định đầu tiên của trình liên kết hiệu năng cao mới, Mold, vượt trội hơn đáng kể so với các trình liên kết GNU gold và LLVM lld về tốc độ liên kết tập tin đối tượng. Dự án được coi là sẵn sàng để triển khai trong môi trường sản xuất và có thể được sử dụng như một giải pháp thay thế nhanh hơn, minh bạch hơn cho trình liên kết GNU. Linux- hệ thống. Kế hoạch cho bản phát hành lớn tiếp theo bao gồm việc hoàn thiện hỗ trợ nền tảng. macOSSau đó, công việc cải tạo Mold sẽ bắt đầu. Windows.
Mold được viết bằng C++ (C++20) và được cấp phép theo AGPLv3, tương thích với GPLv3, nhưng không tương thích với GPLv2, vì nó yêu cầu những thay đổi mở khi phát triển dịch vụ mạng. Lựa chọn này được giải thích là do mong muốn có được nguồn tài trợ phát triển - tác giả sẵn sàng bán quyền đối với mã để cấp lại theo giấy phép cho phép, chẳng hạn như MIT, hoặc cung cấp giấy phép thương mại riêng cho những người không hài lòng với AGPL.
Mold hỗ trợ tất cả các tính năng của trình liên kết GNU và có hiệu suất rất cao - liên kết được thực hiện với tốc độ chỉ nhanh bằng một nửa tốc độ sao chép tệp đơn giản bằng tiện ích cp. Ví dụ: khi xây dựng Chrome 96 (kích thước mã 1.89 GB), phải mất 8 giây để liên kết các tệp thực thi với debuginfo trên máy tính 53 nhân sử dụng GNU gold, LLVM lld - 11.7 giây và Mold chỉ 2.2 giây (nhanh hơn 26 lần so với GNU vàng) . Khi liên kết Clang 13 (3.18 GB), phải mất 64 giây ở GNU gold, 5.8 giây ở LLVM lld và 2.9 giây ở Mold. Khi xây dựng Firefox 89 (1.64 GB), phải mất 32.9 giây trong GNU gold, 6.8 giây trong LLVM lld và 1.4 giây trong Mold.

Giảm thời gian xây dựng có thể cải thiện đáng kể sự thuận tiện khi phát triển 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 là sự thất vọng khi phải chờ 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 khác về cơ bản mà không cần dùng đến các mô hình quá phức tạp như như liên kết gia tăng.
Hiệu suất cao khi liên kết tệp thực thi từ một số lượng lớn tệp đối tượng được trình biên dịch chuẩn bị trong Mold đạt được bằng cách sử dụng thuật toán nhanh hơn, hoạt động song song chủ động giữa các lõi CPU có sẵn và sử dụng 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 trong khi sao chép tệp, tải trước tệp đối tượng vào bộ nhớ, sử dụng bảng băm nhanh để phân giải ký tự, quét các bảng định vị lại trong một luồng riêng biệt và sao chép các phần đã hợp nhất được lặp lại trên các tệp khác nhau.
Nguồn: opennet.ru
