comp.lang.ada
 help / color / mirror / Atom feed
From: "Dan'l Miller" <optikos@verizon.net>
Subject: Re: DragonEgg has been revived
Date: Tue, 22 May 2018 18:58:52 -0700 (PDT)
Date: 2018-05-22T18:58:52-07:00	[thread overview]
Message-ID: <218e6b4e-66ba-4ff0-8d5d-7f643b1e108b@googlegroups.com> (raw)
In-Reply-To: <60d3b0f0-b740-4200-ae80-47226f47ea2c@googlegroups.com>

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:
> > On Tuesday, May 22, 2018 at 2:40:24 PM UTC-5, Shark8 wrote:
> > > On Tuesday, May 22, 2018 at 6:29:10 AM UTC-6, Simon Clubley wrote:
> > > > 
> > > > 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.
> > > 
> > > I'm getting ready to restart work on Byron. I figure that perhaps an Implementation Manual/Design Document would help explain the design underneath it and welcome new contributors. 
> > > 
> > > > 
> > > > I'm not really bothered how that happens but LLVM seems like an
> > > > interesting option.
> > > 
> > > I have mixed feelings on LLVM -- it would be nice to grab all the targets for it, but I also think it's a stupid
> > > idea to build the compiler specifically for it.
> > 
> > Writing a compiler “specifically for” LLVM?  I thought that the whole premise of Byron was to write an Ada compiler for multiple back-ends:
> > 1) libFirm:  https://pp.ipd.kit.edu/firm
> > 2) LLVM
> > 3) GCC
> > 4) Graal for JVM:  http://www.graalvm.org
> > 5) CLR for .NET & Mono
> > and so forth.
> 
> Byron certainly is about multiple backends -- but there's been a lot of talk about an "LLVM Ada compiler" here in the past, to the point where the implications really were designing a compiler specifically to it.
> 
> > 
> > Compared to Byron's laudable long-term clean-room-design goals, my GELI proposal* for an LLVM-backended GNAT is an interim stop-gap, focusing only on likely-not-clean-room generation of LLVM bitcode IR within a single GPLv3 GNAT executable, causing only ISAs' machine-code (not the IR) to be generated by LLVM-embedded-within-GNAT.
> 
> Hm interesting. 
> 
> > 
> > > Yeah; that's one of the big problems Byron [Ada 2012 in Ada 2012] is intended to address; the other big
> > > one is to escape the stupid morass of licensing issues.
> > 
> > What is so bad about GPLv3 with Runtime Exception …
> 
> 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 mess -- especially for any small to medium business to sort out.
> 
> I want a clean break from ALL of that.

As do we all.  If GELI project is clever, mods & extensions to LLVM-world can be accomplished outside of GCC-world (e.g., with UofIllinois/NCSA license) if they are not derivative works of anything in GCC.  These value-adds to LLVM-world could occasionally be useful to Byron.  The only things that come to mind are:
1) the no-files always-in-DRAM way of avoiding writing LLVM bitcode IR* to files between LLVM-world's stages (but I am not entirely unsure so far that this might already exist in LLVM-world);
2) chaining Polly stages flexibly amongst LLVM stages by •not• executing Polly executable multiple** times;
3) command-line parsing for LLVM-world topics,
3.1) e.g., command-line parsing for “llvm-”-prefixed targets
3.2) e.g., command-line parsing for chaining Polly amongst LLVM-world stages;
4) fresh new test suite.

* regardless of whatever the content of that LLVM bitcode IR is

** see page 8 of https://polly.llvm.org/publications/grosser-diploma-thesis.pdf

Conversely, I haven't been clever enough to yet figure out a way that GELI could be clean-room in the “southbound” LLVM-bitcode-IR direction (for Byron's usage) while actually being clean-room in input-to-GELI direction on the “north” side of GELI.  So far I haven't been clever enough for GELI's north-side awareness of GNAT's fully-semantically-adorned Ada IR snippets to not make •all• of GELI downstream-southbound a derivative work of GNAT (and thus licensed by GPLv3-with-Runtime-Exception), including the generated LLVM bitcode IR being effectively tainted transitively by awareness of the content & boundary of the snippet from GNAT's Ada-IR tree.  That taint ruins any attempt to keep the LLVM bitcode IR clean room.  If all roads in GELI lead to being a tainted derivative work of GNAT's Ada-IR tree then why attempt the immense hassle of clean-room designing the LLVM bitcode IR at all (other than to help out Byron)?

I am open to ideas there though.

> The viral nature of GPL is also a turn-off for a lot of companies, regardless of runtime exception.

I agree wholeheartedly.  That is why we need Byron (or for one of the closed-source Ada compilers to get aggressively super-competitive with GNAT).

  reply	other threads:[~2018-05-23  1:58 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-21 21:37 DragonEgg has been revived Simon Clubley
2018-05-21 22:20 ` Dan'l Miller
2018-05-21 22:26 ` Luke A. Guest
2018-05-22 12:12   ` Simon Clubley
2018-05-22  1:02 ` Dan'l Miller
2018-05-22 12:29   ` Simon Clubley
2018-05-22 12:41     ` Luke A. Guest
2018-05-22 15:25       ` Dan'l Miller
2018-05-22 19:40     ` Shark8
2018-05-22 20:17       ` Dan'l Miller
2018-05-22 21:04         ` Dan'l Miller
2018-05-22 22:33         ` Shark8
2018-05-23  1:58           ` Dan'l Miller [this message]
2018-05-23  7:26     ` Simon Wright
2018-05-23  8:11       ` Luke A. Guest
2018-05-23 14:10       ` Dan'l Miller
2018-05-23 15:46       ` Dan'l Miller
2018-05-23 15:51       ` Dan'l Miller
2018-05-23 19:27         ` Chris M Moore
2018-05-23 20:30           ` Dan'l Miller
2018-05-23 22:18             ` Chris M Moore
2018-05-24  0:12               ` Dan'l Miller
2018-05-24  8:00                 ` Simon Wright
2018-05-24  7:19         ` Simon Wright
2018-05-24 15:38           ` Dan'l Miller
2018-05-24 16:44             ` Dan'l Miller
2018-05-24 18:07               ` Lucretia
2018-05-25  0:09                 ` Dan'l Miller
2018-05-24 17:19             ` Simon Wright
2018-05-24 19:26               ` Dan'l Miller
2018-05-24 21:59                 ` Chris M Moore
2018-05-24 22:15                   ` Dan'l Miller
2018-05-24 22:22                     ` Dan'l Miller
2018-05-25  0:19                   ` Luke A. Guest
2018-05-25 13:16                     ` Simon Clubley
2018-05-25 13:29                       ` Lucretia
2018-05-25 17:08                         ` Simon Wright
2018-05-25 18:09                           ` Dan'l Miller
2018-05-25 16:25                     ` Jeffrey R. Carter
2018-05-25 17:01                       ` Dan'l Miller
2018-05-25  1:54                   ` Dan'l Miller
2018-05-25  2:56                     ` Luke A. Guest
2018-05-25  3:38                       ` Dan'l Miller
2018-05-25 11:12                         ` Brian Drummond
2018-05-24 20:50               ` Dan'l Miller
2018-05-24 20:56               ` Dan'l Miller
2018-05-24 21:00                 ` Dan'l Miller
2018-05-24 20:23             ` G. B.
2018-05-25  7:16             ` Chris M Moore
2018-05-25  8:09               ` Simon Wright
2018-05-25  8:28             ` Simon Wright
2018-05-25 20:02               ` Dan'l Miller
replies disabled

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