comp.lang.ada
 help / color / mirror / Atom feed
* Ravenscar-compliant bounded buffer
@ 2007-09-04 13:53 Maciej Sobczak
  2007-09-05  3:00 ` Steve
  0 siblings, 1 reply; 49+ messages in thread
From: Maciej Sobczak @ 2007-09-04 13:53 UTC (permalink / raw)


In one of my previous posts I have criticized example 12 from the
Ravenscar document.
It makes sense to criticize constructively, I think. :-)

-- bounded_buffer.ads
package Bounded_Buffer is

   type Buffer_Type is limited private;

   procedure Put (Buffer : in out Buffer_Type; Item : in Integer);
   procedure Get (Buffer : in out Buffer_Type; Item : out Integer);

private

   protected type Binary_Semaphore (Initial_State : Boolean) is
      entry Acquire;
      procedure Release;
   private
      Available : Boolean := Initial_State;
   end Binary_Semaphore;

   type Buffer_Type is limited record
      Storage : Integer;
      Available_For_Reading : Binary_Semaphore (Initial_State =>
False);
      Available_For_Writing : Binary_Semaphore (Initial_State =>
True);
   end record;

end Bounded_Buffer;

-- bounded_buffer.adb
package body Bounded_Buffer is

   procedure Put (Buffer : in out Buffer_Type; Item : in Integer) is
   begin
      Buffer.Available_For_Writing.Acquire;
      Buffer.Storage := Item;
      Buffer.Available_For_Reading.Release;
   end Put;

   procedure Get (Buffer : in out Buffer_Type; Item : out Integer) is
   begin
      Buffer.Available_For_Reading.Acquire;
      Item := Buffer.Storage;
      Buffer.Available_For_Writing.Release;
   end Get;

   protected body Binary_Semaphore is

      entry Acquire when Available is
      begin
         Available := False;
      end Acquire;

      procedure Release is
      begin
         Available := True;
      end Release;

   end Binary_Semaphore;

end Bounded_Buffer;

-- test.adb
with Ada.Text_IO;
with Bounded_Buffer;

procedure Test is

   Buffer : Bounded_Buffer.Buffer_Type;

   task Writer;
   task body Writer is
   begin
      for I in 1 .. 50 loop
         Bounded_Buffer.Put (Buffer, I);
      end loop;

      Bounded_Buffer.Put (Buffer, 0);
   end Writer;

   task Reader;
   task body Reader is
      I : Integer;
   begin
      loop
         Bounded_Buffer.Get (Buffer, I);
         exit when I = 0;
         Ada.Text_IO.Put (Integer'Image (I));
         Ada.Text_IO.New_Line;
      end loop;
   end Reader;

begin
   null;
end Test;


I would like to ask you to comment/criticize on the above.
(The test.adb driver is provided just to sanity-check the rest.)

Note that in this example the shared data (Storage component of the
Buffer object) is accessed directly from concurrent subprograms.
Protecting this access is not necessary on the basis that binary
semaphores provide necessary exclusion and signalling (ordering). With
buffer of capacity > 1 the storage array and top/bottom indices would
be encapsulated by another protected object.

--
Maciej Sobczak
http://www.msobczak.com/




^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-04 13:53 Ravenscar-compliant bounded buffer Maciej Sobczak
@ 2007-09-05  3:00 ` Steve
  2007-09-05  7:38   ` Maciej Sobczak
  2007-09-05  7:46   ` Dmitry A. Kazakov
  0 siblings, 2 replies; 49+ messages in thread
From: Steve @ 2007-09-05  3:00 UTC (permalink / raw)


While I don't know much about the Ravenscar profile (other than what it is) 
I am famialar with the use of protected types.

The sample code is a good illustration of "abstraction inversion".  I know 
this because I posted similar code on this group several years ago and that 
is how it was described.

The code uses a high level abstraction "protected type" to create a low leve 
abstraction "Binary_Semaphore".  The code uses two semaphores to restrict 
access to the bounded buffer.  In this simple example it is easy to follow, 
but in a more complex example pairing Acquire's and Release's can be a 
chore.

Consider an alternate implementation:

-- bounded_buffer.ads
package Bounded_Buffer is

   type Buffer_Type is limited private;

   procedure Put (Buffer : in out Buffer_Type; Item : in Integer);
   procedure Get (Buffer : in out Buffer_Type; Item : out Integer);

private
   protected type Exclusive_Access is
      entry Put (Buffer : in out Buffer_Type; Item : in Integer);
      entry Get (Buffer : in out Buffer_Type; Item : out Integer);
   private
      Available_For_Reading : Boolean := False;
      Available_For_Writing : Boolean := True;
   end Exclusive_Access;

   type Buffer_Type is limited record
      Storage : Integer;
      Protected_Access : Exclusive_Access;
   end record;

end Bounded_Buffer;

-- bounded_buffer.adb
package body Bounded_Buffer is

   protected body Exclusive_Access is
      entry Put (Buffer : in out Buffer_Type; Item : in Integer) when 
Available_For_Writing is
      begin
         Buffer.Storage := Item;
         Available_For_Reading := True;
         Available_For_Writing := False;
      end Put;
      entry Get (Buffer : in out Buffer_Type; Item : out Integer) when 
Available_For_Reading is
      begin
         Item := Buffer.Storage;
         Available_For_Reading := False;
         Available_For_Writing := True;
      end Get;
   end Exclusive_Access;

   procedure Put (Buffer : in out Buffer_Type; Item : in Integer) is
   begin
      Buffer.Protected_Access.Put( Buffer, Item );
   end Put;

   procedure Get (Buffer : in out Buffer_Type; Item : out Integer) is
   begin
      Buffer.Protected_Access.Get( Buffer, Item );
   end Get;

end Bounded_Buffer;

----------------------------------
Here a single Exclusive_Access protected type is used to restrict access to 
the buffer.
It avoids the situation that you will run into with "who's not releasing the 
semaphore".

BTW: I apologize for my choice of type and variable names, I didn't spend 
much time thinking about them.

Regards,
Steve
(The Duck)

"Maciej Sobczak" <see.my.homepage@gmail.com> wrote in message 
news:1188914005.607732.277400@57g2000hsv.googlegroups.com...
> In one of my previous posts I have criticized example 12 from the
> Ravenscar document.
> It makes sense to criticize constructively, I think. :-)
>
> -- bounded_buffer.ads
> package Bounded_Buffer is
>
>   type Buffer_Type is limited private;
>
>   procedure Put (Buffer : in out Buffer_Type; Item : in Integer);
>   procedure Get (Buffer : in out Buffer_Type; Item : out Integer);
>
> private
>
>   protected type Binary_Semaphore (Initial_State : Boolean) is
>      entry Acquire;
>      procedure Release;
>   private
>      Available : Boolean := Initial_State;
>   end Binary_Semaphore;
>
>   type Buffer_Type is limited record
>      Storage : Integer;
>      Available_For_Reading : Binary_Semaphore (Initial_State =>
> False);
>      Available_For_Writing : Binary_Semaphore (Initial_State =>
> True);
>   end record;
>
> end Bounded_Buffer;
>
> -- bounded_buffer.adb
> package body Bounded_Buffer is
>
>   procedure Put (Buffer : in out Buffer_Type; Item : in Integer) is
>   begin
>      Buffer.Available_For_Writing.Acquire;
>      Buffer.Storage := Item;
>      Buffer.Available_For_Reading.Release;
>   end Put;
>
>   procedure Get (Buffer : in out Buffer_Type; Item : out Integer) is
>   begin
>      Buffer.Available_For_Reading.Acquire;
>      Item := Buffer.Storage;
>      Buffer.Available_For_Writing.Release;
>   end Get;
>
>   protected body Binary_Semaphore is
>
>      entry Acquire when Available is
>      begin
>         Available := False;
>      end Acquire;
>
>      procedure Release is
>      begin
>         Available := True;
>      end Release;
>
>   end Binary_Semaphore;
>
> end Bounded_Buffer;
>
> -- test.adb
> with Ada.Text_IO;
> with Bounded_Buffer;
>
> procedure Test is
>
>   Buffer : Bounded_Buffer.Buffer_Type;
>
>   task Writer;
>   task body Writer is
>   begin
>      for I in 1 .. 50 loop
>         Bounded_Buffer.Put (Buffer, I);
>      end loop;
>
>      Bounded_Buffer.Put (Buffer, 0);
>   end Writer;
>
>   task Reader;
>   task body Reader is
>      I : Integer;
>   begin
>      loop
>         Bounded_Buffer.Get (Buffer, I);
>         exit when I = 0;
>         Ada.Text_IO.Put (Integer'Image (I));
>         Ada.Text_IO.New_Line;
>      end loop;
>   end Reader;
>
> begin
>   null;
> end Test;
>
>
> I would like to ask you to comment/criticize on the above.
> (The test.adb driver is provided just to sanity-check the rest.)
>
> Note that in this example the shared data (Storage component of the
> Buffer object) is accessed directly from concurrent subprograms.
> Protecting this access is not necessary on the basis that binary
> semaphores provide necessary exclusion and signalling (ordering). With
> buffer of capacity > 1 the storage array and top/bottom indices would
> be encapsulated by another protected object.
>
> --
> Maciej Sobczak
> http://www.msobczak.com/
> 





^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-05  3:00 ` Steve
@ 2007-09-05  7:38   ` Maciej Sobczak
  2007-09-06  4:04     ` Steve
  2007-09-05  7:46   ` Dmitry A. Kazakov
  1 sibling, 1 reply; 49+ messages in thread
From: Maciej Sobczak @ 2007-09-05  7:38 UTC (permalink / raw)


On 5 Wrz, 05:00, "Steve" <nospam_steve...@comcast.net> wrote:

> While I don't know much about the Ravenscar profile

:-)

In particular, one of the constituents of the Ravenscar profile is
this:

pragma Restrictions (Max_Protected_Entries => 1);

which explains the whole issue.

Bounded buffer is obvious to implement without the above restriction
and I completely agree that using two separate protected objects is an
"abstraction inversion".
The problem is that to be compliant with the Ravenscar profile a
protected type can have *at most one entry* - the rest is really a
question about the "correct hack" that has to be applied for typical
shared resource patterns.

I argue that my hack is better (more readable and easier to analyze)
than the original hack presented in example 12 of the Ravenscar
document.

I will not argue that any of these hacks is better than the
straightforward implementation with two entries, but I can accept the
statement that this is the price for having a uniform convention that
pays off in general, although not necessarily in this particular case.

Still, since I'm new to Ada, I welcome any comment that can help me
understand it better.

--
Maciej Sobczak
http://www.msobczak.com/




^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-05  3:00 ` Steve
  2007-09-05  7:38   ` Maciej Sobczak
