<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Dec 16, 2016 at 10:45 AM, Renato Golin <span dir="ltr"><<a href="mailto:renato.golin@linaro.org" target="_blank">renato.golin@linaro.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 16 December 2016 at 18:15, Rui Ueyama via llvm-dev<br>
<span class="gmail-"><<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br>
> So, correct me if I'm wrong, but I don't see no serious conflicts here. The<br>
> conflict I saw in the thread is I believe superficial, and I strongly<br>
> believe that it could have been addressed calmly and nicely if we have used<br>
> more words to explain thoughts instead of small number of strong words.<br>
<br>
</span>Hi Rui,<br>
<br>
Thank you for your comments. I agree with your views that the issue<br>
was much more about communication than technical. It's how things are<br>
said, rather that what is said, and we should put that aside.<br>
<br>
On the technical side, I agree that the project needs a solid base<br>
before fancy new features get incorporated, but I also believe that<br>
parallel development, even on trunk, can happen as it does in LLVM<br>
(see GlobalISel, pass managers, register allocators, back-ends).<br>
<br>
I'm very happy that LLD works well on AArch64, bootstrapping Clang and<br>
passing the test-suite. We aim to reach the same objective next year<br>
on ARM, and go beyond. I'm also happy that the FreeBSD community is<br>
looking at it with serious eyes and trying to make it the default<br>
linker on x86_64.<br>
<br>
In the interest of collaboration, I think we should set some goals for<br>
the project in general, getting feedback from the community that works<br>
in it and the stakeholders, at least until we reach production quality<br>
in one architecture. From my point of view, having LLD as the default<br>
linker for FreeBSD/ELF/x86_64 is a strong indication that it "works<br>
well in a large range of situations". I'd happily call that stage<br>
"Production Beta". But that's not all. We need other architectures<br>
(AArch64 and ARM will probably come next), as well as different object<br>
formats (COFF, MachO) to be able to call it "Production Stable".<br>
<br>
However, my humble opinion is that we don't need to be in "Production<br>
Stable" to start adding new features, especially when that means a<br>
larger portion of the LLVM ecosystem will begin to contribute more to<br>
the project. Those new features can stay disabled by default and be<br>
isolated from the main code, like we do in LLVM. Yes, that will mean<br>
more work for all of us. Yes, that will mean longer test cycles, more<br>
test configurations. But that will also mean more people working on<br>
it, validating in ways you didn't even know it was possible. That<br>
value is worth the extra trouble, IMVHO, and LLVM's success is living<br>
proof of that.<br></blockquote><div><br></div><div>Currently, as you know, we are working on as-needed basis. There are people working on AArch64, MIPS, FreeBSD, performance optimization, code maintainability, better error reporting, etc. We opened many fronts already because people wish to work on these fronts, so there should be nothing prevents us from adding one or two more.</div><div><br></div><div>It may be good to compile a wishlist about a linker to collect feature ideas people wish to use. I honestly know only one major request: embedding a linker to a program. I guess that this single feature satisfies a majority of needs as per 80:20 rule, but I really want to know what people wish to have.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
LLD may be a separate project, and a young one full of energy, but it<br>
is also an "LLVM Project". As such, it's bound to the same level of<br>
design goals that all LLVM projects share. Not all share all values,<br>
but two that we share amongst all projects is collaboration and<br>
modularisation. Those values reflect our multiple ranges of users and<br>
developers as well as the need to re-use code above raw performance.<br></blockquote><div><br></div><div>I agree with a fine print that I wish people working on LLVM and clang aware that best practices in compilers may not be directly transferable to linkers. Linkers and compilers are different kinds of programs. They are not that different than, say, clang and llvm-objdump, but the two are still different for sane reasons. In terms of size, LLD will never become as large as LLVM or Clang and will stay one or two orders of magnitude smaller than them. Naturally a lot of things can be different. Therefore, "because we do that in LLVM or clang" is not that convincing unless it also mention that it also makes sense in the linker's context. (Renato, I know you are not saying that.)</div><div><br></div><div>We already owe a lot to the main LLVM project. The reason why LLD is small and easy to maintain is partly because it uses libObject, libSupport, ADT and libLTO (and in that sense it's already modularized into small pieces). The first thing that comes up to my mind with regard to pushing LLD forward as an LLVM project is to move more code to LLVM libraries so that we can make LLD smaller. What do you think?</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
As was said in this list, Clang is not faster than GCC for a long<br>
time, even though it was one of the shiny distinctions. The faster the<br>
code we produce, the slower the compiler runs. It's an obvious<br>
relationship, and one that will (hopefully) happen with the linker if<br>
it has any expectation of being used by the whole community, not just<br>
the limited number of developers today.<br>
<br>
cheers,<br>
--renato<br>
</blockquote></div><br></div></div>