comp.lang.ada
 help / color / mirror / Atom feed
From: Optikos <ZUERCHER_Andreas@outlook.com>
Subject: Re: Ada on Apple's new procesors
Date: Tue, 23 Jun 2020 18:02:54 -0700 (PDT)	[thread overview]
Message-ID: <14ffa125-e27d-4d34-8c12-27afb2ea0b13o@googlegroups.com> (raw)
In-Reply-To: <rcu20d$199n$1@gioia.aioe.org>

On Tuesday, June 23, 2020 at 6:08:01 PM UTC-5, Luke A. Guest wrote:
> On 23/06/2020 21:25, Optikos wrote:
> 
> > Wait, do the FSF GNAT repositories themselves now contain the mods for LLVM instead of obtaining GNAT-LLVM mods from https://github.com/AdaCore/gnat-llvm, which is pure-GPLv3 licensed.
> 
> There was no change required. GNAT has always had an interface to the
> GCC compiler via a glue layer which fits the interface exposed by GNAT.
> GNAT-LLVM just implements the same interface. Read the README in the
> GNAT-LLVM repo, it tells you to download the FSF GNAT.
> 
> > https://github.com/AdaCore/gnat-llvm/blob/master/COPYING3
> > 
> > If mixing FSF GNAT with any 1 or more non-data/non-script (i.e., compiled; linked) source file(s) in https://github.com/AdaCore/gnat-llvm, then RLE evaporates because that 1 or more source file lacks the RLE; hence FSF GNAT-LLVM would become pure GPLv3.
> > 
> 
> The compiler links to GNAT-LLVM, the runtime doesn't.

To cause RLE to elide itself, the Ada runtime does not need to link with the •compiler; it needs the runtime to be linked to the user's •executable•.  In my opinion, the RLE requires a greater than 100 IQ and requires that higher intellect to have generous patience to discern topics that are subtle.  The RLE grants its exception only under certain strict terms; otherwise the RLE is written to self-destruct/implode legally, reverting the user's executable to pure GPL.  One of those strict terms is Eligible Compilation Process.  To clearly be an (RLE-)Eligible Compilation Process, the Compilation Process must not write out (any?) intermediate representation.  But that is the scot-free way of achieving Eligible Compilation Process; there might be messier ways.  GNAT-LLVM seemingly depends on those messier ways.

The “any?” there is what is an unsettled matter legally.  See below.

the Narrow legal theory:
When the RLE discusses IR, does it mean semantically-rich IR that represents an Ada (or C or C++) AST, and Java bytecode, LLVM textual IR, and LLVM bitcode IR doesn't count as IR?

the Wide legal theory:
Or when the RLE discusses IR, does it mean what the plain-meaning seems to say:  any IR of any technology of any form counts as IR from the point of view of RLE's permission-grant?

This becomes germane regarding the LLVM optimizer, which takes either LLVM textual IR or LLVM bitcode (which is a binary representation of LLVM textual IR) as input and output, perhaps chained zero or more times.  (Zero here would be eliding the entire concept of optimization.)

https://www.llvm.org/docs/CommandGuide/opt.html

https://polly.llvm.org

Under the Narrow legal theory above,  the user of GNAT-LLVM can optimize to their heart's content (even with hostile-to-GPL optimizer plug-ins, see below) because LLVM IR isn't the kind of IR that RLE is so concerned about, so no harm no foul.

But under the Wide legal theory above, it becomes especially germane if GNAT-LLVM produces LLVM textual IR or LLVM bitcode that is fed into an optimizer plug-in that is (or could be) hostile-to-GPL, such as an optimizer plug-in that has a closed-source license or violates any of the other terms of GPLv3 (e.g., patents).  Under the Wide legal theory above, perhaps the legally-safest usage of GNAT-LLVM for the user to have GPL-noncompliant license on the executable is to entirely elide optimization by coaxing the LLVM toolchain to proceed from compilation to linking without optimization.