@ 2007-09-05  7:46   ` Dmitry A. Kazakov
  2007-09-05  8:17     ` brodax
  2007-09-05  8:30     ` Jean-Pierre Rosen
  1 sibling, 2 replies; 49+ messages in thread
From: Dmitry A. Kazakov @ 2007-09-05  7:46 UTC (permalink / raw)


On Tue, 4 Sep 2007 20:00:13 -0700, Steve wrote:

> While I don't know much about the Ravenscar profile (other than what it is) 
> I am famialar with the use of protected types.
> 
> The sample code is a good illustration of "abstraction inversion".  I know 
> this because I posted similar code on this group several years ago and that 
> is how it was described.
> 
> The code uses a high level abstraction "protected type" to create a low leve 
> abstraction "Binary_Semaphore".  The code uses two semaphores to restrict 
> access to the bounded buffer.  In this simple example it is easy to follow, 
> but in a more complex example pairing Acquire's and Release's can be a 
> chore.

That is because of the Ravenscar limitation of one entry per protected
object. The solution Maciej presented is based on splitting one protected
object of two entries into two, each controlling access to its end of FIFO.
Protected objects don't compose so the result. Worse it will be with FIFO
size > 1. 

Here is a solution based on event + requeue rather than mutexes. Requeue is
implicit of course, because Ravenscar forbids requeue statements.

pragma Profile (Ravenscar);

package Bounded_Buffer is
   subtype Multiple is Positive range 2..Positive'Last;
   type Buffer_Type (Size : Multiple) is limited private;

   procedure Get (Buffer : in out Buffer_Type; Item : out Integer);
   procedure Put (Buffer : in out Buffer_Type; Item : Integer);

private
   type Storage_Data is array (Positive range <>) of Integer;

   protected type Buffer_Type (Size : Multiple) is
      entry Wait;
      procedure Get (Item : out Integer; Success : out Boolean);
      procedure Put (Item : Integer; Success : out Boolean);
   private
      Storage   : Storage_Data (1..Size);
      First_In  : Positive := 1;
      First_Out : Positive := 1;
      Empty     : Boolean  := True;
      Free      : Boolean  := False; -- In /= Out explicitly
   end Buffer_Type;
   
end Bounded_Buffer;

Notes:

1. First_In /= First_Out is a complex barrier, so we need it explicitly as
Free.

2. With buffer size 1 this implementation would do busy waiting, for this
reason the minimal buffer size is 2.

package body Bounded_Buffer is

   protected body Buffer_Type is

      entry Wait when Free is
      begin
         null;
      end Wait;

      procedure Put (Item : in Integer; Success : out Boolean) is
      begin
         if Free or else Empty then
            Storage (First_Out) := Item;
            if First_Out = Size then
               First_Out := 1;
            else
               First_Out := First_Out + 1;
            end if;
            Free    := First_Out /= First_In;
            Empty   := False;
            Success := True;
         else
            Success := False;
         end if;
      end Put;

      procedure Get (Item : out Integer; Success : out Boolean) is
      begin
         if Free or else not Empty then
            Item := Storage (First_In);
            if First_In = Size then
               First_In := 1;
            else
               First_In := First_In + 1;
            end if;
            Free    := First_Out /= First_In;
            Empty   := not Free;
            Success := True;
         else
            Success := False;
         end if;
      end Get;
   end Buffer_Type;

   procedure Put (Buffer : in out Buffer_Type; Item : in Integer) is
      Success : Boolean;
   begin
      loop
         Buffer.Put (Item, Success);
         exit when Success;
         Buffer.Wait;
      end loop;
   end Put;
   
   procedure Get (Buffer : in out Buffer_Type; Item : out Integer) is
      Success : Boolean;
   begin
      loop
         Buffer.Get (Item, Success);
         exit when Success;
         Buffer.Wait;
      end loop;
   end Get;

end Bounded_Buffer;

-----------------------
P.S. As a general note. This object might interesting as an exercise, but
not likely needed. In a real application it would be strange to expect
multiple consumers taking integers out of buffer in some unpredictable
order. Normally, it is so that either there is one producer and one or many
consumers (like in distribution of jobs), or else there is many producers
and one consumer (like writing to log file). This might sufficiently
simplify the design. Yet another variant is multiple consumers receiving
whole waveform of integers put to the buffer (broadcasting). This would be
more difficult.

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



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-05  7:46   ` Dmitry A. Kazakov
@ 2007-09-05  8:17     ` brodax
  2007-09-05  8:30     ` Jean-Pierre Rosen
  1 sibling, 0 replies; 49+ messages in thread
From: brodax @ 2007-09-05  8:17 UTC (permalink / raw)


As I wrote in a previous post, I would suggest always thinking in
terms of building blocks: sporadic entities, cyclic entities and
(entry-less) protected entities. By following this approach you have
several main advantages: for example the system is *practically*
amenable to static timing analysis.

Just to make an example of a sporadic building block:

generic
   with procedure Sporadic_Operation;
   Task_Priority : Priority;
   --minimum interarrival time
   MAT : Positive;
   Max_Pending : Positive;
package Sporadic_Entity is

   -- Invoking this procedure release the sporadic task
   procedure Release;

private

   protected type Protocol is
      entry Wait(Release_Time : out Time);
      procedure Release;
   private
      Barrier : Boolean := False;
      Pending : Integer := 0;
   end Protocol;

   task type Thread(P : Priority; Interval : Positive) is
     pragma Priority(P);
   end Thread;

   T : Thread(Task_Priority, MAT);

end Sporadic_Entity;


package body Sporadic_Entity is

   P : Protocol;

   -------------
   -- Release --
   -------------

   procedure Release is
   begin
      P.Release;
   end Release;

   --------------
   -- Protocol --
   --------------

   protected body Protocol is

      procedure Update_Barrier is
      begin
         Barrier := (Pending > 0);
      end Update_Barrier;

      ----------
      -- Wait --
      ----------

      entry Wait(Release_Time : out Time) when Barrier is
      begin
         Release_Time := Clock;
         Pending := Pending - 1;
         Update_Barrier;
      end Wait;

      -------------
      -- Release --
      -------------

      procedure Release is
      begin
         if Pending < Max_Pending then
            Pending := Pending + 1;
            Update_Barrier;
         end if;
      end Release;

   end Protocol;

   ------------
   -- Thread --
   ------------

   task body Thread is
      Next_Time : Time := System_Release_Time;
      --  System_Release_Time is a system-wide constant specifying the
release time of all
      --+ tasks in the system
   begin
      delay until Next_Time;
      loop
         P.Wait(Next_Time);
         Sporadic_Operation;
         Next_Time := Next_Time + Milliseconds(MAT);
         delay until Next_Time;
      end loop;
   end Thread;

end Sporadic_Entity;

Basically the sporadic building block let you instantiate a Ravenscar
compliant sporadic task enforcing a minimum interarrival time. Please
note that with this pattern you are sure by construction that at most
1 task is queued on an entry. The pattern can be easily extended to
include parameters for the sporadic operation (just put a queue where
parameters are stored inside Protocol). The Reader/Writer are
naturally sporadic, as they are release by an event (the buffer is non-
empty/non-full). The Buffer is an entry-less protected object. Then
you can put the logic for the release of the Reader/Writer inside the
buffer: for example, every time the Writer writes a value, it may
release the Reader (by invoking Reader.Release); and the Writer is
released either by writing on a non-full (after writing) buffer or by
the Reader when it reads on the last position of the buffer (the state
of the buffer changes from full to non-full).




^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-05  7:46   ` Dmitry A. Kazakov
  2007-09-05  8:17     ` brodax
@ 2007-09-05  8:30     ` Jean-Pierre Rosen
  1 sibling, 0 replies; 49+ messages in thread
From: Jean-Pierre Rosen @ 2007-09-05  8:30 UTC (permalink / raw)


Dmitry A. Kazakov a �crit :
> P.S. As a general note. This object might interesting as an exercise, but
> not likely needed. In a real application it would be strange to expect
> multiple consumers taking integers out of buffer in some unpredictable
> order. Normally, it is so that either there is one producer and one or many
> consumers (like in distribution of jobs), or else there is many producers
> and one consumer (like writing to log file). This might sufficiently
> simplify the design. Yet another variant is multiple consumers receiving
> whole waveform of integers put to the buffer (broadcasting). This would be
> more difficult.
> 
Anyway, your solution is Ravenscar compliant only if there is exactly 
one producer and one consumer, otherwise there is a possibility of 
having more than one task on the entry queue.

For those who might wonder:
The limitation on only one task per queue is intended to guarantee 
bounded waiting time. Any solution that tries to work around the 
Ravenscar rules in order to have longer queues will violate this 
restriction at some point, or have to manage explicit lists - thus 
violating the spirit of the profile!

-- 
---------------------------------------------------------
            J-P. Rosen (rosen@adalog.fr)
Visit Adalog's web site at http://www.adalog.fr



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-05  7:38   ` Maciej Sobczak
@ 2007-09-06  4:04     ` Steve
  2007-09-06 14:06       ` Robert A Duff
  0 siblings, 1 reply; 49+ messages in thread
From: Steve @ 2007-09-06  4:04 UTC (permalink / raw)


"Maciej Sobczak" <see.my.homepage@gmail.com> wrote in message 
news:1188977891.197536.21660@r29g2000hsg.googlegroups.com...
> On 5 Wrz, 05:00, "Steve" <nospam_steve...@comcast.net> wrote:
>
>> While I don't know much about the Ravenscar profile
>
> :-)
>
> In particular, one of the constituents of the Ravenscar profile is
> this:
>
> pragma Restrictions (Max_Protected_Entries => 1);
>
> which explains the whole issue.
>
> Bounded buffer is obvious to implement without the above restriction
> and I completely agree that using two separate protected objects is an
> "abstraction inversion".
> The problem is that to be compliant with the Ravenscar profile a
> protected type can have *at most one entry* - the rest is really a
> question about the "correct hack" that has to be applied for typical
> shared resource patterns.
>

Very interesting.  A profile that promotes obscurity.

> I argue that my hack is better (more readable and easier to analyze)
> than the original hack presented in example 12 of the Ravenscar
> document.
>

Given the restriction, I found your example easy to follow.  I don't know 
where to find the Ravenscar document for comparison.

> I will not argue that any of these hacks is better than the
> straightforward implementation with two entries, but I can accept the
> statement that this is the price for having a uniform convention that
> pays off in general, although not necessarily in this particular case.
>

Ada 83 was restrictive in ways that were found to be overly restrictive for 
practical application.  Some of these retrictions were relaxed with Ada 95. 
Perhaps the next round of Ravenscar will do the same.

While I am not expert on protected types, it is my experience that the 
predictability of a protected type has more to do with the complexity than 
the number of entries.  Of course that doesn't matter if you must follow 
Ravenscar.

Regards,
Steve

> Still, since I'm new to Ada, I welcome any comment that can help me
> understand it better.
>
> --
> Maciej Sobczak
> http://www.msobczak.com/
> 





^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-06  4:04     ` Steve
@ 2007-09-06 14:06       ` Robert A Duff
  2007-09-06 15:36         ` Dmitry A. Kazakov
                           ` (2 more replies)
  0 siblings, 3 replies; 49+ messages in thread
From: Robert A Duff @ 2007-09-06 14:06 UTC (permalink / raw)


"Steve" <nospam_steved94@comcast.net> writes:

> Given the restriction, I found your example easy to follow.  I don't know 
> where to find the Ravenscar document for comparison.

The Ravenscar profile is documented in section D.13.1 of the latest Ada
Reference Manual.

> Ada 83 was restrictive in ways that were found to be overly restrictive for 
> practical application.  Some of these retrictions were relaxed with Ada 95. 
> Perhaps the next round of Ravenscar will do the same.

I don't see any need to relax Ravenscar, because if you want to use
features not allowed by Ravenscar, you don't have to restrict yourself
to Ravenscar.  It's a free choice.  I suppose we could argue about
whether the exact set of restrictions is appropriate, but the whole
point is to be restrictive, so the run-time system can be simplified (as
compared to a run-time system that supports full Ada).

- Bob



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-06 14:06       ` Robert A Duff
@ 2007-09-06 15:36         ` Dmitry A. Kazakov
  2007-09-07  2:36           ` Robert A Duff
  2007-09-06 21:13         ` Maciej Sobczak
  2007-09-07  1:38         ` Steve
  2 siblings, 1 reply; 49+ messages in thread
From: Dmitry A. Kazakov @ 2007-09-06 15:36 UTC (permalink / raw)


On Thu, 06 Sep 2007 10:06:51 -0400, Robert A Duff wrote:

> I suppose we could argue about
> whether the exact set of restrictions is appropriate, but the whole
> point is to be restrictive, so the run-time system can be simplified (as
> compared to a run-time system that supports full Ada).

Aha, to ease your life. Others might have thought it was for us, poor
users... (:-))

No, seriously, the point about abstraction inversion stands. And other
posts about tasks classification into periodic, sporadic etc only support
it. So the question is whether these are hard limits or just the current
state of the art.

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



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-06 14:06       ` Robert A Duff
  2007-09-06 15:36         ` Dmitry A. Kazakov
@ 2007-09-06 21:13         ` Maciej Sobczak
  2007-09-07  2:41           ` Robert A Duff
  2007-09-07 11:56           ` anon
  2007-09-07  1:38         ` Steve
  2 siblings, 2 replies; 49+ messages in thread
From: Maciej Sobczak @ 2007-09-06 21:13 UTC (permalink / raw)


On 6 Wrz, 16:06, Robert A Duff <bobd...@shell01.TheWorld.com> wrote:

> the whole
> point is to be restrictive, so the run-time system can be simplified (as
> compared to a run-time system that supports full Ada).

Does GNAT provide somewhat simpler (smaller? faster?) runtime for
programs that declare compliance with the Ravenscar profile?
I'm not asking about the high-integrity edition of GNAT, but the
"normal" one.

--
Maciej Sobczak
http://www.msobczak.com/




^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-06 14:06       ` Robert A Duff
  2007-09-06 15:36         ` Dmitry A. Kazakov
  2007-09-06 21:13         ` Maciej Sobczak
