Rui Ueyama, by the author of the builder LLVM LLD and compiler Chibicc , introduced The first stable release of a new high-performance Linker MOLD , noticeably advanced by the speed of binding object files of the GNU GOLD and LLVM LLD lld. The project is recognized as ready for work implements and can be used as a faster transparent replacement of GNU Linker on Linux systems. From the plans to the next significant release, the MacOS platform support is ready, after which the MOLD adaptation work for Windows is started.
MOLD is written in C ++ (C ++ 20) and is distributed under the AGPLv3 license, which is compatible with GPLv3, but is not compatible with GPLv2, as it requires opening changes in the development of network services. Similar choice is explained by Desire to get financing development – the author is ready to sell the right to the code for irrigation under the permissive license, such as Mit, or provide a separate commercial license for those who are not satisfied with AGPL.
MOLD supports all the features of GNU Linker and is very high performance – the layout is performed at a speed, just twice as slower than the simple copy of the CP utility files. For example, when assembling Chrome 96 (1.89 GB code size) on the layout of executable files with Debuginfo on the 8-nuclear computer, when using GNU Gold is spent 53 seconds, LLVM LLD – 11.7 seconds, and MOLD is only 2.2 seconds (26 times faster GNU GOLD) . When laying
CLANG 13 (3.18 GB) GNU GOLD requires 64 seconds, in LLVM LLD – 5.8 seconds, and in Mold – 2.9 seconds. When laying
Firefox 89 (1.64 GB) in GNU GOLD is required 32.9 seconds, in LLVM LLD – 6.8 seconds, and in Mold – 1.4 seconds.
The reduction in layout time allows you to significantly increase the convenience of developing large projects by reducing the expectation in the process of forming executable files when debugging and testing changes. The motive for creating MOLD was irritation from the need to wait for the completion of the layout after each change in the code, as well as the low efficiency of the existing layouts on multi-core systems and the desire to test the fundamentally different architecture of the arrangement, without resorting to the excessive complicated models, such as incremental layout.