comp.lang.ada
 help / color / mirror / Atom feed
From: Diogenes <phathax0r@gmail.com>
Subject: Re: Runtime startup code for the GNAT Runtime...and a bit of humble pie.
Date: Tue, 26 Mar 2013 17:28:51 -0700 (PDT)
Date: 2013-03-26T17:28:51-07:00	[thread overview]
Message-ID: <b6ba45c4-3af6-464a-a588-308da20234d6@googlegroups.com> (raw)
In-Reply-To: <f906489d-27f3-4f13-b18b-e6d1336ae6c3@googlegroups.com>

On Tuesday, March 26, 2013 5:57:21 PM UTC-4, Shark8 wrote:
> 
> That's a very good question.
> 
> Sadly I have no answer for you -- I know Tasking and certain attributes, like 'Image, need it.

Naturally. Just need to build things up one step at a time. And build them well.

> 
> 
> That may be a bad call, if I'm reading you right.
> 
> 
> 
> Wouldn't it be best to write it first in a way so your [hardware] 
> dependencies are in one spot and secondly [and possibly separately] the 
> platform-dependence? {IOW, get it to a state where a no-OS body could be   
> supplied as well as an optimized-for-the-OS. Tying your runtime to pthreads 
> [POSIX] early on might be a rather bad idea... as you don't want to force 
> POSIX on the people who would want bare-metal access [or conceivably their 
> own OS].}

Actually that's exactly what I'm planning. First writing an arch/platform neutral layer that ISN'T tied to Posix. Underneath that I'll be using calls to clone(), futex(), etc.. for the Linux platform, BUT these should be easily replaceable for whatever arch/platform combo the developer is using.

> 
> > I'm suspecting I'll be limited to procedures and functions exclusively, but hey, at this level that's all I'll need to get started.
> 
> 
> 
> That's certainly a good thing.

The GNAT Runtime is SUPPOSED to be Neutral. It tries to separate the runtime into GNARL(The Independent part of the runtime) and GNULL(The platform specific part of the runtime.)
The problem is navigating the code. You have to check both the spec and the body. And there you have a real spaghetti factory going on. For example...

Ada.Exceptions withs System.Standard_Library
System.Standard_Library withs System.Memory
System.Memory(body) withs Ada.Exceptions

Ummm...yeah...how to unravel that one?

So I figure I might just be better off writing my own implementations of these things that have NO circular dependencies. One specific goal of my runtime is a clear hierarchy that progress directly from ada.ads out to the leaf packages(nodes). No circular deps. No package should depend on another package that depends on the first package.

This structure should take about %60 of the teeth gnashing out of the porting process.

  reply	other threads:[~2013-03-27  0:28 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-18 20:59 Runtime startup code for the GNAT Runtime...and a bit of humble pie Diogenes
2013-03-18 21:14 ` Robert A Duff
2013-03-19  0:07 ` Diogenes
2013-03-19 10:04   ` Brian Drummond
2013-03-19 12:51     ` Simon Clubley
2013-03-19 18:16       ` Ludovic Brenta
2013-03-20  1:05         ` Simon Clubley
2013-03-20 10:13           ` Mike H
2013-03-20 20:44             ` Ludovic Brenta
2013-03-19 21:43       ` Randy Brukardt
2013-03-20  8:24         ` Dmitry A. Kazakov
2013-03-21  0:16           ` Randy Brukardt
2013-03-21 19:08             ` Shark8
2013-03-21 23:34               ` Randy Brukardt
2013-03-22 16:39                 ` Jacob Sparre Andersen
2013-03-23 10:56                   ` Thomas Løcke
2013-03-19 23:13       ` Brian Drummond
2013-03-20  0:54         ` Simon Clubley
2013-03-20 11:50           ` Brian Drummond
2013-03-20 13:18             ` Simon Clubley
2013-03-26 11:04               ` Brian Drummond
2013-03-26 22:38                 ` Simon Clubley
2013-03-27 11:34                   ` Brian Drummond
2013-03-27 14:38                     ` Simon Clubley
2013-03-27 22:58                       ` Brian Drummond
2013-03-20 14:17           ` Lucretia
2013-03-20 15:00             ` Lucretia
2013-03-21 16:39             ` Brian Drummond
2013-03-23  4:35 ` Diogenes
2013-03-26 21:27 ` Diogenes
2013-03-26 21:57   ` Shark8
2013-03-27  0:28     ` Diogenes [this message]
2013-03-27  2:27       ` Shark8
2013-03-27 10:05       ` Brian Drummond
2013-03-27 12:23         ` Simon Wright
2013-03-27 19:07   ` Randy Brukardt
2013-03-27 21:10     ` Diogenes
replies disabled

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