@ 2007-09-07  1:38         ` Steve
  2007-09-07  2:47           ` Robert A Duff
  2 siblings, 1 reply; 49+ messages in thread
From: Steve @ 2007-09-07  1:38 UTC (permalink / raw)


"Robert A Duff" <bobduff@shell01.TheWorld.com> wrote in message 
news:wccps0vkhvo.fsf@shell01.TheWorld.com...
> "Steve" <nospam_steved94@comcast.net> writes:
>
>> Given the restriction, I found your example easy to follow.  I don't know
>> where to find the Ravenscar document for comparison.
>
> The Ravenscar profile is documented in section D.13.1 of the latest Ada
> Reference Manual.
>

Unless I'm looking the wrong place, section D.13.1 of the ARM (on AdaIC) 
just lists the restrictions.  The original post was asking about the clarity 
of an example in a specific document.

>> Ada 83 was restrictive in ways that were found to be overly restrictive 
>> for
>> practical application.  Some of these retrictions were relaxed with Ada 
>> 95.
>> Perhaps the next round of Ravenscar will do the same.
>
> I don't see any need to relax Ravenscar, because if you want to use
> features not allowed by Ravenscar, you don't have to restrict yourself
> to Ravenscar.  It's a free choice.  I suppose we could argue about
> whether the exact set of restrictions is appropriate, but the whole
> point is to be restrictive, so the run-time system can be simplified (as
> compared to a run-time system that supports full Ada).

The choice of the exact set of restrictions that are appropriate is what may 
in practice make sense to change.  After some experience with the 
restrictions it may be found that a minor modification to one of the 
restrictions may reduce complexity of implementations.

Regards,
Steve

>
> - Bob 





^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-06 15:36         ` Dmitry A. Kazakov
@ 2007-09-07  2:36           ` Robert A Duff
  0 siblings, 0 replies; 49+ messages in thread
From: Robert A Duff @ 2007-09-07  2:36 UTC (permalink / raw)


"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:

> On Thu, 06 Sep 2007 10:06:51 -0400, Robert A Duff wrote:
>
>> I suppose we could argue about
>> whether the exact set of restrictions is appropriate, but the whole
>> point is to be restrictive, so the run-time system can be simplified (as
>> compared to a run-time system that supports full Ada).
>
> Aha, to ease your life. Others might have thought it was for us, poor
> users... (:-))

Yeah, I see the smiley.  But seriously, simpler run-time system means
easier to verify that it does what's intended.  I suppose that's good
for users of it, unless they need reimplement all of Ada "by hand" on
top of the supposedly simpler run-time system.

> No, seriously, the point about abstraction inversion stands.

Agreed.  As I said, it's a choice.  If you really need to put multiple
tasks on entry queues, then you probably don't want Ravenscar.  If you
can easily live with the limitations of Ravenscar, you might benefit
from the simplicity.

>...And other
> posts about tasks classification into periodic, sporadic etc only support
> it. So the question is whether these are hard limits or just the current
> state of the art.

- Bob



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-06 21:13         ` Maciej Sobczak
@ 2007-09-07  2:41           ` Robert A Duff
  2007-09-07 11:56           ` anon
  1 sibling, 0 replies; 49+ messages in thread
From: Robert A Duff @ 2007-09-07  2:41 UTC (permalink / raw)


Maciej Sobczak <see.my.homepage@gmail.com> writes:

> On 6 Wrz, 16:06, Robert A Duff <bobd...@shell01.TheWorld.com> wrote:
>
>> the whole
>> point is to be restrictive, so the run-time system can be simplified (as
>> compared to a run-time system that supports full Ada).
>
> Does GNAT provide somewhat simpler (smaller? faster?) runtime for
> programs that declare compliance with the Ravenscar profile?

I think so, but I'm not sure.  I'm still pretty new at AdaCore, and I
don't really understand all the different versions and configurations.
Ask AdaCore!

- Bob



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-07  1:38         ` Steve
@ 2007-09-07  2:47           ` Robert A Duff
  0 siblings, 0 replies; 49+ messages in thread
From: Robert A Duff @ 2007-09-07  2:47 UTC (permalink / raw)


"Steve" <nospam_steved94@comcast.net> writes:

> "Robert A Duff" <bobduff@shell01.TheWorld.com> wrote in message 
> news:wccps0vkhvo.fsf@shell01.TheWorld.com...
>> "Steve" <nospam_steved94@comcast.net> writes:
>>
>>> Given the restriction, I found your example easy to follow.  I don't know
>>> where to find the Ravenscar document for comparison.
>>
>> The Ravenscar profile is documented in section D.13.1 of the latest Ada
>> Reference Manual.
>>
>
> Unless I'm looking the wrong place, section D.13.1 of the ARM (on AdaIC) 
> just lists the restrictions.

Right.  And then you can look up each restriction, and see what it
specifically means.

>...The original post was asking about the clarity 
> of an example in a specific document.

Sorry.  I guess I was confused about what you were asking for.

>>> Ada 83 was restrictive in ways that were found to be overly restrictive 
>>> for
>>> practical application.  Some of these retrictions were relaxed with Ada 
>>> 95.
>>> Perhaps the next round of Ravenscar will do the same.
>>
>> I don't see any need to relax Ravenscar, because if you want to use
>> features not allowed by Ravenscar, you don't have to restrict yourself
>> to Ravenscar.  It's a free choice.  I suppose we could argue about
>> whether the exact set of restrictions is appropriate, but the whole
>> point is to be restrictive, so the run-time system can be simplified (as
>> compared to a run-time system that supports full Ada).
>
> The choice of the exact set of restrictions that are appropriate is what may
> in practice make sense to change.  After some experience with the 
> restrictions it may be found that a minor modification to one of the 
> restrictions may reduce complexity of implementations.

Yes, it might.

There's a trade-off in complexity of implementation (of the Ada run-time
system) and complexity of applications.  It's not at all clear (to me)
where that line should be drawn.

- Bob



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-06 21:13         ` Maciej Sobczak
  2007-09-07  2:41           ` Robert A Duff
@ 2007-09-07 11:56           ` anon
  2007-09-07 19:44             ` Maciej Sobczak
  1 sibling, 1 reply; 49+ messages in thread
From: anon @ 2007-09-07 11:56 UTC (permalink / raw)


>Does GNAT provide somewhat simpler (smaller? faster?) runtime for
>programs that declare compliance with the Ravenscar profile?

The simple answer is No. Mostly it included in the GNAT PRO version 
only. 


The GPL/GNU GNAT Ada system has three main operating environments.  

 1) Normal "run-time system" (RTS) which handles most 
    non-mission critical partitions. Just compile/bind/link 
    and execute the programs.

 2) Is defined in the GNAT manual as an obsolete feature, that is 
    using the "pragma No_Run_Time ;", but still works.  In this 
    version, the user must supply the RTS subsystem that the 
    program requires. This does decrease the file size to about 
    25 % of the normal compile version and in some cases will 
    increase the performance with other pragma used. But the 
    programmer must write all procedures and functions for each 
    RTS package that the program uses.

    A very simple example of this type of RTS version:

---------------
-- Hello.adb --
---------------
-- File size: using Ada.Text_IO              => 251 KB
-- File size: using GNAT.IO                  => 192 KB
-- File size: using "pragma No_Run_Time" 
--            with user create RTS package   => 58 KB
--
-- Note: size may differ between operating systems and 
--       GNAT versions but the concept is the same.
--
-- And due to decrease packages requirements and code 
-- generated the performance will increase from using 
-- Ada.Text_IO to GNAT.IO to the user define RTS subsystem.
-- 
-- compile => gcc -c put_line.c 
--            gnat compile hello.adb
--            gnat bind hello.ali
--            gnat link hello.ali   put_line.o
-- 
-- run     => ./hello
-- 
---------------
-- Hello.adb --
---------------
pragma No_Run_Time ;
--
-- Ada.Text_IO aka Text_IO and GNAT.IO packages
-- are illegal with the usage of "No_Run_Time"
--
--  with Ada.Text_IO; use Ada.Text_IO;
--  with GNAT.IO ; use GNAT.IO ;
--
procedure Hello is

   --
   -- External link for put_line RTS subsystem package 
   -- Note: String needs to terminate with ascii.nul
   --
   -- comment out to use GNAT packages 
   --
   procedure Put_Line ( Value : String ) ;
   pragma Import ( C, Put_Line, "put_line" ) ;
  
  begin
    Put_Line ( "Hello World. Welcome to GNAT" & ASCII.NUL ) ;
  end ;


/* ----------- */
/*  put_line.c */
/* ----------- */
#include <stdio.h>

/* put_line -- run-time subsystem procedure */
void put_line ( value )
char * value ;
  {
    printf ( "%s\n", value ) ;
  }
/* --eof-- */


 3) Is the Ravenscar RTS. It can contains multiple packages each 
    fine tuned for Real-Time operating environment (RTOE) and the 
    full criteria of the DO-178B. The academic and GPL/GNU 
    versions do not meet the DO-178B criteria or have RTOE packages 
    for the Ravenscar profile.

    The compiler does set the correct restrictions when using the 
    Ravenscar profile. And some of these restrictions will increase 
    the performance in some case. But linking is still done with the
    Normal or "No Run Time" RTS, so the performance will be limited.


Now, there are a few other pragmas that can decrease the program's
file size or the amount its allocated during execution. Some of 
these might increase the programs performance but it is normally 
not enough to spend a great deal of time on. That is, unless 
your allocating large block of memory for vector or matrix 
project and need to speed up the allocation schemes. But you may 
have to write the allocation routines.



Something you could try.  The next time you write a program that 
you thinks meet the Ravenscar profile designed add either the 
"pragma Ravenscar ;" or some of the main Ravenscar profile 
restrictions to your code.  If your in class this might turn into 
an extra assignment or it could be used in a later course.


n <1189113180.100290.51880@50g2000hsm.googlegroups.com>,  Maciej Sobczak <see.my.homepage@gmail.com> writes:
>On 6 Wrz, 16:06, Robert A Duff <bobd...@shell01.TheWorld.com> wrote:
>
>> the whole
>> point is to be restrictive, so the run-time system can be simplified (as
>> compared to a run-time system that supports full Ada).
>
>Does GNAT provide somewhat simpler (smaller? faster?) runtime for
>programs that declare compliance with the Ravenscar profile?
>I'm not asking about the high-integrity edition of GNAT, but the
>"normal" one.
>
>--
>Maciej Sobczak
>http://www.msobczak.com/
>




^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-07 11:56           ` anon
@ 2007-09-07 19:44             ` Maciej Sobczak
  2007-09-08  0:16               ` anon
  0 siblings, 1 reply; 49+ messages in thread
From: Maciej Sobczak @ 2007-09-07 19:44 UTC (permalink / raw)


On 7 Wrz, 13:56, a...@anon.org (anon) wrote:

>  2) Is defined in the GNAT manual as an obsolete feature, that is
>     using the "pragma No_Run_Time ;", but still works.  In this
>     version, the user must supply the RTS subsystem that the
>     program requires.

Interesting, but IO is easy. What about multitasking? What kind of RTS
needs to be supplied for tasks to work correcly?


> /* ----------- */
> /*  put_line.c */
> /* ----------- */
> #include <stdio.h>
>
> /* put_line -- run-time subsystem procedure */
> void put_line ( value )
> char * value ;
>   {
>     printf ( "%s\n", value ) ;
>   }
> /* --eof-- */

Note that this requires the C run-time instead. It might be smaller/
faster, but still it is not No_Run_Time in the strict sense. You might
need to really use the basic OS services directly to claim "no run-
time" program. Or even forget about OS, the No_Run_Time option is most
likely intended for those who program hardware directly.

> If your in class this might turn into
> an extra assignment or it could be used in a later course.

No, I'm not "in class". :-)

--
Maciej Sobczak
http://www.msobczak.com/