Using GPL-compatible open-source-licensed optimizer stages on LLVM textual IR or LLVM bitcode under the Wide legal theory above is a grey area because they seem to not meet the Eligible Compilation Process (due to inter-stage visibility of the IR, so: bad) but each stage is GPL-compatible & open-source (so: good to go?).  It is left as an exercise to the reader (and their legal counsel) who is interested in this grey area to determine if LLVM opt and poly and any other frequently-utilized LLVM IR manipulator plug-in is GPL-compatible or not (and whether the Narrow or Wide legal theory is operational in the user's jurisdiction).

The rub:
There is a risk that the mere nominal identicality of the term IR utilized in LLVM would be construed (by confusion) as the term IR in the RLE by a judge or jury if this were ever litigated.  IR is IR, or so someone relying on identicality of name or acronym might say—leading to the wide legal theory above coming into play.  In some audiences, IR from LLVM's perspective perhaps •not• being IR from RLE's perspective might require more IQ points than that audience has or is willing to invest in the matter, resembling such playful mental effort as the now-famous “it depends on what the definition of ‘is’ is”.  The Narrow legal theory requires that patience to meticulously think through instead of dismissing the whole mental effort as: IR=IR, or IR here is IR there and everywhere.  The lazy person/judge/jury will tend to default to the Wide legal theory, just because IR here has the name techno-term as IR there.

> Pretty sure that the AdaCore people said it won't fall under GPL.

Only an officer of the company or legal counsel would be able to normatively make that promise of estoppel.  A mere employee would be only opining their personal opinion.

  reply	other threads:[~2020-06-24  1:02 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-22 22:53 Ada on Apple's new procesors Jerry
2020-06-23 10:42 ` Vadim Godunko
2020-06-23 10:43 ` Luke A. Guest
2020-06-23 16:16   ` Optikos
2020-06-23 17:52     ` Luke A. Guest
2020-06-23 20:25       ` Optikos
2020-06-23 23:07         ` Luke A. Guest
2020-06-24  1:02           ` Optikos [this message]
2020-06-24 10:48             ` Luke A. Guest
2020-06-24 15:12               ` Optikos
2020-06-24 15:38                 ` Luke A. Guest
2020-06-24 16:35                   ` Simon Wright
2020-06-24 17:58                     ` Luke A. Guest
2020-06-24 18:18                       ` Stephen Leake
2020-06-24 18:30                         ` Luke A. Guest
2020-06-24 18:37                         ` Wesley Pan
2020-06-24 18:55                         ` Optikos
2020-06-24 19:58                           ` Luke A. Guest
2020-06-24 19:06                     ` Optikos
2020-06-24 19:26                       ` Simon Wright
2020-06-24 20:03                         ` Luke A. Guest
2020-06-25 10:25                           ` Simon Wright
2020-06-25 10:49                             ` Luke A. Guest
2020-06-25 11:08                               ` Simon Wright
2020-06-24 20:02                       ` Luke A. Guest
2020-06-25  7:21           ` charlet
2020-06-25  9:55             ` Luke A. Guest
2020-06-25 10:14               ` charlet
2020-06-25 11:03                 ` Simon Wright
2020-06-25 11:25                   ` Luke A. Guest
2020-06-25 12:50                     ` Luke A. Guest
2020-06-29 10:33                       ` Luke A. Guest
2020-06-25 16:15                 ` Optikos
2020-06-30 11:16                   ` Fabien Chouteau
2020-06-30 12:28                     ` Optikos
2020-06-30 13:28                       ` Luke A. Guest
2020-06-30 13:26                     ` Luke A. Guest
2020-06-30 14:35                       ` charlet
2020-06-30 14:46                         ` Luke A. Guest
2020-06-30 14:59                           ` charlet
2020-06-30 15:15                             ` Luke A. Guest
2020-06-30 19:12                             ` Optikos
2020-06-30 20:15                               ` Simon Wright
2020-06-30 20:20                                 ` Dennis Lee Bieber
2020-06-30 20:20                                 ` Luke A. Guest
2020-06-30 22:07                                   ` Wesley Pan
2020-06-30 23:25                                     ` Luke A. Guest
2020-07-01  4:46                                 ` Optikos
2020-07-01  9:23                                   ` Fabien Chouteau
2020-07-01 11:03                                     ` Simon Wright
2020-07-01 12:55                                     ` Optikos
2020-07-03  0:51                                     ` Wesley Pan
2020-07-03 11:08                                     ` gautier_niouzes
2020-06-30 20:01                         ` Simon Wright
2020-06-30 20:23                           ` Luke A. Guest
2020-06-30 21:57                             ` Simon Wright
2020-06-30 23:27                               ` Luke A. Guest
2020-07-01 11:47                                 ` Simon Wright
2020-07-02  9:54                                   ` Simon Wright
2020-07-02 19:56                                     ` Optikos
2020-07-03 17:18                                     ` antispam
2020-07-03 18:31                                       ` Optikos
2020-06-24 19:18     ` Simon Wright
2020-06-24 20:06       ` Luke A. Guest
2020-06-24 20:09         ` Luke A. Guest
2020-06-25  0:33       ` Optikos
2021-02-09  4:51 ` Jerry
2021-02-09  7:07   ` Luke A. Guest
2021-02-09 12:24     ` Simon Wright
2021-02-09 18:21   ` Brian Drummond
2021-02-12 19:14     ` Andreas ZEURCHER
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox