5 ms·
For those out of the loop like me, the Apache 2.0 license exceptions they are addding are: > As an exception, if, as a result of your compiling your source co
by agnokapathetic 8y ago
For those out of the loop like me, the Apache 2.0 license exceptions they are addding are:
> As an exception, if, as a result of your compiling your source code, portions of this Software are embedded into an Object form of such source code, you may redistribute such embedded portions in such Object form without complying with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
> In addition, if you combine or link compiled forms of this Software with software that is licensed under the GPLv2 (“Combined Software”) and if a court of competent jurisdiction determines that the patent provision (Section 3), the indemnity provision (Section 9) or other Section of the License conflicts with the conditions of the GPLv2, you may retroactively and prospectively choose to deem waived or otherwise exclude such Section(s) of the License, but only in their entirety and only with respect to the Combined Software.
- avar 8y agoDoesn't this just allow an end-run around the license by allowing you to distribute a program that embeds LLVM, whose only purpose is to be an LLVM wrapper to avoid those sections of the license?
- jcranmer 8y agoWhat it allows is portions of the compiler runtime library to be embedded into your program without changing any licensing effects of your program. GCC has a similar exception to their GPL for similar reasons.
- jsmith45 8y agoI'm pretty sure the intention is that it does not allow that. Notice that they say "as a result of your compiling your source code". That is intended to mean that if the compiler copies in some binary code (to implement a compiler primitive or the like), that it doing so does not require you to treat that code like it is licensed under the LLVM terms. Note that the LLVM source code is not "your source code", so simply copying in the LLVM source and compiling it will not trigger this exception. That is not to say that there might not be a loophole. E.G., modifying LLVM to always copy all of its binary code into the resulting exececutable (and licensing those changes under this license), and then compiling a program that wants to embed LLVM. I'd like to think that courts would refuse to allow such abuse, but who really knows.
- Joky 8y agoIt's blurry to me what it mean for including a libc++ header though? This is not "your source code" but LLVM inline code. How is it different from including a header from LLVM itself?
- chandlerc1024 8y agoThe intent is definitely to handle this as well. (Not really going to try and dig into legal reasoning here.)
- mikece 8y agoSeems to me Linux is the primary project affected by this?
- johannes1234321 8y agoAnything which might get some runtime artifacts from the compiler. For instance some compiler intrinsic called from your code might use some code the compiler injects instead of only translating your source to opcodes.
- vaylian 8y agoSorry, but I have trouble understanding such legalese. Can someone please translate this into more common language? Thanks! I do not want to guess what this could mean.
- jcranmer 8y agoThe first bit says effectively "this doesn't apply to compiler libraries [1] we link into your code". The second bit effectively says "you can use this with GPLv2 code" (normal Apache v2 only is compatible with GPLv3). [1] e.g., code to implement a 64-bit division operation on platforms that don't have an instruction for that.
- bunderbunder 8y agoIt looks like the first bit might also imply that you can use LLVM as the basis for a JIT compiler without having to license your code as Apache 2.0 or include the attribution notices. Maybe?
- justincormack 8y agoNo, that would not be "as a result of compiling", but you can do that anyway (with attribution and patent though), as incorporating Apache code into other code is fine in general.
- jcranmer 8y agoIf your program is calling LLVM APIs directly, the exception wouldn't kick in. So any JIT project using LLVM would have to comply with Apache 2.0.
- int_19h 8y agoComplying with AL in that case would simply amount to LLVM itself still being under AL. The code that calls it wouldn't have to be.