^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-07 19:44             ` Maciej Sobczak
@ 2007-09-08  0:16               ` anon
  2007-09-08  1:19                 ` Larry Kilgallen
  2007-09-08 11:50                 ` Niklas Holsti
  0 siblings, 2 replies; 49+ messages in thread
From: anon @ 2007-09-08  0:16 UTC (permalink / raw)


To use tasking you have to build that code as well. Unless you use the 
Normal run-time system for the non-Pro version compiler. And 
"No_Run_time" will kill that process.

And Yes, if you use the "No_Run_Time" prgama you could build a device 
driver for some hardware. A better idea is to build your own RTS. You 
would think that in 15 years of GNAT you might see a few new RTS or 
at least one or two doctoral types of RTS, but nothing. The only thing you 
see is mostly ports of GNAT to a new hardware or operating system.

>Note that this requires the C run-time instead. 

I could of wrote the code in Assembly bypassing the "C run-time" but for 
a demonstration it was not needed. And the assembly package might be 
smaller and faster. Plus if you look at GNAT.IO package you will see that 
it calls some routines that are written in C which source code is in file 
"cio.c" that even Ada.Text_IO uses. Actually GNAT uses the C's "fprintf" 
instead of "prinf".

Note: GNAT uses the GCC "C Run-Time" package to make it easier to 
be installed on a number of different operating systems and processors.

If you look around in the other Ada packages and C source code files you 
will see just how the tasking is done which is basically just a number of 
OS "thread" routines calls linking to Ada by way of C.

And the GNU/GPL GNAT Ada is just a frontend compiler to the GCC.  If 
you look at the source code "Back_end.adb" you will see a link to a C 
coded procedure called gigi (gnat-to-gcc) which calls the C "Run-Time" 
compiler. The C "Run-Time" compiler then converts the GNAT C 
generated code to the object modules.

For GNAT and most other Ada systems there is no Ada only "Run-Time 
System". Most uses the "C library" packages, some may use assembly
or JAVA or even Pascal library packages for its RTS.



In <1189194299.326741.151840@50g2000hsm.googlegroups.com>,  Maciej Sobczak <see.my.homepage@gmail.com> writes:
>On 7 Wrz, 13:56, a...@anon.org (anon) wrote:
>
>>  2) Is defined in the GNAT manual as an obsolete feature, that is
>>     using the "pragma No_Run_Time ;", but still works.  In this
>>     version, the user must supply the RTS subsystem that the
>>     program requires.
>
>Interesting, but IO is easy. What about multitasking? What kind of RTS
>needs to be supplied for tasks to work correcly?
>
>
>> /* ----------- */
>> /*  put_line.c */
>> /* ----------- */
>> #include <stdio.h>
>>
>> /* put_line -- run-time subsystem procedure */
>> void put_line ( value )
>> char * value ;
>>   {
>>     printf ( "%s\n", value ) ;
>>   }
>> /* --eof-- */
>
>Note that this requires the C run-time instead. It might be smaller/
>faster, but still it is not No_Run_Time in the strict sense. You might
>need to really use the basic OS services directly to claim "no run-
>time" program. Or even forget about OS, the No_Run_Time option is most
>likely intended for those who program hardware directly.
>
>> If your in class this might turn into
>> an extra assignment or it could be used in a later course.
>
>No, I'm not "in class". :-)
>
>--
>Maciej Sobczak
>http://www.msobczak.com/
>




^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-08  0:16               ` anon
@ 2007-09-08  1:19                 ` Larry Kilgallen
  2007-09-08  5:13                   ` anon
  2007-09-08 11:50                 ` Niklas Holsti
  1 sibling, 1 reply; 49+ messages in thread
From: Larry Kilgallen @ 2007-09-08  1:19 UTC (permalink / raw)


In article <TRlEi.505983$p47.38772@bgtnsc04-news.ops.worldnet.att.net>, anon@anon.org (anon) writes:

> For GNAT and most other Ada systems there is no Ada only "Run-Time 
> System". Most uses the "C library" packages, some may use assembly
> or JAVA or even Pascal library packages for its RTS.

Certainly DEC/Compaq/HP Ada has its own runtime library, purpose-built
for Ada support.  It does rely on underlying operating system features,
but there is a lot of Ada-specificity in the way they are used.



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-08  1:19                 ` Larry Kilgallen
@ 2007-09-08  5:13                   ` anon
  2007-09-08 22:06                     ` Larry Kilgallen
  2007-09-11  2:44                     ` Randy Brukardt
  0 siblings, 2 replies; 49+ messages in thread
From: anon @ 2007-09-08  5:13 UTC (permalink / raw)


The DEC as I posted about the history of DEC and Ada before stated that 
they created the close source Ada libraries, that were originally written 
in C. Later the compiler was rewritten in Ada once the C version of an 
Ada compiler was operational, but even today most of the library core 
routines are still in C.

What I was trying to hint at without beating someone up about it was 
that the C code files should go.  Links to the Operating System and 
hardware drivers should be direct though use of the "Import pragma" 
not though a C interface driver file like GNAT and yes, and DEC 
still uses. And the C libraries need to be rewritten in Ada.

But for GNAT and other Ada's systems that are supported on a 
muti-platform environments that means that instead of using C 
conditional statements in one file, the authors would have to 
recreate a platform specific Ada package for each platform and the 
authors would prefer not to. Plus, that could mean a break from 
GCC and its code structures for GNAT. 

Now for an operating systems or kernels that is wriiten in Ada that you 
can download and use, there are two Posix Real-Time systems out there.
The first is the MaRTE and the second is RTERMS. But both of these 
rely on a set of C files for booting and to handle the processors 
interrupts. Actually the GNAT compiler even has packages and links 
for both kernel in its files structures.



In <5BwKkEXdYLCt@eisner.encompasserve.org>, Kilgallen@SpamCop.net (Larry Kilgallen) writes:
>In article <TRlEi.505983$p47.38772@bgtnsc04-news.ops.worldnet.att.net>, anon@anon.org (anon) writes:
>
>> For GNAT and most other Ada systems there is no Ada only "Run-Time 
>> System". Most uses the "C library" packages, some may use assembly
>> or JAVA or even Pascal library packages for its RTS.
>
>Certainly DEC/Compaq/HP Ada has its own runtime library, purpose-built
>for Ada support.  It does rely on underlying operating system features,
>but there is a lot of Ada-specificity in the way they are used.




^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-08  0:16               ` anon
  2007-09-08  1:19                 ` Larry Kilgallen
@ 2007-09-08 11:50                 ` Niklas Holsti
  2007-09-08 12:01                   ` Pascal Obry
                                     ` (2 more replies)
  1 sibling, 3 replies; 49+ messages in thread
From: Niklas Holsti @ 2007-09-08 11:50 UTC (permalink / raw)


anon wrote:

> And the GNU/GPL GNAT Ada is just a frontend compiler to the GCC.  If 
> you look at the source code "Back_end.adb" you will see a link to a C 
> coded procedure called gigi (gnat-to-gcc) which calls the C "Run-Time" 
> compiler. The C "Run-Time" compiler then converts the GNAT C 
> generated code to the object modules.

Saying that GNAT generates C code is nonsense, as you have been 
answered earlier on this newsgroup. The GU Compiler Collection has 
a common internal program representation that interfaces the front 
ends to the back end, but this representation is not C.

> For GNAT and most other Ada systems there is no Ada only "Run-Time 
> System".

That does not agree with my experience. Two of the three Ada 
systems for embedded platforms that I have used have had their own 
Ada RTS: TLD Ada and XGC Ada. XGC Ada is based on the GNAT compiler 
but has its own kernel and libraries (mostly written in Ada, too, 
as far as I remember).

The third compiler was DEC Ada. I used it for applications on a 
microVAX under VMS but as I remember it could also create programs 
to run on a simpler real-time kernel called VAXELN. I think VAXELN 
was not written in Ada and could also be used from other languages. 
And why not.

Then there is the Open Ravenscar Kernel ORK for GNAT, 
http://polaris.dit.upm.es/~ork/, also written in Ada.

For general (workstation, server) platforms of course Ada vendors 
do the sensible thing and connect to the existing OS interfaces, in 
most cases designed for C as the lowest common denominator.

There have been full-Ada systems even outside the embedded domain. 
Long ago, when Nokia (yes, the mobile phone company) was selling 
computers they developed a 32-bit system called MPS10 to compete 
with VAXes for data processing applications. The software, 
including the OS and database system, was in Ada.

-- 
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
       .      @       .



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-08 11:50                 ` Niklas Holsti
@ 2007-09-08 12:01                   ` Pascal Obry
  2007-09-08 17:13                     ` anon
  2007-09-08 17:11                   ` anon
  2007-09-10 12:51                   ` Colin Paul Gloster
  2 siblings, 1 reply; 49+ messages in thread
From: Pascal Obry @ 2007-09-08 12:01 UTC (permalink / raw)
  To: Niklas Holsti

Niklas Holsti a �crit :
> Saying that GNAT generates C code is nonsense, as you have been answered
> earlier on this newsgroup. The GU Compiler Collection has a common

Well anon says thousand of wrong things but he did not say that GNAT
generates C code in its previous message :)

Pascal.

-- 

--|------------------------------------------------------
--| Pascal Obry                           Team-Ada Member
--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
--|------------------------------------------------------
--|              http://www.obry.net
--| "The best way to travel is by means of imagination"
--|
--| gpg --keyserver wwwkeys.pgp.net --recv-key C1082595



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-08 11:50                 ` Niklas Holsti
  2007-09-08 12:01                   ` Pascal Obry
@ 2007-09-08 17:11                   ` anon
  2007-09-08 19:14                     ` Markus E L
                                       ` (3 more replies)
  2007-09-10 12:51                   ` Colin Paul Gloster
  2 siblings, 4 replies; 49+ messages in thread
From: anon @ 2007-09-08 17:11 UTC (permalink / raw)


WHERE IS YOU PROOF!!! If your going to call a person a liar then you 
should provide proof it or just say that your a TROLL and be done with 
it. It seams that people here love to argue but give no proof of what 
they say.  At least I give proof of what I have said in history posts.

Read NYU GNAT (before Adacore) internal messages regarding 
GNAT-RTS and GNU C compiling system. It is a direct internal C tree 
structure of the C code. That can be printed as a C program. Also there 
are a few web sites with doctoral thesis that states this as well as 
a few papers at ACM. And ACM group will verify the information before 
accepting thesis paper and this is where I learn of it. The paper include 
a program that will print internal C as a compilable C source code 
file.

Now since, the mid 1980's most compiler are FRONT_END compilers aka 
a language translator that converts the source language to the system's 
main language, normal for today that's C with the exception of TI which 
used Pascal.  Then the FRONT_END compiler calls a BACK_END compiler 
(for GNAT this is done by the compiler calling "gigi" (gnat-to-gcc)), 
which re-calls the gcc compiler for GNU system so that the internal C 
can be converted to a object module or assembly source file. 
{{ continue below }}

Now, any system build around GNAT will contain the C code that GNAT 
uses to connect to the operating system. And since GNAT is built 
with the GCC libraries the trig. and other math functions will be 
wriiten in C to interface with the FPU or to the FPU emulation 
package, which is also written in C. That make any system that is 
compiled with around GNAT not "Ada only Run-Time System". 

The XGC Ada which is based on GNAT and uses C for its Real Time 
application and TLD contains C close sources files from DEC's Ada
libraries, which denote that both do not have an "Ada only 
Run-Time System". 

>Then there is the Open Ravenscar Kernel ORK for GNAT, 
The only problem with that one is that it is 4 years and gcc lib 
are out dated.  The two I gave are current.


Stated this before too!

First, the MicroVax came out in, the mid 1980s and DEC created Ada 
in 1978. So, your MicroVax Ada version could of been the third 
released or third version sold to the general public by DEC. 


>For general (workstation, server) platforms of course Ada vendors 
>do the sensible thing and connect to the existing OS interfaces, in 
>most cases designed for C as the lowest common denominator.
>
>There have been full-Ada systems even outside the embedded domain. 
>Long ago, when Nokia (yes, the mobile phone company) was selling 
>computers they developed a 32-bit system called MPS10 to compete 
>with VAXes for data processing applications. The software, 
>including the OS and database system, was in Ada.


