<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Nov 7, 2013 at 4:10 AM, David Chisnall <span dir="ltr"><<a href="mailto:David.Chisnall@cl.cam.ac.uk" target="_blank">David.Chisnall@cl.cam.ac.uk</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im"><br></div><div class="im">
<br>
</div>I don't think GCC is the right comparison, because GCC is a compiler.  LLVM is (intended to be) a set of reusable libraries for building compilers.<br>
<br>
Maintaining approximately stable APIs and providing a deprecation strategy and well-documented upgrade mechanisms (i.e. If you are using this API, you need to stop and start using this one.  Here is where the new one is documented, and here are some examples of how it's used.) is the difference between LLVM being a set of reusable libraries and LLVM being a bunch of common code that's been factored out of a few programs.<br>
</blockquote><div><br></div><div>Or even worse, just keeping the headers for each subcomponent of the program (not even "a few programs") in a top-level `include/` directory and just saying "we decree that everything in include/ is our public API; therefore we are library based". Having the software split into modular components is a necessary---but not even close to sufficient---condition for providing a useful, reusable API (still need to look at use cases, docs, stability promises, ...). Especially lld suffers from this.</div>
<div><br></div><div>-- Sean Silva</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5"><br>
David<br>
<br>
<br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
</div></div></blockquote></div><br></div></div>