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:a6b:ed17:: with SMTP id n23-v6mr1374979iog.38.1527084608589; Wed, 23 May 2018 07:10:08 -0700 (PDT) X-Received: by 2002:a9d:5608:: with SMTP id e8-v6mr414574oti.5.1527084608192; Wed, 23 May 2018 07:10:08 -0700 (PDT) Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!feeder.eternal-september.org!news.unit0.net!feeds.phibee-telecom.net!newsfeed.xs4all.nl!newsfeed7.news.xs4all.nl!85.12.16.68.MISMATCH!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer01.am4!peer.am4.highwinds-media.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!v8-v6no905810itc.0!news-out.google.com!f20-v6ni727itd.0!nntp.google.com!v8-v6no905807itc.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Wed, 23 May 2018 07:10:07 -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> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: Subject: Re: DragonEgg has been revived From: "Dan'l Miller" Injection-Date: Wed, 23 May 2018 14:10:08 +0000 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Received-Bytes: 8200 X-Received-Body-CRC: 1060265081 Xref: reader02.eternal-september.org comp.lang.ada:52620 Date: 2018-05-23T07:10:07-07:00 List-Id: On Wednesday, May 23, 2018 at 2:26:49 AM UTC-5, Simon Wright wrote: > Simon Clubley writes: >=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. Pretty sure that you haven't read the Target Code clauses in GPLv3 and Elig= ible Compilation Process clauses in the Runtime Exception. GPL restriction= s galore on the generated code there in those two. Just because IR-based technologies haven't historically been utilized widel= y yet in the enterprise (and thus receive the attention of Sarbanes-Oxley c= ompliance in the finance department and contract compliance in the legal de= partment), doesn't mean that technologies in the ballpark of McSema (resurr= ect IR from hardware-processor machine code) and GraalVM (mix LLVM IR with = JVM bytecode via Polyglot) will not be utilized by the enterprise tomorrow. > People historically (There, fixed that for you; tomorrow's IR-IR-everywhere-for-w= orld-plus-dog is a new era.) > are perfectly happy to use GCC for C-based commercial projects in > spite of the fact that libgcc, and GNU libstdc++, if you're that way > inclined, have *exactly* the same runtime exception as FSF GNAT's RTS > and the GNAT Pro RTS. >=20 > The formal position is that the GCC compiler itself doesn't assert any > licensing restrictions over target code generated by it beyond that > derived from the original source code. You are so GPLv2; that is the way it was under GPLv2 back in the old days. = Newsflash: nearly a decade ago, they relicensed modern releases of FSF GCC= as GPLv3 with Runtime Exception v3.1 which does in fact have licensing res= trictions on Target Code and on Eligible Compilation Process (via Runtime E= xception v3.1) by merely passing, say, MIT/X11-licensed or BSD-licensed sou= rce code through the modern GCC compiler to generate the Target Code for th= at MIT/X11-licensed or BSD-licensed executable or DLL. Simon, you are =E2= =80=A2factually incorrect=E2=80=A2 nowadays (post-GPLv2) in your claim =E2= =80=9Cthat the GCC compiler itself doesn't assert any licensing restriction= s over target code generated by it beyond that derived from the original so= urce code=E2=80=9D, because the =E2=80=A2=E2=80=A2GPLv3 license of the mode= rn GCC compiler itself=E2=80=A2=E2=80=A2 spreads (dare I say, virally) to t= he otherwise MIT/X11-licensed or BSD-licensed Target Code 1) if that Target-Code hardware-processor's machine-code is lifted by, say,= McSema back to LLVM bitcode IR or 2) if somehow a GCC-written IR derived from that MIT/X11-licensed or BSD-li= censed source code and then fed into, say, LLVM and/or Polly and/or GraalVM= stand-alone* executable(s) which then itself produces the hardware-process= or machine-code or * i.e., as they are packaged today as executables that are invoked downstre= am (long) after modern GCC's executable finished executing 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. 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: 3.1.1) buffer-overrun injection of worms; and/or 3.1.2) removes viruses/etc-malware that have attached themselves to the exe= cutable or DLL and/or 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. 4) Indeed, viruses that modify a modern-GCC-written Target Code to insert t= he virus into machine code could quite easily violate either the Target Cod= e clause of GPLv3 or the Eligible Compilation Process clause of the Runtime= Exception or both (unless the virus fully complied with the entirety of GP= Lv3, including providing its source code to those people to whom the virus = was distributed/infected). Please note that each of #1, #2, #3.1, and #4 are all performed by a party = other than the original developer of the MIT/X11-licensed source code. Not= e especially that each of #1, #3.1, and #4 can clearly all be performed by = a party other than the person who invoked the GCC compiler to write out tha= t executable or DLL file. (Only #2 seems to need an overt extra act at the= time of GCC-compilation.) On the surface (conceivably shockingly preposterously), merely running a cl= osed-source permissive-licensed modern-GCC-compiled executable or DLL throu= gh, say, McSema can allow the downstream 3rd-party person who lifted the GC= C-compiled machine code to that LLVM bitcode IR to then demand the source c= ode (!) to that otherwise closed-source (!) permissively-licensed executabl= e o DLL, because not only is the IR GPLv3-licensed, but, more bizarrely mor= e importantly, the GCC-compiled hardware-processor machine-code executable = or DLL is retroactively (!) GPLv3-licensed (!) under the Target Code and/or= Eligible Compilation Process clauses' overt retroactive revocation of righ= ts on the machine code that was generated by modern GCC. This seems prepos= terous, but merely mechanically turning the crank of the Target Code & Elig= ible Compilation Process language in GPLv3 & its Runtime Exception seems to= quite directly say this (at least to me under my plain-language reading of= the terms of the license contract, as I am permitted to do for myself unde= r Texas contract law). disclaimer: [I am not a lawyer who has passed the bar in any jurisdiction whatsoever. = Do not rely on any of this for any purpose. Seek the counsel of an attorne= y duly certified for the system of law within the jurisdiction(s) in which = you reside or operate.] Pretty sure all this above are examples of what Shark8 would use the term = =E2=80=9Call the morass of licensing surrounding=E2=80=9D GPLv3-with-Runtim= e-Exception-v3.1-licensed modern GCC. > I can see that people, especially commercial lawyers, might be confused > about this, especially if they read the Target Code clauses or Eligible Compilation Process clauses of the Runt= ime Exception v3.1 (There, fixed that for you; that is what they need to re= ad.) > all the hot air that's been blasting over this newsgroup lately. Yeah right. Encouraging people to actually read the Target Code and Eligib= le Compilation Process clauses of the Runtime Exception v3.1 and revealing = why it is important that they do so is dismissed as =E2=80=9Chot air =E2=80= =A6 blasting=E2=80=9D.