And I was talking about multi-platforms, which I stated. Which means 
that the system must operate on more than one processor and platforms 
class system. Like Nokia's Ada on a NCR or Univac system, which did 
not happen. 

Note: this information come from Intel web site during the release of 
the Itanium I processor. { continue from above }

Before GNU system the idea of multi-platform compilers basically did 
not happen, but since then the major software houses have adopted this 
concept. A quick reason is that once they create a new processor they 
do not have to re-write all of the compiler codes and libraries. Just 
create the C compiler and recompile the software system from there.

Plus, as I have stated before getting a new licenses or paying for a 
Software Patents to re-write the close source libraries is a high 
Dollar item. And most companies and users do not want to pay
that price or take the time and expense to re-write the code. So 
C is used.



In <46e28a6a$0$27847$39db0f71@news.song.fi>, Niklas Holsti <niklas.holsti@nospam.please> writes:
>anon wrote:
>
>> And the GNU/GPL GNAT Ada is just a frontend compiler to the GCC.  If 
>> you look at the source code "Back_end.adb" you will see a link to a C 
>> coded procedure called gigi (gnat-to-gcc) which calls the C "Run-Time" 
>> compiler. The C "Run-Time" compiler then converts the GNAT C 
>> generated code to the object modules.
>
>Saying that GNAT generates C code is nonsense, as you have been 
>answered earlier on this newsgroup. The GU Compiler Collection has 
>a common internal program representation that interfaces the front 
>ends to the back end, but this representation is not C.
>
>> For GNAT and most other Ada systems there is no Ada only "Run-Time 
>> System".
>
>That does not agree with my experience. Two of the three Ada 
>systems for embedded platforms that I have used have had their own 
>Ada RTS: TLD Ada and XGC Ada. XGC Ada is based on the GNAT compiler 
>but has its own kernel and libraries (mostly written in Ada, too, 
>as far as I remember).
>
>The third compiler was DEC Ada. I used it for applications on a 
>microVAX under VMS but as I remember it could also create programs 
>to run on a simpler real-time kernel called VAXELN. I think VAXELN 
>was not written in Ada and could also be used from other languages. 
>And why not.
>
>Then there is the Open Ravenscar Kernel ORK for GNAT, 
>http://polaris.dit.upm.es/~ork/, also written in Ada.
>
>For general (workstation, server) platforms of course Ada vendors 
>do the sensible thing and connect to the existing OS interfaces, in 
>most cases designed for C as the lowest common denominator.
>
>There have been full-Ada systems even outside the embedded domain. 
>Long ago, when Nokia (yes, the mobile phone company) was selling 
>computers they developed a 32-bit system called MPS10 to compete 
>with VAXes for data processing applications. The software, 
>including the OS and database system, was in Ada.
>
>-- 
>Niklas Holsti
>Tidorum Ltd
>niklas holsti tidorum fi
>       .      @       .




^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-08 12:01                   ` Pascal Obry
@ 2007-09-08 17:13                     ` anon
  0 siblings, 0 replies; 49+ messages in thread
From: anon @ 2007-09-08 17:13 UTC (permalink / raw)


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 800 bytes --]

Just a TROLL! More on!

In <46E28F26.3030805@obry.net>, Pascal Obry <pascal@obry.net> writes:
>Niklas Holsti a �crit :
>> Saying that GNAT generates C code is nonsense, as you have been answered
>> earlier on this newsgroup. The GU Compiler Collection has a common
>
>Well anon says thousand of wrong things but he did not say that GNAT
>generates C code in its previous message :)
>
>Pascal.
>
>-- 
>
>--|------------------------------------------------------
>--| Pascal Obry                           Team-Ada Member
>--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
>--|------------------------------------------------------
>--|              http://www.obry.net
>--| "The best way to travel is by means of imagination"
>--|
>--| gpg --keyserver wwwkeys.pgp.net --recv-key C1082595




^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-08 17:11                   ` anon
@ 2007-09-08 19:14                     ` Markus E L
  2007-09-09 14:54                       ` anon
  2007-09-09 10:38                     ` Gautier
                                       ` (2 subsequent siblings)
  3 siblings, 1 reply; 49+ messages in thread
From: Markus E L @ 2007-09-08 19:14 UTC (permalink / raw)



'anon AT anon DOT org (anon)' wrote:

> WHERE IS YOU PROOF!!! If your going to call a person a liar then you 

Oh noes, he's writing caps again.

<snipped a lot of strange stuff about GNAT using C as backend and DEC in the Ada history>

> Before GNU system the idea of multi-platform compilers basically did 
> not happen, but since then the major software houses have adopted this 
> concept. A quick reason is that once they create a new processor they 

See PCC, the portable C compiler by
Johnson. E.g. http://en.wikipedia.org/wiki/Portable_C_Compiler for
further references.

Concerning your attempts to rewrite history concerning DEC and Ada: It
might be that you'r basing your comments on a possible pre
standardization involvment of DEC in the Ada development effort
between 1979 and 1983 when "Green" was finally chosen to become
Ada. Maybe DEC developed one of the Stoneman prototype
compilers. Information about this is difficult to find w/o deeper
research which I'm not in the mood to do now, and without you giving
any references (which you really should, given that you try to tell a
story that is different from what I know as accepted history). At the
very least you're emphasizing the part of DEC in Ada history beyond
all proportion (in another post some weeks ago you wrote something to
the effect that DEC owns Ada - WTF?). But the thing that makes be
really really suspicious is when you don't get thing right which (a) I
know better and (b) you could have found out with a bit research, I
even dare say: In some 10 years in the industry (and aren't you always
pretending you're such an old hand?) you could not have been able to
avoid learning some parts of the history, like about Johnson's
portable compiler.

So when everything is said and done, I begin to doubt especially the
things in your statements which cannot be checked immediately. 

And I would really appreciate if you stopped taking on a posture as an
expert and talk like "ex cathedra". There are simply to many half
truths and plain untruths in your grand sweeping oratories.

> do not have to re-write all of the compiler codes and libraries. Just 
> create the C compiler and recompile the software system from there.
>


-- Markus



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-08  5:13                   ` anon
@ 2007-09-08 22:06                     ` Larry Kilgallen
  2007-09-09  2:17                       ` anon
  2007-09-11  2:44                     ` Randy Brukardt
  1 sibling, 1 reply; 49+ messages in thread
From: Larry Kilgallen @ 2007-09-08 22:06 UTC (permalink / raw)


In article <DbqEi.507138$p47.352055@bgtnsc04-news.ops.worldnet.att.net>, anon@anon.org (anon) writes:
> The DEC as I posted about the history of DEC and Ada before stated that 
> they created the close source Ada libraries, that were originally written 
> in C. Later the compiler was rewritten in Ada once the C version of an 
> Ada compiler was operational, but even today most of the library core 
> routines are still in C.

It is plain from reading the VMS Source Listings kit that the Ada RTL
is written in Bliss.

Since the compiler uses GEM on Alpha, certainly that part is in Bliss.



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-08 22:06                     ` Larry Kilgallen
@ 2007-09-09  2:17                       ` anon
  2007-09-09 12:07                         ` Larry Kilgallen
  2007-09-09 13:10                         ` Markus E L
  0 siblings, 2 replies; 49+ messages in thread
From: anon @ 2007-09-09  2:17 UTC (permalink / raw)


That may be true for VMS but since the information that was certified 
by the DOD said C for Ada. And that the final word, because the DOD 
certified it was so.

Plus, VMS was "close source" only back then.  There is now a port called 
OpenVMS. As for the VMS version of Ada RTL written in Bliss, that 
also proves my point of no "Ada only Run-Time System".

An Alpha with GEM, well the Alpha was created in 1992. Not at the 
birth of Ada. But again GEM means no "Ada only Run-Time System".


In <3dUR1T8RzWhQ@eisner.encompasserve.org>, Kilgallen@SpamCop.net (Larry Kilgallen) writes:
>In article <DbqEi.507138$p47.352055@bgtnsc04-news.ops.worldnet.att.net>, anon@anon.org (anon) writes:
>> The DEC as I posted about the history of DEC and Ada before stated that 
>> they created the close source Ada libraries, that were originally written 
>> in C. Later the compiler was rewritten in Ada once the C version of an 
>> Ada compiler was operational, but even today most of the library core 
>> routines are still in C.
>
>It is plain from reading the VMS Source Listings kit that the Ada RTL
>is written in Bliss.
>
>Since the compiler uses GEM on Alpha, certainly that part is in Bliss.




^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-08 17:11                   ` anon
  2007-09-08 19:14                     ` Markus E L
@ 2007-09-09 10:38                     ` Gautier
  2007-09-09 11:41                       ` anon
  2007-09-09 10:57                     ` Gautier
  2007-09-09 19:12                     ` Niklas Holsti
  3 siblings, 1 reply; 49+ messages in thread
From: Gautier @ 2007-09-09 10:38 UTC (permalink / raw)


anon wrote:
> WHERE IS YOU PROOF!!! If your going to call a person a liar then you 
> should provide proof it or just say that your a TROLL and be done with 
> it. It seams that people here love to argue but give no proof of what 
> they say.

Yeah, that's a problem, especially people who write things like:
 > And since GNAT is built
> with the GCC libraries the trig. and other math functions will be 
> wriiten in C to interface with the FPU or to the FPU emulation 
> package, which is also written in C.

...which is pretty easy to check that it is wrong: perhaps widely outdated, or 
just an unverified guess-work. In your GNAT adainclude directory, look at
	Ada.Numerics.Generic_Elementary_Functions,
body: a-ngelfu.adb, which refers to
	Ada.Numerics.Aux
body: a-numaux.adb which uses (at least the for x86) only machine code 
insertions to directly access the FPU - no C code around...
Apparently, before 1998 (when GNAT's Ada.Numerics.Aux began to exist), GNAT's 
Ada.Numerics.Generic_Elementary_Functions used only the C math.h code as the 
comment at the body's begin suggests, but it is no more the case for every 
platform since then.
______________________________________________________________
Gautier         -- http://www.mysunrise.ch/users/gdm/index.htm
Ada programming -- http://www.mysunrise.ch/users/gdm/gsoft.htm

NB: For a direct answer, e-mail address on the Web site!



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-08 17:11                   ` anon
  2007-09-08 19:14                     ` Markus E L
  2007-09-09 10:38                     ` Gautier
