From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 X-Received: by 2002:ac8:1482:: with SMTP id l2-v6mr3889767qtj.45.1527176289833; Thu, 24 May 2018 08:38:09 -0700 (PDT) X-Received: by 2002:a1f:bc54:: with SMTP id m81-v6mr1161405vkf.7.1527176289552; Thu, 24 May 2018 08:38:09 -0700 (PDT) Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!feeder.eternal-september.org!feeder.erje.net!1.eu.feeder.erje.net!newsfeed.xs4all.nl!newsfeed8.news.xs4all.nl!85.12.16.69.MISMATCH!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.am4!peer.am4.highwinds-media.com!peer01.iad!feed-me.highwinds-media.com!news.highwinds-media.com!x25-v6no896984qto.0!news-out.google.com!p41-v6ni279qtp.1!nntp.google.com!x25-v6no896977qto.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Thu, 24 May 2018 08:38:09 -0700 (PDT) In-Reply-To: Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=47.185.233.194; posting-account=zwxLlwoAAAChLBU7oraRzNDnqQYkYbpo NNTP-Posting-Host: 47.185.233.194 References: <5c2523c1-9ea5-453c-b80e-9cb0dcd16de0@googlegroups.com> <293cf892-1320-49e6-a25f-a36ea098cd34@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <294fa0cd-ec72-4f0f-8065-0a3d5e1087fa@googlegroups.com> Subject: Re: DragonEgg has been revived From: "Dan'l Miller" Injection-Date: Thu, 24 May 2018 15:38:09 +0000 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Received-Bytes: 18238 X-Received-Body-CRC: 1466471764 Xref: reader02.eternal-september.org comp.lang.ada:52640 Date: 2018-05-24T08:38:09-07:00 List-Id: Let us review, where Simon Wright and Chris Moore got off-track in this thr= ead: First, Simon Clubley yearns for a splendid & laudable goal: On Tuesday, May 22, 2018 at 7:29:10 AM UTC-5, Simon Clubley wrote: > On 2018-05-21, Dan'l Miller wrote: > > > > Simon, how fervently do you seek an LLVM-backended GNAT? Over on other > > threads in recent days, I have been commenting on a proposed alternativ= e to > > DragonEgg. >=20 > What I would like to see is an Ada compiler that can generate code > for a wide range of targets without any GPL restrictions on the > generated code. Then, Shark8 yearns for much the same splendid & laudable goal: On Tuesday, May 22, 2018 at 5:33:29 PM UTC-5, Shark8 wrote: > On Tuesday, May 22, 2018 at 2:17:11 PM UTC-6, Dan'l Miller wrote: > > What is so bad about GPLv3 with Runtime Exception =E2=80=A6 >=20 > In itself, not so much -- the biggest problem with anything GCC [meaning = GNAT in the context of Ada] is > that there's all the morass of licensing surrounding it: FSF GNAT vs PGL = GNAT vs AdaCore Pro GNAT > -- all have different restrictions and capabilities and it's just a big m= ess -- especially for any small to > medium business to sort out. >=20 > I want a clean break from ALL of that. Note that implied in the context of the subtext of their implied communicat= ion, Shark8 and Simon Clubley both consider FSF GCC as licensed by GPLv3 wi= th Runtime Library Exception v3.1 (RLEv3.1) as either certainly or perhaps = =E2=80=A2=E2=80=A2not providing=E2=80=A2=E2=80=A2 the splendid & laudable g= oal for which they both yearn. Btw, the hair-splitting between whether it is =E2=80=9Ccertainly =E2=80=A6 = not providing=E2=80=9D versus =E2=80=9Cperhaps not providing=E2=80=9D is ca= ught up in what Shark8 aptly calls: =E2=80=9Call the morass of licensing= =E2=80=9D regarding the interplay of variants of the GPLv3 stand-alone, GPL= v3 with RLEv3.1, GMGPLv3, any possessor can =E2=80=98upgrade=E2=80=99 to la= ter GPL editions or GPL-compatible amendments for all downstream copies, an= d so forth. And the logical and reading-comprehension (and lack thereof) contortions co= ntained in later replies along the branches of this thread seem to clearly = and undeniably demonstrate what Shark8 aptly called =E2=80=9Call the morass= of licensing=E2=80=9D. Just read all the later replies along the branches= of this thread to see that different readers of & commentators on the exac= t same license text in GPLv3 and/or its Runtime Library Exception v3.1 reac= h drastically different conclusions [mainly by cherry-picking different quo= tations from the license text and then ignoring/eliding other passages of t= he license text]. Earlier in this thread, I proposed a harsh-rebuke of DragonEgg as a drastic= ally-different replacement for DragonEgg. To facilitate herding cats that = such a GPLv3-with-RLEv3.1-licensed LLVM-backended compiler would actually b= e good enough, I posed the question: On Tuesday, May 22, 2018 at 2:17:11 PM UTC-6, Dan'l Miller wrote: > =E2=80=A2=E2=80=A2=E2=80=A2=E2=80=A2What is so bad about GPLv3 with Runti= me Exception=E2=80=A2=E2=80=A2=E2=80=A2=E2=80=A2 =E2=80=A6 > > 1) =E2=80=A6 unless a person really really wants to re-work GCC-emitted m= achine code as lifted to LLVM bitcode > IR via, say, McSema as not-GPLv3ed derivative works, needing disclosure o= f all source code?**=20 > or=20 > > 2) =E2=80=A6 unless a person really really wants to write LLVM bitcode IR= out to a file to execute it on > Sulong/GraalVM as not-GPLv3ed derivative works, needing disclosure of all= source code?**=20 >=20 > 3) Can anyone think of any other precise downsides of GPLv3 =E2=80=A2with= =E2=80=A2 Runtime Exception?=20 > > I think all the downsides other than those 2 listed above are with GPL = =E2=80=A2without=E2=80=A2 Runtime Exception, > correct?=20 I later thought of a third category in answer to my own question that depen= ds on how much surgery can be deeply & intimately performed on Target Code = before evoking the =E2=80=9Cnotwithstanding=E2=80=9D clause in the RLEv3.1.= At what point of wholesale re-writing of a percentage of the Target Code = become an act of re-compiling, taking the Target Code written by GCC as mer= e IR to the re-compiler? 3) #1 & #2 above are just the first 2 examples of emerging technology in th= e IR domain and in the rework-the-machine-code domain.=20 3.1) For example, imagine an anti-malware add-on (that, for the sake of dis= cussion here, violates the Target Code or Eligible Compilation Process clau= ses of a modern-GCC-written executable or DLL) to operating systems that re= works the machine-code at link-load time to eliminate:=20 3.1.1) buffer-overrun injection of worms; and/or=20 3.1.2) removes viruses/etc-malware that have attached themselves to the exe= cutable or DLL and/or=20 3.1.3) randomizes the layout of the machine code each link-loader-time so t= hat malware cannot easily recognize that executable or DLL.=20 Btw, while we are on the topic of re-compiling Target Code, it seems that a= nother act on the Target Code written by FSF GCC as licensed by GPLv3-with-= RLEv3.1 might be dodgy/sketchy/perhaps-not-permitted-without-providing-orig= inal-source-code-as-per-GPLv3's-terms: 4) Imagine a (closed-source EULA-licensed paid-software) machine-code-to-ma= chine-code translator/re-compiler that coverts from one ISA-and-ABI to anot= her drastically-different ISA-and-ABI. The input Target Code written by FS= F GCC could be considered IR to this re-compiler. The resulting output mac= hine-code on the drastically-different ISA and ABI could* revert under the = RLEv3.1 to full-fledged GPLv3. * if someone were to consider the input Target Code as IR, much the same as= the McSema line of reasoning. And then the Installation Information portion of the GPLv3 could come into = play, unless the re-compiled drastically-different-ISA-&-ABI machine-code w= as installed on something =E2=80=9Cindustrial=E2=80=9D sufficiently resembl= ing a fighter-jet cockpit or telephone switch in a central office or metal-= stamping machine on a factory floor. So that close-source re-compiler that= someone paid money to EULA-license its usage must now be provided along wi= th the source code for free to any possessor on any hardware whose =E2=80= =9Csignificant mode of use=E2=80=9D is at least partially non-=E2=80=9Cindu= strial=E2=80=9D. A =E2=80=9Cmorass of licensing=E2=80=9D indeed! Gee, the more we look into= all these portions of the GPLv3 and/or its deeply-intertwined RLEv3.1, the= more & more =E2=80=9Call the morass of licensing=E2=80=9D that is revealed= . (Thank you, Simon Wright. Your diligence motivated me to find evermore = morass.) On Thursday, May 24, 2018 at 2:19:12 AM UTC-5, Simon Wright wrote: > "Dan'l Miller" writes: >=20 > > On Wednesday, May 23, 2018 at 2:26:49 AM UTC-5, Simon Wright wrote:=20 > >> Simon Clubley writes:= =20 > >>=20 > >> > What I would like to see is an Ada compiler that can generate code > >> > for a wide range of targets without any GPL restrictions on the > >> > generated code. > >>=20 > >> Pretty sure that's called GCC.=20 Here is where the fallacious theorem was postulated. Shark8 years for =E2= =80=9Cgenerat[ing] code for =E2=80=A6 targets without =E2=80=A2=E2=80=A2=E2= =80=A2=E2=80=A2=E2=80=A2=E2=80=A2=E2=80=A2=E2=80=A2=E2=80=A2=E2=80=A2any=E2= =80=A2=E2=80=A2=E2=80=A2=E2=80=A2=E2=80=A2=E2=80=A2=E2=80=A2=E2=80=A2=E2=80= =A2=E2=80=A2 GPL restrictions on the generated code=E2=80=9D. Because RLE= v3.1 is nothing more than an amendment to GPLv3, and because GCC is license= d as GPLv3-with-RLEv3.1, here Shark8's =E2=80=9CGPL=E2=80=9D of course refe= rs to GPLv3 with RLEv3.1 except in the above-mentioned =E2=80=9Cmorass-of-l= icensing=E2=80=9D ways that RLEv3.1 degenerates back down to full-fledged G= PLv3 as RLEv3.1 terms are violated. It is both GPLv3 =E2=80=A2=E2=80=A2and= its amendments intimately intertwined with GPLv3=E2=80=A2=E2=80=A2 that Si= mon Clubley and Shark8 here are yearning to have absolutely none of: zero,= zilch, empty set, naught, null, nada. =20 (And yes, someone could arrive at an FSF GCC that is licensed by full-fledg= ed GPLv3 by fully eliminating the RLEv3.1-licensed code, but, say, 99.9% of= the users of FSF GCC don't do that. Let's not contort ourselves into disc= ussing the, say, 0.1% corner case. Therefore, these =E2=80=9CGPL restricti= ons=E2=80=9D that Shark8 and Simon Clubley yearn to eliminate is some futur= e non-GNAT compiler can originate in either GPLv3 proper or its intimately-= intertwined-with-GPLv3 amendment: RLEv3.1. Both GPLv3 proper and RLE3.1. = Period.) Hence, the fallacious theorem can be =E2=80=A2disproven=E2=80=A2 by finding= even a single counter-example =E2=80=9CGPL[-based] restriction[] on the ge= nerated code=E2=80=9D written by GCC. Find more than one? Then an even-be= tter set of counter-examples for even stronger disproving. Note that =E2=80=9Cgenerated code=E2=80=9D there conforms to GPLv3's Object= Code, which is anything not Source Code derived from the Source Code. Not= e that =E2=80=9Cgenerated code=E2=80=9D need not satisfy the terms of Targe= t Code, because that is precisely what Simon Clubley and Shark8 are focusin= g their attention on: all the ways that would-be Target Code isn't Target = Code such that would-have-been Target Code in the RLEv3.1 degenerates down = to GPLv3-licensed Object Code, whose only right to convey is granted by als= o providing the Source Code (and Installation Information if not installed = complicatedly/obfuscatedly/cryptically on a device insufficiently =E2=80=9C= industrial=E2=80=9D). Note that there does exist at least one way in the language overtly stated = in GPLv3 and its Runtime Library Exception v3.1 that the Object Code can be= forced (dare I say, virally) to be GPLv3-licensed when the Corresponding S= ource Code was permissively licensed open-source or even EULA-licensed clos= ed source. We do all see that, don't we? > > Pretty sure that you haven't read the Object Code clauses in GPLv3 and > > the Target Code clauses and Eligible Compilation Process clauses in > > the Runtime Exception v3.1. GPL restrictions galore on the generated > > code there in Target Code & Eligible Compilation Process (in Runtime > > Exception v3.1) interacting with Object Code, where Object Code is > > =E2=80=A2everything=E2=80=A2 not Source Code (in GPLv3). IR would ther= efore be Object > > Code due to being not Target Code and not Source Code. >=20 > You are confusing GPLv3 with the GCC Runtime Library Exception. No, you are confusing GPLv3-with-Runtime-License-Exception-v3.1-licensed = GCC in the fallacious theorem with some other compiler (e.g., GNAT Pro GPL = Community Edition) that is licensed by full-fledged GPLv3. Don't change th= e subject to some other full-fledged-GPLv3-licensed compiler. No muddying = the waters; stay on the topic of the fallacious theorem that is focused ent= irely on FSF GCC. (Other than the, say, 0.1% who forego all utilization of= the GCC runtime and can thus avoid the RLEv3.1,) the only (remaining) way = that FSF GCC is licensed by full-fledged GPLv3 is =E2=80=A2degenerately=E2= =80=A2 by not satisfying one or more logical-deduction paths through the RL= Ev3.1. Such a lack of satisfaction of one or more logical-deduction paths = through the RLEv3.1 causes RLEv3.1 to become a big NO-OP as an amendment to= GPLv3, leaving only full-fledged GPLv3 standing unamended. It is precisely these subtle self-eliding & self-spreading logical-deductio= n paths of intertwined contract-terms (such as cleverly encoded in the RLEv= 3.1, but also elsewhere in the not-sufficiently-industrial Installation Inf= ormation and Corresponding Source Code clauses of the GPLv3-proper) that Si= mon Clubley and most especially Shark8 are yearning to have none of: zero,= zilch, empty set, naught, null, nada. Hence, to disprove the fallacious theorem, all we need to do is find one re= al-world activity that someone can unimpededly actually do with executables= or DLLs produced by, say, a closed-source EULA-licensed compiler: 1) that would have caused a lack of satisfying one or more logical-deductio= n paths through the RLEv3 had the executable or DLL been compiled by FSF GC= C; or 2) that would have caused some evocation of Installation Information and Co= rresponding Source Code clauses of GPLv3-proper had the executable or DLL b= een compiled by FSF GCC and linked with its runtime; or 3) that would have evoked any other category of subtle clauses in GPLv3-pro= per or in any amendment to GPLv3 to force doing something with Source Code = or Installation Information or Corresponding Source Code that is (or was in= tended to have been) licensed by either a permissive open-source license or= a close-source license or lack thereof. > GPLv3 section 1 para 4 says >=20 > The =E2=80=9CCorresponding Source=E2=80=9D for a work in object code f= orm means all > the source code needed to generate, install, and (for an executable > work) run the object code and to modify the work, including scripts > to control those activities. However, it does not include the work's > System Libraries, or general-purpose tools or generally available > free programs which are used unmodified in performing those > activities but which are not part of the work. [...] >=20 > and it's clear that the GCC compiler itself is a 'generally available > free program'. >=20 > See also the FAQ[1]: >=20 > [Q] Can I use GPL-covered editors such as GNU Emacs to develop > nonfree programs? Can I use GPL-covered tools such as GCC to compile > them? > =20 > Yes, because the copyright on the editors and tools does not cover > the code you write. Using them does not place any restrictions, > legally, on the license you use for your code. > =20 > I don't think that it would contravene the GPL to modify GCC so that it > emitted an intermediate representation, provided that you convey the > source form of such modification with a compiler binary. Hey, you found one of those =E2=80=9CGPL[-based] restrictions on the genera= ted code=E2=80=9D that Shark8 and Simon Clubley are yearning to eliminate i= n some hypothetical non-GNAT Ada compiler. Yea! Good job! Attaboy! You = only needed to find one counter-example to the fallacious theorem regarding= GCC having absolutely no such =E2=80=9CGPL[-based] restrictions on the gen= erated code=E2=80=9D. You found one. Yea! > What could well cause trouble, and violation of the GCC Runtime Library > Exception, would be to use that modified compiler on source of an RTS > that was covered by the GCC Runtime Library Exception. Hey, you found another one of those =E2=80=9CGPL[-based] restrictions on th= e generated code=E2=80=9D that Shark8 and Simon Clubley are yearning to eli= minate in some hypothetical non-GNAT Ada compiler. Yea! Good job! Attabo= y! You only needed to find one counter-example to the fallacious theorem r= egarding GCC having absolutely no such =E2=80=9CGPL[-based] restrictions on= the generated code=E2=80=9D. But you have found two. Yea! Simon Wright, keep looking and digging on ways that new tech causes people = to accidentally =E2=80=98step in a pile of dung=E2=80=99 that they didn't i= ntend to step into via the terms of the GPLv3 and RLEv3.1. You'll eventual= ly find more than the 2 ways that you have already found to not satisfy 1) the logical-deduction paths through the RLEv3.1 so that, without RLEv3.1= , =E2=80=A2all=E2=80=A2 not-Source-Code* written by FSF GCC is forced to be= considered Object Code under GPLv3, where that Object Code is linked with = GPLv3-licensed runtime code to make (dare I say, virally) the entire result= ing executable or DLL licensed under the GPLv3-proper (i.e., without RLEv3.= 1 because the RLEv3.1 went poof due to its chain of logical deductions elid= ing themselves as they are overtly constructed to do under certain conditio= ns) or 2) the not-sufficiently-industrial terms of the Installation Information an= d Corresponding Source Code clauses of the GPLv3-proper, as some new tech m= oves from industrial usage into the residence. * which for the sake of argument here is (or was intended to have been!) li= censed either as permissively open-source, such as via MIT/X11 license or B= SD license or as closed-source