As a front end developer I would like to start experimenting with using LLD for a linker, especially because I could cross-compile without requiring the target’s system linker being installed.
However, currently it is not straightforward to depend on LLD, because it is not by default included in LLVM releases, and this means that it is absent from the various package managers. If users were to try my compiler, they would have to install LLVM, Clang, and LLD from source, which is a big thing for me to ask for.
What I would like to see is LLD bundled with LLVM releases by default, or at least available independently such that it could build against an already-installed LLVM.
What is the timeline for this?
I think that LLD is going to be included in the 4.0 release. At least, we’ve been cherry-picking fixes into the release branch. I’ve CC’d some others that will know the details.
Also, one thing to keep in mind is that the different platforms (ELF, COFF, and MachO) are in different states of completeness, so depending on your target platform (but not host platform!) you may have discrepancies. Anecdotally, the ELF port is most actively developed/extensively tested (builds significant fraction of all the packages in major open-source package systems, self-hosts), followed by COFF (builds Chromium, self-hosts), followed by MachO.
– Sean Silva
The test-release.sh script still doesn't have it and I believe it's
just because we never had it, but I agree we should release it this
time. It's good enough to at least be considered beta in some arches
and experimental in others.
CC'ing Hans and Tom to coordinate the script update.
Yes, please. I put up a review here: https://reviews.llvm.org/D29539
Great news! Thank you to the LLD team. I look forward to adding LLD as a
I see in that code review page that LLD is built in the test-release script. Happy to see that. Now I’m thinking about package maintainers such as Debian, and hoping that they will pick up LLD and make it available with this next release. What is different about this release that will clue Debian developers and other package managers that they should include LLD with this release? How can we communicate to package maintainers to do this?
I see in that code review page that LLD is built in the test-release
script. Happy to see that. Now I'm thinking about package maintainers such
as Debian, and hoping that they will pick up LLD and make it available with
this next release. What is different about this release that will clue
Debian developers and other package managers that they should include LLD
with this release? How can we communicate to package maintainers to do this?
Well, maybe saying something like this is enough? LLD is a linker from the
LLVM project and is getting popular because of its compatibility with GNU
linker (it's a drop-in replacement) and the performance (usually more than
2x faster than GNU gold). It's relatively new but already able to build the
entire FreeBSD base system. So it's nice to have it as a package.
Actually I think now is a good timing to start including LLD as a OS
package as it got mature enough to be used in daily basis. Our release
schedule and version number are coupled with the entire LLVM release, so it
is LLD 4.0, but if it were an independent project, we'd probably be
seriously thinking about naming it LLD 1.0 this time.
Sylvestre, are you still the Debian package manager for LLVM? Can you make an lld release as well? Doko, same for Ubuntu. If not, could you please contact the current managers?
We are now including it on 4.0 RC2. It would be good to have it at least for x86 and Aarch64, but if it’s OK to release experimental things, I’d also like to have it on ARM. Others may want for their targets as well.
Already the case with 4.0 and on apt.llvm.org