@ 2007-09-09 10:57                     ` Gautier
  2007-09-09 14:49                       ` anon
  2007-09-09 19:12                     ` Niklas Holsti
  3 siblings, 1 reply; 49+ messages in thread
From: Gautier @ 2007-09-09 10:57 UTC (permalink / raw)


anon:

> Read NYU GNAT (before Adacore) internal messages regarding 
> GNAT-RTS and GNU C compiling system. It is a direct internal C tree 
> structure of the C code. That can be printed as a C program. Also there 
> are a few web sites with doctoral thesis that states this as well as 
> a few papers at ACM. And ACM group will verify the information before 
> accepting thesis paper and this is where I learn of it. The paper include 
> a program that will print internal C as a compilable C source code 
> file.

You could write a program that outputs the tree as a compilable Ada source code, 
couldn't you ?

> Now since, the mid 1980's most compiler are FRONT_END compilers aka 
> a language translator that converts the source language to the system's 
> main language, normal for today that's C with the exception of TI which 
> used Pascal.  Then the FRONT_END compiler calls a BACK_END compiler 
> (for GNAT this is done by the compiler calling "gigi" (gnat-to-gcc)), 
> which re-calls the gcc compiler for GNU system so that the internal C 
> can be converted to a object module or assembly source file. 
> {{ continue below }}

Between the front-end and the back-end, a data tree is passed, not a C source 
code. As discussed earlier, there is no intermediary C code - please re-read and 
remember R. Dewar's explanation. As a mnemotechnic exercise, I cannot resist to 
quote this from c.l.a. (~1998):

"Repeat after me:  GNAT does NOT produce C code.  GNAT does NOT produce C code. 
  GNAT does NOT produce C code.  GNAT does NOT produce C code. GNAT does NOT 
produce C code.  GNAT does NOT produce C code.  GNAT does NOT produce C code. 
GNAT does NOT produce C code.  GNAT does NOT produce C code.  GNAT does NOT 
produce C code.  GNAT does NOT produce C code.  GNAT does NOT produce C code. 
GNAT does NOT produce C code.
There.  Feel better now? :-)
"
______________________________________________________________
Gautier         -- http://www.mysunrise.ch/users/gdm/index.htm
Ada programming -- http://www.mysunrise.ch/users/gdm/gsoft.htm

NB: For a direct answer, e-mail address on the Web site!



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-09 10:38                     ` Gautier
@ 2007-09-09 11:41                       ` anon
  2007-09-09 13:19                         ` Markus E L
  2007-09-09 13:52                         ` Pascal Obry
  0 siblings, 2 replies; 49+ messages in thread
From: anon @ 2007-09-09 11:41 UTC (permalink / raw)


Showing your TROLLISM!

If you check GNU GNAT 4.3 it contains 
Ada.Numerics.Aux -- for Vxworks which link into GCC C libraies.
Ada.Numerics.Aux -- for darwin also links to thier GCC C library.
All Ada.Numerics.Aux use the C code.
 

  GET OVER IT! YOU CAN NEVER PROVE THAT GNAT DOES NOT 
  INCLUDE LINK INTO THE GCC C LIBRARIES! AND THESE 
  LIBRARY ROUTINES ARE LINKED INTO YOU CODE IF YOU 
  NEED THOSE ROUTINES!


AND AS FOR YOUR OTHER POST NO PROVE EITHER! MINE PAPERS AT 
ACM.


In <46e3ccfd$1_4@news.bluewin.ch>, Gautier <gautier@fakeaddress.nil> writes:
>anon wrote:
>> WHERE IS YOU PROOF!!! If your going to call a person a liar then you 
>> should provide proof it or just say that your a TROLL and be done with 
>> it. It seams that people here love to argue but give no proof of what 
>> they say.
>
>Yeah, that's a problem, especially people who write things like:
> > And since GNAT is built
>> with the GCC libraries the trig. and other math functions will be 
>> wriiten in C to interface with the FPU or to the FPU emulation 
>> package, which is also written in C.
>
>....which is pretty easy to check that it is wrong: perhaps widely outdated, or 
>just an unverified guess-work. In your GNAT adainclude directory, look at
>	Ada.Numerics.Generic_Elementary_Functions,
>body: a-ngelfu.adb, which refers to
>	Ada.Numerics.Aux
>body: a-numaux.adb which uses (at least the for x86) only machine code 
>insertions to directly access the FPU - no C code around...
>Apparently, before 1998 (when GNAT's Ada.Numerics.Aux began to exist), GNAT's 
>Ada.Numerics.Generic_Elementary_Functions used only the C math.h code as the 
>comment at the body's begin suggests, but it is no more the case for every 
>platform since then.
>______________________________________________________________
>Gautier         -- http://www.mysunrise.ch/users/gdm/index.htm
>Ada programming -- http://www.mysunrise.ch/users/gdm/gsoft.htm
>
>NB: For a direct answer, e-mail address on the Web site!




^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-09  2:17                       ` anon
@ 2007-09-09 12:07                         ` Larry Kilgallen
  2007-09-09 13:10                         ` Markus E L
  1 sibling, 0 replies; 49+ messages in thread
From: Larry Kilgallen @ 2007-09-09 12:07 UTC (permalink / raw)


In article <dJIEi.79067$ax1.39061@bgtnsc05-news.ops.worldnet.att.net>, anon@anon.org (anon) writes:
> That may be true for VMS but since the information that was certified 
> by the DOD said C for Ada. And that the final word, because the DOD 
> certified it was so.

If there were a DoD document saying it was a box of magic pixies,
would you believe that ?

> Plus, VMS was "close source" only back then.

The status of VMS has not changed in that regard, except that those
who pay for the source listings now get them on CDROM, not Microfiche.

> There is now a port called 
> OpenVMS.

There was no "port" of VMS called OpenVMS.  OpenVMS is a marketing
term introduced about 1992 which was not indicative of any new coding
(except for changing the default banner displayed when you log in).

> As for the VMS version of Ada RTL written in Bliss, that 
> also proves my point of no "Ada only Run-Time System".

If by "no Ada only Run-Time system" you mean "no Run-Time system
written in Ada", you use a poor choice of word.

> An Alpha with GEM, well the Alpha was created in 1992. Not at the 
> birth of Ada. But again GEM means no "Ada only Run-Time System".

GEM is a code generator, not a run time library:

Directory SYS$COMMON:[SYSLIB]

ADARTL.EXE;1
DEC$BASRTL.EXE;1
DEC$COBRTL.EXE;1
DEC$FORRTL.EXE;2   
PAS$RTL.EXE;1


Total of 5 files.



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-09  2:17                       ` anon
  2007-09-09 12:07                         ` Larry Kilgallen
@ 2007-09-09 13:10                         ` Markus E L
  1 sibling, 0 replies; 49+ messages in thread
From: Markus E L @ 2007-09-09 13:10 UTC (permalink / raw)



'anon AT anon DOT org (anon)' wrote:

> That may be true for VMS but since the information that was certified 
> by the DOD said C for Ada. And that the final word, because the DOD 
> certified it was so.


Last time you were talking about the DOD you accused them of
falsifying history and suppressing information on the true coures of
events ...

- M




^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-09 11:41                       ` anon
@ 2007-09-09 13:19                         ` Markus E L
  2007-09-09 13:52                         ` Pascal Obry
  1 sibling, 0 replies; 49+ messages in thread
From: Markus E L @ 2007-09-09 13:19 UTC (permalink / raw)



'anon AT anon DOT org (anon)' wrote:

> Showing your TROLLISM!
>
> If you check GNU GNAT 4.3 it contains 
> Ada.Numerics.Aux -- for Vxworks which link into GCC C libraies.
> Ada.Numerics.Aux -- for darwin also links to thier GCC C library.
> All Ada.Numerics.Aux use the C code.
>  
>
>   GET OVER IT! YOU CAN NEVER PROVE THAT GNAT DOES NOT 
>   INCLUDE LINK INTO THE GCC C LIBRARIES! AND THESE 
>   LIBRARY ROUTINES ARE LINKED INTO YOU CODE IF YOU 
>   NEED THOSE ROUTINES!
>
>
> AND AS FOR YOUR OTHER POST NO PROVE EITHER! MINE PAPERS AT 
> ACM.

Your caps key got stuck. Just in case you didn't notice. Regarding
proof: Just claiming "my papers are ACM" is a bit thin. I suggest you
back up your claims by putting proper references and quotes on the
table as behoves in a debate between historian. 

Until then everything _you_ say are unfounded claims -- and if they
are far enough away from what has been accepted lore so far and
accompanied by some clearly or at least very probably wrong claims,
nobody will ever bother to check the less easy to decide claims --
because one has to cull the decision tree at some point and given the
circumstances a low propability has been assigned to a success of the
strategy to look for new and revolutionary insights in your claims.

- M





^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-09 11:41                       ` anon
  2007-09-09 13:19                         ` Markus E L
@ 2007-09-09 13:52                         ` Pascal Obry
  2007-09-09 15:22                           ` anon
  1 sibling, 1 reply; 49+ messages in thread
From: Pascal Obry @ 2007-09-09 13:52 UTC (permalink / raw)
  To: anon

anon a �crit :
> Showing your TROLLISM!

Isn't it the fourth or fifth time you called somebody a troll ? Just be
cause somebody does not share your opinion...

> If you check GNU GNAT 4.3 it contains
> Ada.Numerics.Aux -- for Vxworks which link into GCC C libraies.

Right.

> Ada.Numerics.Aux -- for darwin also links to thier GCC C library.

Right.

> All Ada.Numerics.Aux use the C code.

Nope, Gautier was right, the x86 version uses only Asm.

At this point your credibility is probably around 0 on this forum.

Pascal.

-- 

--|------------------------------------------------------
--| Pascal Obry                           Team-Ada Member
--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
--|------------------------------------------------------
--|              http://www.obry.net
--| "The best way to travel is by means of imagination"
--|
--| gpg --keyserver wwwkeys.pgp.net --recv-key C1082595



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-09 10:57                     ` Gautier
@ 2007-09-09 14:49                       ` anon
  2007-09-09 15:08                         ` Pascal Obry
  2007-09-09 15:38                         ` Markus E L
  0 siblings, 2 replies; 49+ messages in thread
From: anon @ 2007-09-09 14:49 UTC (permalink / raw)


TROLL!

You can find this on the net. The second paragraph states that
GNAT uses GIGI routine to transform the  AST (Gnat internal trees) 
into an equivalent C tree. For figures do a search for the title and 
load the web page or pdf file.

There are others papers but this is getting borring ! 


Extract Title page and first two paragraphs from Chapter 1.3: 

 A Detailed Description of the GNU Ada Run Time 

 (Version 1.0)

 Integrated with the GNAT 3.15p sources and the Annotated Ada 
 Reference Manual (Technical Corrigendum 1)

 Copyright (c) Javier Miranda
 jmiranda@iuma.ulpgc.es

 Applied Microelectronics Reseach Institute
 University of Las Palmas de Gran Canaria
 Canary Islands

 Spain

 Permission is granted to copy, distribute and/or modify
 this document under the terms of the GNU Free Documentation
 License, Version 1.1 or any latter published by the Free
 Software Foundation.
 14th December 2002



 1.3 The Compiler

 The compiler is composed of two main parts: the front-end and the 
 back-end (cf. Figure 1.2). The front-end of the GNAT compiler is 
 thus written in Ada95. The back-end of the compiler is the back-end 
 of GCC proper, extended to meet the needs of Ada semantics 
 [SGC94, Section 3.1].


 The front-end comprises five phases (cf. Figure 1.3): lexical 
 analysis, syntactic analysis (parsing), semantic analysis, AST 
 expansion, and finally AST transformation into an equivalent C 
 tree (this stage is labeled GiGi (GNAT to GNU transformation). 
 These phases communicate by means of a rather compact Abstract 
 Syntax Tree (AST). The implementation details of the AST are 
 hidden by several procedural interfaces that provide access to 
 syntactic and semantic attributes. The layering of the system, 
 and the various levels of abstraction, are the obvious benefits 
 of writing in Ada, in what one might call ``proper'' Ada style. 
 It is worth mentioning that strictly speaking GNAT does not use 
 a symbol table. Rather, all semantic information concerning 
 program entities is stored in defining occurrences of these 
 entities directly in the AST [SGC94, Section 3.1]. 


In <46e3d16e_5@news.bluewin.ch>, Gautier <gautier@fakeaddress.nil> writes:
>anon:
>
>> Read NYU GNAT (before Adacore) internal messages regarding 
>> GNAT-RTS and GNU C compiling system. It is a direct internal C tree 
>> structure of the C code. That can be printed as a C program. Also there 
>> are a few web sites with doctoral thesis that states this as well as 
>> a few papers at ACM. And ACM group will verify the information before 
>> accepting thesis paper and this is where I learn of it. The paper include 
>> a program that will print internal C as a compilable C source code 
>> file.
>
>You could write a program that outputs the tree as a compilable Ada source code, 
>couldn't you ?
>
>> Now since, the mid 1980's most compiler are FRONT_END compilers aka 
>> a language translator that converts the source language to the system's 
>> main language, normal for today that's C with the exception of TI which 
>> used Pascal.  Then the FRONT_END compiler calls a BACK_END compiler 
>> (for GNAT this is done by the compiler calling "gigi" (gnat-to-gcc)), 
>> which re-calls the gcc compiler for GNU system so that the internal C 
>> can be converted to a object module or assembly source file. 
>> {{ continue below }}
>
>Between the front-end and the back-end, a data tree is passed, not a C source 
>code. As discussed earlier, there is no intermediary C code - please re-read and 
>remember R. Dewar's explanation. As a mnemotechnic exercise, I cannot resist to 
>quote this from c.l.a. (~1998):
>
>"Repeat after me:  GNAT does NOT produce C code.  GNAT does NOT produce C code. 
>  GNAT does NOT produce C code.  GNAT does NOT produce C code. GNAT does NOT 
>produce C code.  GNAT does NOT produce C code.  GNAT does NOT produce C code. 
>GNAT does NOT produce C code.  GNAT does NOT produce C code.  GNAT does NOT 
>produce C code.  GNAT does NOT produce C code.  GNAT does NOT produce C code. 
>GNAT does NOT produce C code.
>There.  Feel better now? :-)
>"
>______________________________________________________________
>Gautier         -- http://www.mysunrise.ch/users/gdm/index.htm
>Ada programming -- http://www.mysunrise.ch/users/gdm/gsoft.htm
>
>NB: For a direct answer, e-mail address on the Web site!




