Phát hành trình liên kết Mold 1.1, được phát triển bởi LLVM lld

Một bản phát hành của trình liên kết Mold đã được xuất bản, có thể được sử dụng như một sự thay thế minh bạch, nhanh hơn cho trình liên kết GNU trên các hệ thống Linux. Dự án được phát triển bởi tác giả của trình liên kết LLVM lld. Một tính năng chính của Mold là tốc độ liên kết các tệp đối tượng rất cao, đáng chú ý là vượt trội so với các trình liên kết GNU gold và LLVM lld (liên kết trong Mold đượ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). Mã được viết bằng C++ (C++20) và được phân phối theo giấy phép AGPLv3.

Trong phiên bản mới:

  • Đã thêm hỗ trợ tối ưu hóa ở giai đoạn liên kết (LTO, Tối ưu hóa thời gian liên kết). Tối ưu hóa LTO khác nhau ở chỗ tính đến trạng thái của tất cả các tệp liên quan đến quá trình xây dựng, trong khi các chế độ tối ưu hóa truyền thống tối ưu hóa từng tệp riêng biệt và không tính đến các điều kiện để gọi các chức năng được xác định trong các tệp khác. Trong khi trước đây, khi tìm thấy các tệp mã trung gian (IR) GCC hoặc LLVM, các trình liên kết ld.bfd hoặc ld.lld tương ứng sẽ được gọi, thì giờ đây Mold xử lý các tệp IR một cách độc lập và sử dụng API Trình cắm liên kết, cũng được sử dụng trong GNU ld và GNU chất liên kết vàng. Khi được bật, LTO chỉ nhanh hơn một chút so với các trình liên kết khác vì phần lớn thời gian được dành để thực hiện tối ưu hóa mã thay vì liên kết.
  • Đã thêm hỗ trợ cho kiến ​​trúc RISC-V (RV64) trên nền tảng máy chủ và đích.
  • Đã thêm tùy chọn “--emit-relocs” để cho phép sao chép các phần di chuyển từ tệp đầu vào sang tệp đầu ra để áp dụng tối ưu hóa tiếp theo ở giai đoạn sau liên kết.
  • Đã thêm tùy chọn “--shuffle-sections” để sắp xếp ngẫu nhiên thứ tự các phần trước khi sửa địa chỉ của chúng trong không gian địa chỉ ảo.
  • Đã thêm tùy chọn “--print-dependency” và “--print-dependency=full” để xuất thông tin ở định dạng CSV về sự phụ thuộc giữa các tệp đầu vào, ví dụ: có thể được sử dụng để phân tích lý do kết nối khi liên kết các tệp đối tượng nhất định hoặc khi thực hiện các phần phụ thuộc của công việc thu nhỏ giữa các tệp.
  • Đã thêm tùy chọn "--warn-once" và "--warn-textrel".
  • Đã xóa phần phụ thuộc vào libxxhash.

Nguồn: opennet.ru

Thêm một lời nhận xét