comp.lang.ada
 help / color / mirror / Atom feed
From: "Dan'l Miller" <optikos@verizon.net>
Subject: Re: LLVM and Ada
Date: Sat, 24 Mar 2018 19:17:25 -0700 (PDT)
Date: 2018-03-24T19:17:25-07:00	[thread overview]
Message-ID: <86abcb30-87f6-42bb-b28b-cf0033633132@googlegroups.com> (raw)
In-Reply-To: <87732f2a-4032-467d-b8c9-cfff2f1b670c@googlegroups.com>

On Friday, March 23, 2018 at 11:38:03 AM UTC-5, Shark8 wrote:
> Insofar as Byron is concerned:
> (a) I intend for the backend to be completely modularizable, and therefore am not married to any particular code-generator.
> (b) Nobody who wanted LLVM codegen has contributed to the code-base.

For multiple people or sponsoring companies (or even federal grant-writing agencies) to get involved in your work, you would need to have some sweet-smelling pollen to attract bees to your flower, so to speak.  If pluggability of different backends is the primary/sole definition of modularity in Byron, there seems currently to exist only 3 pluggable open-source backends that could conceivably serve as Byron's backend processor machine-code generation (i.e., GCC, LLVM, and OpenWatcom) and only a few bytecode backends (e.g., CLR, JVM).  Of these 5, only one seems compelling:  LLVM.

If you seek additional developers or sponsoring companies, then Byron needs to have a special sauce, because LLVM backend for GNAT seems to be a matter of an immense amount of debugging & fixing those bugs.  So why develop a new Ada compiler from scratch when the primary competitor simply needs to be finished?  Answer:  because Byron would have other modularities:  for example,
1) plug in different schools of thought on semantic-correctness checks:  Don't like Ada2020's “conservative“ (Draconian?) regime of tasking correctness?  Then plug in Ada2012's instead.  Or permit development of custom semantic-correctness checks on a per-company (e.g., DoD contractor) or per-project (e.g., this model of nuclear submarine) basis.  Or plug in Spark's.
2) Make language features themselves modular.  If Dmitry wants coroutines, then Dmitry simply writes a DLL that plugs into Byron that defines the syntax of coroutines according to Byron's syntax API or AST and that defines the semantics of coroutines according to Byron's semantics API.
3) Make the stages of compilation modular:  write a multi-stage compiler that embraces •generating• Ada source code that then smoothly compiles generated & human-authored Ada source code.
4) Make the AST modular to be bolted onto Clang's AST (to permit automated transformation of C++ or Objective-C code to Ada), onto Roslyn's AST (to permit automated transformation of C# code to Ada), onto Java's AST (to permit automated transformation of Java code to Ada), and so forth.

Or in other words, you need a better elevator speech.  You are almost there; pick a modularity problem that is interesting to you to solve in addition to pluggable backend.


  reply	other threads:[~2018-03-25  2:17 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-20 14:28 LLVM and Ada Vincent DIEMUNSCH
2016-10-20 18:20 ` Simon Clubley
2016-10-21  8:32   ` vincent.diemunsch
2016-10-21 10:33     ` Brian Drummond
2016-10-21 12:25       ` vincent.diemunsch
2016-10-22 12:31       ` Lucretia
2016-10-21 13:47     ` jparkerg000
2016-10-21 18:33       ` vincent.diemunsch
2016-10-22 12:51     ` Lucretia
2016-10-25 14:34       ` Vincent
2018-03-21 13:08         ` carlojpisani
2018-03-21 14:40           ` Dan'l Miller
2018-03-21 18:23             ` Bojan Bozovic
2018-03-21 18:57               ` Luke A. Guest
2018-03-22 13:57                 ` Dan'l Miller
2018-03-22 15:18                   ` Luke A. Guest
2018-03-22 17:01                     ` Dan'l Miller
2018-03-22 21:14                       ` Luke A. Guest
2018-03-22 21:28                         ` Dan'l Miller
2018-03-22 21:36                           ` Dan'l Miller
2018-03-22 22:14                             ` Luke A. Guest
2018-03-22 23:37                               ` Dan'l Miller
2018-03-22 23:50                                 ` Lucretia
2018-03-22 23:58                                   ` Dan'l Miller
2018-03-23  5:10                                     ` Bojan Bozovic
2018-03-23 14:25                                       ` Dan'l Miller
2018-03-23 14:38                                         ` Dan'l Miller
2018-03-23 16:38                                           ` Shark8
2018-03-25  2:17                                             ` Dan'l Miller [this message]
2018-03-25 16:56                                               ` Lucretia
2018-03-25 10:29                                             ` Bojan Bozovic
2018-03-25 11:01                                               ` Bojan Bozovic
2018-03-25 16:58                                               ` Lucretia
2018-03-23 16:43                                       ` Lucretia
2018-03-30 20:46                             ` Dan'l Miller
2018-03-22 12:22           ` Brian Drummond
2016-10-20 23:31 ` Dennis Lee Bieber
replies disabled

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