^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-08 19:14                     ` Markus E L
@ 2007-09-09 14:54                       ` anon
  2007-09-09 16:01                         ` Markus E L
  0 siblings, 1 reply; 49+ messages in thread
From: anon @ 2007-09-09 14:54 UTC (permalink / raw)


MOVE ON TROLL, MOVE ON!
PROOF IS ACCREDITED WEB SITES SUCH AS ACM, IEEE, 
UNIVERSITY, OR SOFTWARE COMPANY. NOT 
SOME "wikipedia.org' THAT CAN BE ALTERED BY ALMOST 
ANYONE WHO VIST THE WEB PAGE!


In <ymr6l93r7p.fsf@hod.lan.m-e-leypold.de>, Markus E L writes:
>
>'anon AT anon DOT org (anon)' wrote:
>
>> WHERE IS YOU PROOF!!! If your going to call a person a liar then you 
>
>Oh noes, he's writing caps again.
>
><snipped a lot of strange stuff about GNAT using C as backend and DEC in the Ada history>
>
>> Before GNU system the idea of multi-platform compilers basically did 
>> not happen, but since then the major software houses have adopted this 
>> concept. A quick reason is that once they create a new processor they 
>
>See PCC, the portable C compiler by
>Johnson. E.g. http://en.wikipedia.org/wiki/Portable_C_Compiler for
>further references.
>
>Concerning your attempts to rewrite history concerning DEC and Ada: It
>might be that you'r basing your comments on a possible pre
>standardization involvment of DEC in the Ada development effort
>between 1979 and 1983 when "Green" was finally chosen to become
>Ada. Maybe DEC developed one of the Stoneman prototype
>compilers. Information about this is difficult to find w/o deeper
>research which I'm not in the mood to do now, and without you giving
>any references (which you really should, given that you try to tell a
>story that is different from what I know as accepted history). At the
>very least you're emphasizing the part of DEC in Ada history beyond
>all proportion (in another post some weeks ago you wrote something to
>the effect that DEC owns Ada - WTF?). But the thing that makes be
>really really suspicious is when you don't get thing right which (a) I
>know better and (b) you could have found out with a bit research, I
>even dare say: In some 10 years in the industry (and aren't you always
>pretending you're such an old hand?) you could not have been able to
>avoid learning some parts of the history, like about Johnson's
>portable compiler.
>
>So when everything is said and done, I begin to doubt especially the
>things in your statements which cannot be checked immediately. 
>
>And I would really appreciate if you stopped taking on a posture as an
>expert and talk like "ex cathedra". There are simply to many half
>truths and plain untruths in your grand sweeping oratories.
>
>> do not have to re-write all of the compiler codes and libraries. Just 
>> create the C compiler and recompile the software system from there.
>>
>
>
>-- Markus




^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-09 14:49                       ` anon
@ 2007-09-09 15:08                         ` Pascal Obry
  2007-09-09 15:38                         ` Markus E L
  1 sibling, 0 replies; 49+ messages in thread
From: Pascal Obry @ 2007-09-09 15:08 UTC (permalink / raw)
  To: anon


anon a �crit :
> TROLL!

Again :)

> There are others papers but this is getting borring ! 

Because you just confuse C tree (or more precisely the GCC tree used by
Fortran, ObjectiveC, C, C++, Pascal, Ada...) and C source. This is not
our fault if you keep trying to avoid understand what others have been
saying in this tread!!! Please now stop this nonsense, thanks.

      GNAT code generation is not related to C in whatever manner.

And yes this is my last message to you as I really think I'm loosing my
time at this point.

Pascal.

-- 

--|------------------------------------------------------
--| Pascal Obry                           Team-Ada Member
--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
--|------------------------------------------------------
--|              http://www.obry.net
--| "The best way to travel is by means of imagination"
--|
--| gpg --keyserver wwwkeys.pgp.net --recv-key C1082595



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-09 13:52                         ` Pascal Obry
@ 2007-09-09 15:22                           ` anon
  2007-09-09 16:03                             ` Markus E L
                                               ` (2 more replies)
  0 siblings, 3 replies; 49+ messages in thread
From: anon @ 2007-09-09 15:22 UTC (permalink / raw)


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 1999 bytes --]

I CALL THEM AS I SEE THEM!  TROLL. 

And for me I do not care what you think of my CREDIBILITY is, 
but since a lot of you have decided to fight, I think most that 
will read these post here would say your CREDIBILITY, is the 
one that is zero. Because at some point I give information that 
can be seen as legal proof. None of you have any true proof only 
state what you want to say. Just like this post, no proof, only 
your opinion! 

If you give useful information then you are helping.  But to arguing 
about English semantic and calling people lairs is a TROLL and ONLY 
a TROLL. Which this newgroups from the first time I made a post just 
proves that you are TROLLS. And every newgroups have 100s of TROLLS 
running around. As long as people agree with them they are quite but 
when someone question them or trys to make them THINK they ATTACK
in packs!!!!


ALSO DOES FIGHTING WITH ME ADD OR HURTS THIS NEWGROUP?




In <46E3FA9A.6090409@obry.net>, Pascal Obry <pascal@obry.net> writes:
>anon a �crit :
>> Showing your TROLLISM!
>
>Isn't it the fourth or fifth time you called somebody a troll ? Just be
>cause somebody does not share your opinion...
>
>> If you check GNU GNAT 4.3 it contains
>> Ada.Numerics.Aux -- for Vxworks which link into GCC C libraies.
>
>Right.
>
>> Ada.Numerics.Aux -- for darwin also links to thier GCC C library.
>
>Right.
>
>> All Ada.Numerics.Aux use the C code.
>
>Nope, Gautier was right, the x86 version uses only Asm.
>
>At this point your credibility is probably around 0 on this forum.

 NO PROOF, ONLY YOUR OPINION, TYPE OF ANSWER!

>
>Pascal.
>
>-- 
>
>--|------------------------------------------------------
>--| Pascal Obry                           Team-Ada Member
>--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
>--|------------------------------------------------------
>--|              http://www.obry.net
>--| "The best way to travel is by means of imagination"
>--|
>--| gpg --keyserver wwwkeys.pgp.net --recv-key C1082595




^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-09 14:49                       ` anon
  2007-09-09 15:08                         ` Pascal Obry
@ 2007-09-09 15:38                         ` Markus E L
  1 sibling, 0 replies; 49+ messages in thread
From: Markus E L @ 2007-09-09 15:38 UTC (permalink / raw)



'Colossus DOT Pike AT worldnet DOT att DOT net (anon)' wrote:

<the following quote from some other paper:>

>  The compiler is composed of two main parts: the front-end and the 
>  back-end (cf. Figure 1.2). The front-end of the GNAT compiler is 
>  thus written in Ada95. The back-end of the compiler is the back-end 
>  of GCC proper, extended to meet the needs of Ada semantics 
>  [SGC94, Section 3.1].

<...>

>
>  The front-end comprises five phases (cf. Figure 1.3): lexical 
>  analysis, syntactic analysis (parsing), semantic analysis, AST 
>  expansion, and finally AST transformation into an equivalent C 
>  tree (this stage is labeled GiGi (GNAT to GNU transformation). 

>  These phases communicate by means of a rather compact Abstract 
>  Syntax Tree (AST). 

Reading seems to be an art you've only mastered incompletely so
far. Nowhere it says that GNAT produces C code (C tree is something
else).

- M




^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-09 14:54                       ` anon
@ 2007-09-09 16:01                         ` Markus E L
  0 siblings, 0 replies; 49+ messages in thread
From: Markus E L @ 2007-09-09 16:01 UTC (permalink / raw)



'anon AT anon DOT org (anon)' wrote:

> MOVE ON TROLL, MOVE ON!

Hm, are you the group's traffic police man or its "Blockwart"? Since
so far you've labeled around 6 people here as trolls (or should that
be TROLLS? Is the capsing important?), I doubt you're representing
c.l.a. in any way. So stop policing.

> PROOF IS ACCREDITED WEB SITES SUCH AS ACM, IEEE, 
> UNIVERSITY, OR SOFTWARE COMPANY. NOT 
> SOME "wikipedia.org' THAT CAN BE ALTERED BY ALMOST 
> ANYONE WHO VIST THE WEB PAGE!

You're still CAPSing.

You seem to have an incomplete understanding how the historical
sciences (and to a certain extent all sciences) work: By a certain
majority of researchers agreeing on what should from then on should be
considered established fact. To that end, historians participating in
the debate are required to quote sources on what they want to
establish as facts. None of the sources is proof, though, because
source might err, or might have been falsified in the past by
interested parties. Only by drawing on a number of various sources,
weighting them in their context (and by reputation) a complete picture
emerges and consensus can be reached.

Regarding Wikipedia: I haven't quoted that as as source, but rather as
a short and readable summary of what I consider to be established
history.

Regarding you attempts to "proof" something: As I said there are no
proofs regarding history. But you haven't even quoted sources. The
only thing I've seen so far are claims the "the ACM says so" or
something to the effect. Apart from the fact that the ACM review
process might also be incomplete (has been, indeed), that is not
enough: Please quote verse and chapter as any proper scientist should
do. Thank you. 

(And BTW: the ACM doesn't "check" the papers, as you said, at least
not in the sense a criminalist or exmperimental scientist does: They
are just peer reviewed and dependend on the reviewer single facts
might plainly be wrong (but not having fallen in the scope of
expertise of the reviewers) - so much about _single_ ACM papers as
source of historical truth. They are only sources.)

You yourself don't count as a source: Since your credibility factor
has approached negative values, you're rather an anti-source so far.

As a last comment (in this post): Wikipedia is nearer to the ideal of
a scientific process than your spoutings:

  - Wikipedia is reviewed, almost constantly in fact. :-)
  - Wikipedia very often quotes and references external sources.

On the other hand

  - You don't reference identifiable sources

  - You're the only one claiming a number of things so far and have
    been rebutted repeatedly.

So if I would have to decide: Whom should I rather believe, you, or
WP?  Guess ...

(Fortunately I have other choices like, e.g. starting with reading the
papers referenced by Micheal Feldmann in "The Handbook of Programming
languages").

-- Markus



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-09 15:22                           ` anon
@ 2007-09-09 16:03                             ` Markus E L
  2007-09-10  0:05                               ` Larry Kilgallen
  2007-09-09 16:05                             ` Markus E L
  2007-09-09 18:40                             ` Ed Falis
  2 siblings, 1 reply; 49+ messages in thread
From: Markus E L @ 2007-09-09 16:03 UTC (permalink / raw)



'anon AT anon DOT org (anon)' wrote:
>
> ALSO DOES FIGHTING WITH ME ADD OR HURTS THIS NEWGROUP?

I think it improves this newsgroup, since it flags nonesense as
nonsense. Rather important for posteriority, considering that news
articles will stay for the rest of the century.

-- Markus



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-09 15:22                           ` anon
  2007-09-09 16:03                             ` Markus E L
@ 2007-09-09 16:05                             ` Markus E L
  2007-09-09 18:40                             ` Ed Falis
  2 siblings, 0 replies; 49+ messages in thread
From: Markus E L @ 2007-09-09 16:05 UTC (permalink / raw)



'anon AT anon DOT org (anon)' wrote:

> I CALL THEM AS I SEE THEM!  TROLL. 
>
> And for me I do not care what you think of my CREDIBILITY is, 
> but since a lot of you have decided to fight, I think most that 
> will read these post here would say your CREDIBILITY, is the 
> one that is zero. Because at some point I give information that 
> can be seen as legal proof. 

Legal proof? I must've missed that. How does it looke like in your
hands? Or do you propose that you're testifying as witness? If so, the
question of credibility creeps in ... -- uh oh.

- M





