comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Ada  "library only" compiler ?
Date: Fri, 20 Jul 2012 19:27:25 -0500
Date: 2012-07-20T19:27:25-05:00	[thread overview]
Message-ID: <juct1g$eho$1@munin.nbi.dk> (raw)
In-Reply-To: a6tvrmFdinU1@mid.individual.net

"Niklas Holsti" <niklas.holsti@tidorum.invalid> wrote in message 
news:a6tvrmFdinU1@mid.individual.net...
...
>> So again, I don't mean to be harsh but if we are always building on C
>> through the GNAT compilation progress would it be logical to decouple
>> the two to create a simple Ada "as library" compiler? It seems that
>> we can't open a file or get a command line argument without C
>> anyways.
>
> GNAT runs on operating systems (Windows, Linux, etc.) in which the 
> Application Programming Interface is defined in C. In order to open a file 
> under Linux, the application (here GNAT) *must* use the open() or fopen() 
> functions, which are defined in the API as C functions. Trying to open a 
> file using "low-level Ada" would be breaking the OS interface which is 
> obviously a bad idea (and probably impossible because an application does 
> not have the necessary low-level access rights for that).
>
> Likewise, when a GNAT-compiled Ada program runs on Windows or Linux and 
> accesses files, the GNAT-provided libraries (Ada.Text_IO etc.) must use 
> the Windows/Linux C-style I/O libraries, for the same reasons.

This isn't quite right. Janus/Ada contains 0% C code (there is not a single 
line of C in Janus/Ada, the only exception being the never released Sun OS 
compiler and some parts that Unisys built for their hardware). That's true 
even on Windows. The Windows Win32 API does not require using any C code; it 
can be accessed directly. (Even the calling convention is not "C", it's 
"StdCall" which originally was "Pascal" until Microsoft got rid of their 
Pascal compiler.)

It's true that the Win32 API is defined in C, but an Ada system can 
interface directly to it without using any intermediate C code.

(Truth-in-advertising statement: Janus/Ada does link with the C runtime; we 
only use that for program initialization, as Microsoft does not document [at 
least the last time I looked] the state that a raw executable starts in. One 
thing is clear: that initial state does not include Standard_Input and 
Standard_Output, which makes it hard to do much! Anyway, we don't use an C 
APIs in our executable files. I'd (optionally) dispense with the C runtime 
if I knew how to do the needed initialization.)

Janus/Ada is written solely in Ada; the Janus/Ada runtime is about 95% in 
Ada and 5% in assembler.

                                           Randy.


                                                   Randy.





  parent reply	other threads:[~2012-07-26 16:37 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-20 20:05 Ada "library only" compiler ? Patrick
2012-07-20 21:11 ` Niklas Holsti
2012-07-20 21:47   ` Ludovic Brenta
2012-07-20 22:25   ` Peter C. Chapin
2012-07-20 22:51     ` Ludovic Brenta
2012-07-21  0:32       ` Randy Brukardt
2012-07-21 12:39         ` Pascal Obry
2012-07-22  4:59           ` Shark8
2012-07-22  7:04             ` Pascal Obry
2012-07-22 10:17           ` Florian Weimer
2012-07-24  1:54           ` Randy Brukardt
2012-07-24 16:50             ` Pascal Obry
2012-07-24 18:01               ` Vasiliy Molostov
2012-07-24 21:30                 ` Pascal Obry
2012-07-25  6:33                   ` Vasiliy Molostov
2012-07-25 23:44                   ` sbelmont700
2012-07-25 23:34               ` Randy Brukardt
2012-07-21 11:05     ` Niklas Holsti
2012-07-20 23:30   ` Patrick
2012-07-21 16:47     ` Niklas Holsti
2012-07-21 17:47       ` Patrick
2012-07-21 19:22         ` Simon Wright
2012-07-21 19:38           ` Patrick
2012-07-21 22:53         ` Brian Drummond
2012-07-22  3:25           ` Patrick
2012-07-22 17:54             ` Brian Drummond
2012-07-22 17:59               ` Brian Drummond
2012-07-22 18:44                 ` Patrick
2012-07-22 21:03                   ` Brian Drummond
2012-07-25 19:10                   ` J-P. Rosen
     [not found]               ` <m2a9yrsbf5.fsf@nidhoggr.home>
     [not found]                 ` <jui36a$hs0$1@dont-email.me>
2012-07-23 10:10                   ` Simon Wright
2012-07-24 10:55                     ` Brian Drummond
2012-07-22 21:25             ` Niklas Holsti
2012-07-22 22:00               ` Patrick
2012-07-22 21:18         ` Niklas Holsti
2012-07-21  0:27   ` Randy Brukardt [this message]
2012-07-21  7:36     ` Dmitry A. Kazakov
2012-07-21 13:31     ` Niklas Holsti
     [not found]   ` <olpj085ii9fpifpligh6jerghoaieiim1d@invalid.netcom.com>
2012-07-20 23:38     ` Patrick
2012-07-21 13:12     ` Niklas Holsti
2012-07-23  5:02 ` Miles Bader
replies disabled

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