
Here comes the new Gnu Ada compiler for Linux in its newly updated form
as of November 4th. The compiler still is under development, so expect
some bugs. A more or less final version is announced for the end of the
year.

The GNAT project will implement the full Ada9X language which has full
support of Object Oriented Programming (using a slightly different
approach than C++, see the paper intro-9x.txt), has already working
Generics (aka templates), exception handling, and a full tasking support
within the language itself (the runtime support is not yet ready)

What is new in this version (1.59):
----------------------------
  
    o  support for Ada 9X class-wide objects
    o  support for Ada 9X image attribute applies to float
    o  support for Ada 9X library package renaming
    o  type "Tag" moved from package System to new Ada 9X package Ada.Tags.
  
    o  image attributes for Integer
    o  exception renaming
    o  generic formal subprograms


There still are some problems in the current version (and in my Linux
port). If you find errors in the already implemented parts (see below),
please write to gnat-report@cs.nyu.edu. If you think it is Linux
related, please tell me (ebert@enpc.fr). I have tested the compiler on
the examples and of course on itself. The executable that you find in
this distribution has compiled itself. 



This distribution only contains two files:

./usr/bin/gnatbind
./usr/lib/gcc-lib/i486-linux/2.5.2/gnat1

and some documentation in
./usr/src/gnat

Since version 2.5.0, Ada support already is partially included in the
main distribution of GCC. So we don't need a special driver program
anymore. This means that you must have installed GCC 2.5.2 or you must
have my previous package. In the latter case you can simply copy the
"gnat1" over the old one:

% mv /usr/lib/gcc-lib/i486-linux/2.5.2/gnat1 /usr/lib/gcc-lib/i486-linux/2.4.5/gnat1


Documentation can be found in the directory

./usr/src/gnat/doc


Perhaps it is a good idea to get the latest Ada9X reference manual from:

ajpo.sei.cmu.edu:/public/ada9x/rm9x/v4.0

It might look a bit thick, but there are a lot of instructive examples
and you better understand the list of supported and unsupported features
of the current release.


Two working examples are in 

./usr/src/gnat/examples/hello 
./usr/src/gnat/examples/instruments


The first few packages of the runtime library are in 

./usr/src/gnat/rtl

I'll build a libada.a as soon as the include files don't have to be in
the current directory (a momentary limitation of GNAT).

Please read README.gnat (the original README form NYU) and gnat-intro (a
kind of user guide for GNU-Ada)



Features supported
------------------

The parser is a full Ada9X parser,and includes the latest decisions of the
mapping team, including the keyowrd -abstract-. Semantic analysis and code 
generation are in constant evolution, and several important Ada9X features
have been implemented in this release. In particular, tagged types, type
extensions,  and dynamic dispatching (but no private extensions yet) as well
as the full hierarchical library mechanism. 
 

Chapter 2
   pragma List, Page

Chapter 3
   Object declarations
   Number declarations

   Subtype declarations

   Type declarations
     Derived types and classes
     Enumeration types
        attributes (first, last, range, pos, val, image)
     Class-Wide types
     Character types
        attributes (first, last, range, pos, val, image)
     Boolean types
     Integer types
        attributes (first, last, range, pos, val, image)
     Modular types.
     Floating point (only operations on the predefined types)
     Array types
       attributes first, last, range, length
     Record types
       Discriminants and Discriminant constraints
       Variant Parts
     Tagged Types and extensions (without discriminant)
     Dispatching
     Access types
     Access to subprograms
     Incomplete types

Chapter 4
     Indexed Components
     Slices
     Selected Components
     Aggregates (record and array)
     Exponentiation
     Expressions (all forms)
        static concatenation
     type conversions  (except array conversions)

Chaper 5
     statements (all forms)

Chapter 6
     subprogram declaration and bodies
     subprogram calls 
       named and positional associations
       default parameters
     overloading of subprograms and operators
     functions returning unconstrained arrays
  
Chapter 7
     package declaration and bodies
     private types 
 
Chapter 8
    use clauses
    object, subprogram and package (including library package) renaming 
    exception renaming 

Chapter 10
    library units
    with clauses
    stubs and subunits
    pragma elaborate
    child units

Chapter 11
    exceptions
       declarations
       handlers
       raise statement

Chapter 12
    Generic units
    In and In-out generic parameters.
    Generic formal integer types.
    Generic formal array types.
    Generic formal access types.
    Generic formal subprograms

Chapter 13
    package System is more complete
       Address attribute
    pragma Import
    pragma Interface, Interface_Name
    Unchecked deallocation
    simple record representation clauses
    Unchecked conversion 


Features currently (11/3/1993) not supported
--------------------------------------------

Chapter 3
    Derived types
      with constraints
      from private types

    private type extensions

    Floating point declaration
      Floating point attributes
    Fixed point declaration
    Fixed point attributes
    tagged types with discriminants, 
    membership tests, conversion with class-wide types
    subtypes of modular types

Chapter 4
    Attributes other than first, last, pos, val, address
    dynamic concatenation
    aggregates for tagged types.
 
Chapter 6
    full conformance rules

Chapter 9
    Tasks and protected types (some semantic processing,  no runtime)

Chapter 11
    No constraint checking

Chapter 12
    Generic formal derived types.
    Generic formal packages.
    
Chapter 14
   Input/Output packages (all I/O is currently done with pragma interface)


BUGS

I think I have solved the "setjmp" problem. Gcc (gnat1) should report
syntax errors now correctly. If you have problems using gnat please tell
me (ebert@enpc.fr) first. I will check on a Sparc Station if it is a
Linux port problem or a bug in GNAT.

If you have general questions concerning Ada, please read comp.lang.ada
and the useful FAQ. A lot of Ada information can be found at
wuarchive.wustl.edu:/languages/ada