^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-09 15:22                           ` anon
  2007-09-09 16:03                             ` Markus E L
  2007-09-09 16:05                             ` Markus E L
@ 2007-09-09 18:40                             ` Ed Falis
  2007-09-09 19:11                               ` Markus E L
  2 siblings, 1 reply; 49+ messages in thread
From: Ed Falis @ 2007-09-09 18:40 UTC (permalink / raw)


On Sun, 09 Sep 2007 11:22:23 -0400, anon <anon@anon.org> wrote:

> I CALL THEM AS I SEE THEM!  TROLL.

In Buddhist scriptures, the convention for opening a lecture or story is  
something along the lines of "Bhikksus"!  (meaning "Disciples, students  
...".  We now have a new convention in the c.l.a scriptures, where the  
stories and lecture start with the honorific: "TROLL"!



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-09 18:40                             ` Ed Falis
@ 2007-09-09 19:11                               ` Markus E L
  0 siblings, 0 replies; 49+ messages in thread
From: Markus E L @ 2007-09-09 19:11 UTC (permalink / raw)




"Ed Falis" wrote:

> On Sun, 09 Sep 2007 11:22:23 -0400, anon <anon@anon.org> wrote:
>
>> I CALL THEM AS I SEE THEM!  TROLL.
>
> In Buddhist scriptures, the convention for opening a lecture or story
> is  something along the lines of "Bhikksus"!  (meaning "Disciples,
> students  ...".  We now have a new convention in the c.l.a scriptures,
> where the  stories and lecture start with the honorific: "TROLL"!

Meaning: "You, who don't agree with me ...".

:-)

Regards -- Markus




^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-08 17:11                   ` anon
                                       ` (2 preceding siblings ...)
  2007-09-09 10:57                     ` Gautier
@ 2007-09-09 19:12                     ` Niklas Holsti
  2007-09-09 19:28                       ` Ed Falis
  3 siblings, 1 reply; 49+ messages in thread
From: Niklas Holsti @ 2007-09-09 19:12 UTC (permalink / raw)


anon wrote:
> WHERE IS YOU PROOF!!! If your going to call a person a liar then you 
> should provide proof it.

Your quoting style (top-posting) makes me unsure what you are 
shouting about, but I assume it is my reply to your claim that GNAT 
  translates Ada to C. I see that others have already replied to 
your post, but as you call on me for proof I, too, answer.

Firstly, according to Pascal Obry you did not make such a claim in 
the post to which I replied. If so, I withdraw my reply, apologise 
for my misunderstanding of what you wrote, and have nothing more to 
say on that point (because then I don't understand *what* you were 
saying).

Secondly I did not call you a liar, I said your statement was 
nonsense. If you believe your own nonsense it does not make you a liar.

> Read NYU GNAT (before Adacore) internal messages regarding 
> GNAT-RTS and GNU C compiling system. It is a direct internal C tree 
> structure of the C code.

I gather from this that I did correctly understand that you claim 
that GNAT translates Ada to C. OK, I'll try to prove why that is 
not so. As the reference consider the paper "Integrating GNAT into 
GCC" by Richard Kenner, NYU, which was published in the Proceedings 
of Tri-Ada '94, Baltimore, Maryland, 1994 and is available in the 
ACM digital library (for subscribers).

This paper very clearly describes the GNAT compilation process: 
from source to an Ada Abstract Syntax Tree (AST), then expansion of 
the AST to bring it closer to the GCC concepts (replacing some 
high-level Ada constructs with lower-level expansions), then Gigi 
that generates a GCC tree from the Ada AST, followed by the general 
GCC back-end.

The main point to note is the term *GCC tree*, not *C tree*. 
Possibly the shorter term has been used elsewhere, but not in 
Kenner's paper.

Since your posts describe the same compilation steps your claim 
reduces to the question: is the GCC tree a form of C?

I'm sure that the concepts and structure of the GCC tree are closer 
to C than to Ada. That's natural because GCC originated as a C 
compiler. But Kenner describes important differences between the 
GCC tree and plain C.

At the start of section 4 (page 86) Kenner says "The GCC tree is 
already more general than required for C, so relatively few 
additions to the type model had to be made to support Ada." Thus 
the GCC tree can express concepts that have no direct C equivalent. 
Two examples that Kenner brings up are integer types with dynamic 
ranges, and arrays with non-zero lower index bounds.

In section 4.2 (page 86) Kenner explains that two new GCC node 
types were added to represent records with discriminants, and a new 
sort of GCC type was added to represent variant records.

Moreover, some capabilities of the GCC tree that GNAT uses come 
from the GNU extensions to C, not from standard C (before C99, at 
least): nested procedures and dynamically sized arrays on the stack 
(automatic arrays).

> That can be printed as a C program.

I'm not surprised that the GCC tree can be printed out as something 
that looks like C -- most program representations can. If the tree 
is the result of compiling a C program it might even be real, 
standard C. But I doubt if this "C printout" is real C for a GCC 
tree that comes from an Ada program, because of the features in the 
GCC tree that go beyond standard C.

> The XGC Ada which is based on GNAT and uses C for its Real Time 
> application and TLD contains C close sources files from DEC's Ada
> libraries, which denote that both do not have an "Ada only 
> Run-Time System". 

Prove it, eh :-)

>>Then there is the Open Ravenscar Kernel ORK for GNAT, 
> 
> The only problem with that one is that it is 4 years and gcc lib 
> are out dated.  The two I gave are current.

Good, the more the merrier. I believe the ORK work continues within 
or with the support of AdaCore, these days, but I may be mistaken 
on that.

-- 
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
       .      @       .



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-09 19:12                     ` Niklas Holsti
@ 2007-09-09 19:28                       ` Ed Falis
  0 siblings, 0 replies; 49+ messages in thread
From: Ed Falis @ 2007-09-09 19:28 UTC (permalink / raw)


Oh Noble TROLL!

On Sun, 09 Sep 2007 15:12:51 -0400, Niklas Holsti  
<niklas.holsti@nospam.please> wrote:

A rather accurate description of what is really going on with GNAT.

- Ed




^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-09 16:03                             ` Markus E L
@ 2007-09-10  0:05                               ` Larry Kilgallen
  2007-09-10  3:10                                 ` Markus E L
  0 siblings, 1 reply; 49+ messages in thread
From: Larry Kilgallen @ 2007-09-10  0:05 UTC (permalink / raw)


In article <42lkbfrfl3.fsf@hod.lan.m-e-leypold.de>, Markus E L writes:
> 
> 'anon AT anon DOT org (anon)' wrote:
>>
>> ALSO DOES FIGHTING WITH ME ADD OR HURTS THIS NEWGROUP?
> 
> I think it improves this newsgroup, since it flags nonesense as
> nonsense.

Oh, I think the All-Caps does that well enough.



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-10  0:05                               ` Larry Kilgallen
@ 2007-09-10  3:10                                 ` Markus E L
  0 siblings, 0 replies; 49+ messages in thread
From: Markus E L @ 2007-09-10  3:10 UTC (permalink / raw)



'Kilgallen AT SpamCop DOT net (Larry Kilgallen)' wrote:

> In article <42lkbfrfl3.fsf@hod.lan.m-e-leypold.de>, Markus E L writes:
>> 
>> 'anon AT anon DOT org (anon)' wrote:
>>>
>>> ALSO DOES FIGHTING WITH ME ADD OR HURTS THIS NEWGROUP?
>> 
>> I think it improves this newsgroup, since it flags nonesense as
>> nonsense.
>
> Oh, I think the All-Caps does that well enough.

Quite right. But he starts capsing only after being contradicted, so
one needs to contradict a bit to get the self-flagging effect. :-).

Regards -- Markus



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-08 11:50                 ` Niklas Holsti
  2007-09-08 12:01                   ` Pascal Obry
  2007-09-08 17:11                   ` anon
@ 2007-09-10 12:51                   ` Colin Paul Gloster
  2 siblings, 0 replies; 49+ messages in thread
From: Colin Paul Gloster @ 2007-09-10 12:51 UTC (permalink / raw)


On 2007-09-08, Nicholas Holsti <niklas.holsti@nospam.please> wrote:

|-------------------------------------------------------------------------|
|"[..]                                                                    |
|                                                                         |
|Then there is the Open Ravenscar Kernel ORK for GNAT,                    |
|http://polaris.dit.upm.es/~ork/, also written in Ada.                    |
|                                                                         |
|[..]"                                                                    |
|-------------------------------------------------------------------------|

Some of it was written in Ada, much of it was written in C and copied
from RTEMS.



^ permalink raw reply	[flat|nested] 49+ messages in thread

* Re: Ravenscar-compliant bounded buffer
  2007-09-08  5:13                   ` anon
  2007-09-08 22:06                     ` Larry Kilgallen
@ 2007-09-11  2:44                     ` Randy Brukardt
  1 sibling, 0 replies; 49+ messages in thread
From: Randy Brukardt @ 2007-09-11  2:44 UTC (permalink / raw)


"anon" <anon@anon.org> wrote in message
news:DbqEi.507138$p47.352055@bgtnsc04-news.ops.worldnet.att.net...
...
> What I was trying to hint at without beating someone up about it was
> that the C code files should go.  Links to the Operating System and
> hardware drivers should be direct though use of the "Import pragma"
> not though a C interface driver file like GNAT and yes, and DEC
> still uses. And the C libraries need to be rewritten in Ada.

Many Ada compilers have little or no C in their runtime. There surely is
none in Janus/Ada (some assmbler, the rest is Ada), and my understanding is
that is also the case for several other compilers. But keep in mind that the
underlying OS (Windows for Janus/Ada) is probably written in C or something
even more error-prone. So what the Ada runtime is written in isn't likely to
have much effect on the reliability of the entire system.

We did once have a bare machine version of Janus/Ada (I know other companies
did too), but we dropped it for lack of demand. Almost every runs on some
sort of OS these days.

                              Randy.





^ permalink raw reply	[flat|nested] 49+ messages in thread

end of thread, other threads:[~2007-09-11  2:44 UTC | newest]

Thread overview: 49+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-09-04 13:53 Ravenscar-compliant bounded buffer Maciej Sobczak
2007-09-05  3:00 ` Steve
2007-09-05  7:38   ` Maciej Sobczak
2007-09-06  4:04     ` Steve
2007-09-06 14:06       ` Robert A Duff
2007-09-06 15:36         ` Dmitry A. Kazakov
2007-09-07  2:36           ` Robert A Duff
2007-09-06 21:13         ` Maciej Sobczak
2007-09-07  2:41           ` Robert A Duff
2007-09-07 11:56           ` anon
2007-09-07 19:44             ` Maciej Sobczak
2007-09-08  0:16               ` anon
2007-09-08  1:19                 ` Larry Kilgallen
2007-09-08  5:13                   ` anon
2007-09-08 22:06                     ` Larry Kilgallen
2007-09-09  2:17                       ` anon
2007-09-09 12:07                         ` Larry Kilgallen
2007-09-09 13:10                         ` Markus E L
2007-09-11  2:44                     ` Randy Brukardt
2007-09-08 11:50                 ` Niklas Holsti
2007-09-08 12:01                   ` Pascal Obry
2007-09-08 17:13                     ` anon
2007-09-08 17:11                   ` anon
2007-09-08 19:14                     ` Markus E L
2007-09-09 14:54                       ` anon
2007-09-09 16:01                         ` Markus E L
2007-09-09 10:38                     ` Gautier
2007-09-09 11:41                       ` anon
2007-09-09 13:19                         ` Markus E L
2007-09-09 13:52                         ` Pascal Obry
2007-09-09 15:22                           ` anon
2007-09-09 16:03                             ` Markus E L
2007-09-10  0:05                               ` Larry Kilgallen
2007-09-10  3:10                                 ` Markus E L
2007-09-09 16:05                             ` Markus E L
2007-09-09 18:40                             ` Ed Falis
2007-09-09 19:11                               ` Markus E L
2007-09-09 10:57                     ` Gautier
2007-09-09 14:49                       ` anon
2007-09-09 15:08                         ` Pascal Obry
2007-09-09 15:38                         ` Markus E L
2007-09-09 19:12                     ` Niklas Holsti
2007-09-09 19:28                       ` Ed Falis
2007-09-10 12:51                   ` Colin Paul Gloster
2007-09-07  1:38         ` Steve
2007-09-07  2:47           ` Robert A Duff
2007-09-05  7:46   ` Dmitry A. Kazakov
2007-09-05  8:17     ` brodax
2007-09-05  8:30     ` Jean-Pierre Rosen

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