GNAT IMPLEMENTED FEATURES LIST
Current as of 8/20/94

Here is the list of implemented and not implemented features. A more precise
description of the GNAT system is provided in the file 'gnatinfo.txt', which is
part of the GNAT distribution.

Latest features in GNAT version 1.82
===================================
   Private extensions

   Fixed point types and operations (with some limitations -- see below)
   Input-Output for Fixed Point Types

   Callable attribute
   Count attribute
   Image attribute for modular types
   Image attribute for fixed types
   Terminated attribute
   Wide_Image attribute
   Wide_Value attribute
   Width attribute

   package Interfaces.C.Pointers

   Derived types from Standard.Character
   Derived types from Standard.Wide_Character
   
   Instantiations of modular types
   Input-Output for modular Types
   (Put is supported currently, Get is not yet supported for modular types)

   Input-Output for Integer for type Long_Long_Integer.
   (Put supported for Long_Long_Integer, Get is not supported yet for this type)

   Text_io should be much faster due to correction in bottleneck caused by
   the isatty function.
   
=======================================================================

Status of Features
------------------

The parser is a full Ada9X parser, which implements the Ada 9X language
as defined by version 5.0 of the Draft International Standard. Semantic
analysis and code generation are in constant evolution.

All of Ada 83 is implemented except the following unimplemented features:

   Attributes
     Constrained, First_Bit, Last_Bit, Position,

   Derived types from subtypes
   Derived types from private types

   Fixed point types and operations now work with the following limitations:
      for multiplying operators:
         ordinary: max (abs (lower bound), abs (upper bound)) / delta < 2 ** 31
         decimal : digits < 10
   
      for relational and adding operator:
         ordinary: max (abs (lower bound), abs (upper bound)) / delta < 2 ** 63
         decimal : digits < 19
   
      for conversion to integer values:
         the integer type must have a size <= Standard.Integer'Size
   

   The following language-defined checks are not implemented:

      Discriminant Check
      Elaboration Check
      Length Check
      No range checking on modular, floating pt and fixed pt types
      No Overflow Check available for floating point types.
      Overflow Check for other types only with -gnato switch (software)
      Range Check on the elaboration of a subtype_indication

   Conformance checking
  
   Machine Code Insertions

   Tasking (Currently works on Sparc SunOS verion only) except for:
      Delay Statements, Duration, and Time
      Timed Entry Calls
      Abort of a Task - Abort of a Sequence of Statements

   Shared Variables
   package Calendar

   Input-Output for Integer for type Long_Long_Integer.
   (Only Put currently supported for Long_Long_Integer not Get)


   Package Sequential_IO
   Package Direct_IO

   Language-Defined Pragmas
     Inline
     Optimize
     Pack
     Priority

   Record Layout
     Storage Place Attributes
     Bit Ordering
     Record Representation Clauses

=================================================================
All of Ada 9X implemented except the following:

    Decimal types

    Aggregates for tagged types

    User-Defined Assignment and Finalization (only simple cases)
    Completion and Finalization (only simple cases)

    Protected Units and Protected Objects
    Protected Subprograms
    Requeue Statement
    Asynchronous Transfer of Control

    Instantiations of decimal types

    Input-Output for modular Types
    (Only Put is supported currently, Get not yet supported)

    Input-Output for decimal Types
    Input-Output for Wide Text

   Unimplemented subprograms in package Ada.Text_IO
      Flush
      Look_Ahead
      Get_Immediate
 
    Accessibility checks

    Stream-Oriented Attributes of Specific Types
    Stream-Oriented Attributes of Class-Wide Types

    package Ada.Decimal
    package Ada.Dynamic_Priorities
    package Ada.Exceptions and exception occurrences
    package Ada.Interrupts
    package Ada.Streams
    package Ada.Streams.Stream_IO
    package Ada.Synchronous_Task_Control
    package Ada.Text_IO.Pictures
    package Ada.Wide_Text_IO

    package Interfaces.Cobol
    package Interfaces.Fortran

    Wide_String Handling

    Attributes
       adjacent, alignment, bit_order, body_version, caller, ceiling,
       component_size, compose, copy_sign, definite, exponent,
       external_tag, floor, fraction, identity, input, leading_part,
       machine, max_size_in_storage_elements, model, modulus, output
       paritition_id, read, remainder, round, rounding, scale, 
       scaling, storage_pool, tag, truncation, unbiased_rounding,
       valid, version, write

       pred and succ for float and fixed point types

    Language-Defined Pragmas
      All_Calls_Remote
      Asynchronous
      Atomic_Components
      Atomic
      Attach_Handler
      Controlled
      Convention   (has some restrictions)
      Discard_Names
      Export 
      Import       (has some restrictions)
      Inspection_Point
      Interrupt_Handler
      Interrupt_Priority
      Linker_Options
      Locking_Policy
      Normalize_Scalars
      Queuing_Policy
      Remote_Call_Interface
      Remote_Types
      Restrictions
      Reviewable
      Shared_Passive
      Storage_Size
      Task_Dispatching_Policy
      Volatile_Components
      Volatile

    Annex G. Systems Programming
    Annex H. Real-Time Systems
    Annex I. Distributed Systems
    Annex J. Information Systems
    Annex K. Numerics

    A preliminary version of ada.numerics.generics_complex_functions is
    available, though not extensively tested yet.

