comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Implementing an Ada compiler and libraries.
Date: Thu, 10 May 2007 09:59:09 +0200
Date: 2007-05-10T09:57:27+02:00	[thread overview]
Message-ID: <8cu67r7wcdn7$.18rtn6g7506w2$.dlg@40tude.net> (raw)
In-Reply-To: 1178731280.075981.23040@u30g2000hsc.googlegroups.com

On 9 May 2007 10:21:20 -0700, Lucretia wrote:

> On May 9, 5:51 pm, "Dmitry A. Kazakov" <mail...@dmitry-kazakov.de>
> wrote:
>>> But I'm interested in seeing how I can get the compiler to not have to
>>> reparse other source files (when with'd) in order to compile a unit.
>>
>> Why should it? Certainly, you would have some intermediate representation
>> which includes symbolic tables and other stuff the compiler creates after
>> semantic analysis before code generation. A compiled library unit will have
>> this stored in some appropriate format.
> 
> True, but is it possible to include dependency info within the object
> itself?

Sure, it is just another "with". Each "with" loads (maps into the memory)
the corresponding precompiled unit (compilation context). Some minor
relocation stuff will be needed, checksums and time stamping as Gautier has
mentioned. The symbolic tables (actually contexts) can be organized as a
tree-stack to reduce loading overhead. "Use" plants a tree in the forest. I
did such thing once. I guess it should make table look-ups slower. So the
net effect on the compilation speed is unclear, before you actually build
the thing.

>> An interesting issue is cross-platform library units, I was playing with
>> this idea, but came to no conclusion.
> 
> LLVM would be capable of this.

Then is not a cross-platform, I mean the only platform here is the VM.
Otherwise, it could be doable. Though many static things which are
platform-dependent will cease to be compile-time static. So you will be
unable to have certain things fully precompiled.

> Why? Are you saying that it would be better to store libraries in IR
> rather than binary form?

IR = infra red?

>>> I don't want to have to have
>>> tons of source files lying around for a static/shared library, I
>>> honestly don't see the need. Surely, it's possible to build a compiler
>>> that can get the information it needs from the library itself (or at
>>> least a companion library rather than a ton of different ALI files)?
>>
>> Or a database, for that matter...
> 
> Like the old Ada library?

It wasn't that bad. DEC Ada had a library, if I correctly remember. With an
integrated source control system it might become more attractive than the
GNAT model. If I designed Ada tool-chain (the compiler is only a part of),
I would probably choose this.

> I was actually thinking, if I couldn't embed
> the other information required by the compiler into the final object,
> then a separate "lib" containing only this informaton would be
> necessary.

You mean symbolic info for the debugger?

>>> Now, I'd really like to hear from people who have implemented an Ada
>>> compiler and people who have used other compilers (I've only used
>>> GNAT). Basically, I'm interested in how other implementations handle
>>> the library. Note that there are 2 ideas of library here:
>>
>>> 1) The standard Ada library.
>>> 2) Link/shared libraries found on operating systems.
>>
>> I remember RSX-11 in which macro and object libraries were handled by the
>> same librarian tool.
> 
> RSX-11 is before my time, got any more info on this?

It was too primitive to be used for Ada. But the idea is basically same.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  reply	other threads:[~2007-05-10  7:59 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-09 14:37 Implementing an Ada compiler and libraries Lucretia
2007-05-09 16:51 ` Dmitry A. Kazakov
2007-05-09 17:21   ` Lucretia
2007-05-10  7:59     ` Dmitry A. Kazakov [this message]
2007-05-10  8:51       ` Duncan Sands
2007-05-10 17:39       ` Lucretia
2007-05-10 18:06         ` Lucretia
2007-05-10 19:30           ` Dmitry A. Kazakov
2007-05-11  7:14           ` Gautier
2007-05-11 17:39             ` Lucretia
2007-05-11 17:43               ` Lucretia
2007-05-11 18:20                 ` Robert A Duff
2007-05-11 18:49                   ` Lucretia
2007-05-11 20:34                     ` Georg Bauhaus
2007-05-11 22:37                       ` Lucretia
2007-05-11 22:06                     ` Robert A Duff
2007-05-11 22:41                       ` Lucretia
2007-05-16 19:40                 ` Randy Brukardt
2007-05-09 20:48 ` Robert A Duff
2007-05-10  3:38   ` Lucretia
2007-05-16 19:58   ` Randy Brukardt
2007-05-09 21:15 ` Gautier
2007-05-10  3:39   ` Lucretia
2007-05-10 15:34   ` Stefan Bellon
2007-05-10 16:25     ` Jean-Pierre Rosen
2007-05-10 17:07       ` Ludovic Brenta
2007-05-10 17:14         ` Stefan Bellon
2007-05-10 16:37     ` Ludovic Brenta
2007-05-10 16:43       ` Stefan Bellon
2007-05-10 16:49         ` Ludovic Brenta
2007-05-10 17:02           ` Stefan Bellon
2007-05-10 19:57             ` Jacob Sparre Andersen
2007-05-10 20:31             ` Simon Wright
2007-05-10 17:37       ` Pascal Obry
2007-05-11 10:09         ` Ludovic Brenta
2007-05-11 16:33           ` Pascal Obry
2007-05-10 17:36     ` Pascal Obry
2007-05-10 17:42     ` Lucretia
2007-05-10 17:34 ` Pascal Obry
2007-05-10 17:48   ` Lucretia
2007-05-10 20:01   ` Duncan Sands
2007-05-10 21:00     ` Pascal Obry
2007-05-11 11:04       ` Duncan Sands
2007-05-13 12:03         ` Ludovic Brenta
2007-05-10 21:00     ` Pascal Obry
2007-05-11  8:39   ` Georg Bauhaus
replies disabled

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