GNAT IMPLEMENTED FEATURES LIST
Current as of 01/23/95

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 3.02
====================================
    Implement packing of multidimensional arrays

    Get_Immediate now follows the implementation advice and works as intended
    (for SGI IRIX, Sparc SunOS/Solaris, Alpha OSF1, IBM OS/2 and Linux)

    The task attributes package is now fully functional

    Warnings for unset variables, and possible access before initialization

    pragma Warnings (On | Off) allows more detailed control of warnings
    pragma Source_File_Name allows specifying non-standard file names
    pragma No_Return allows specifying a procedure that never returns
    pragma Attach_Handler    (implemented on Sparc SunOS and Sparc Solaris only)
    pragma Interrupt_Handler (implemented on Sparc SunOS and Sparc Solaris only)

Latest features in GNAT version 3.01
====================================

    pragma Normalize_Scalars
    Ada.Text_IO.Editing
    Ada.Wide_Text_IO.Editing
    Incomplete types declared in the private part that are
     completed in the package body as unconstrained arrays.
    Full implementation of stream attributes, including the
     dispatching cases for class wide types.
    Private protected operations
    Pointers to unconstrained arrays may be double or single length. Double
     ("fat") is the default size (e.g. 64 on SGI), but rep clauses or a
     foreign convention will force them to single length.
    Aggregates for composite Types with controlled components
    Objects of type with unknown discriminants
    pragma Queuing_Policy
    pragma Source_File_Name (GNAT specific)
    True multiprocessing on Sparc Solaris

Latest features in GNAT version 2.07
====================================

    Discriminant checks
    Package Ada.Exceptions
    External_Tag attribute
    Identity attribute
    Range Checks on the elaboration of a subtype_indication
    Duration is an ordinary fixed-point type with delta of one nanosecond
    Package Interfaces.COBOL
    Protected subprogram pointers
    Caller attribute
    Restriction pragma
    All restrictions in real time annex
    All restrictions in safety and security annex
    Higher resolution clocks for tasking on SunOS/Solaris

Latest features in GNAT version 2.06
====================================

    Requeue Statement involving task entries
    inter-unit inlining (enabled by -O2 -gnatn)
    aggregates for simple controlled types

Latest features in GNAT version 2.05
====================================

    Elaboration Checks
    A new switch -gnati8 specifies the use of IBM PC Code Page 850 for
     the identifier character set (this is Latin-1 a la IBM PC)
    Protected entry families
    Ada.Synchronous_Task_Control
    Attribute Storage_Pool
    Packed arrays (including packed boolean arrays)
    Accessibility checks
    -I for specifying source and object path (see gnatinfo.txt for details)
    Conditional protected entry calls
    Delay until inside select statements

Latest features in GNAT version 2.04
====================================

    GNATMAKE utility (see gnatinfo.txt for details)
    Pragma Export
    Ada.Streams.Stream_IO
    Attribute Definite
    Interrupt entries
    Input-Output for Modular Types
    Input-Output for Decimal Types
    Input-Output for Integer for type Long_Long_Integer.
    The following are now implemented in package Ada.Text_IO
      Flush
      Look_Ahead
      Get_Immediate
    Text_IO.Complex_IO
    Text_IO.Text_Streams
    Wide_Text_IO
    Wide_Text_IO.Complex_IO
    Wide_Text_IO.Text_Streams

    Note: All the I/O packages have been rewritten from the
    ground up for this release, and should completely implement all
    features of the RM. To get file sharing, allowed only if the
    files are for the same I/O package and same mode, use a form
    parameter shared=yes.

Status of Features

  This list applies to the ports for the following targets:

   SGI IRIX 5.2
   Sun Sparc (SunOS 4.1 and Solaris 2.3),
   x86 running IBM OS/2, Linux

  Other targets are generally complete except that no tasking constructs
  are implemented.

==========================================================
= All of Ada 83 is implemented EXCEPT for the following: =
==========================================================

   Stack overflow checking is implemented only on the SGI machines

=========================================================================
= All of Ada 95 implemented EXCEPT the following unimplemented features =
=========================================================================

  CORE
    (fully implemented)
 
  ANNEX A. PREDEFINED LANGUAGE ENVIRONMENT
    Ada.Interrupts (implemented on Sparc SunOS and Sparc Solaris only)

  ANNEX B. INTERFACING TO OTHER LANGUAGES
    (fully implemented)

  ANNEX C. SYSTEMS PROGRAMMING
    Machine intrinsic subprograms
    Interrupt support (implemented on Sparc SunOS and Sparc Solaris only)
    Ada.Interrupts (implemented on Sparc SunOS and Sparc Solaris only)
    Record rep clauses require full specification

  ANNEX D. REAL-TIME SYSTEMS
    (fully implemented)

  ANNEX E. DISTRIBUTED SYSTEMS
    (fully implemented)
    (this refers to the compiler part, stub generation and the pragmas)

  ANNEX F. INFORMATION SYSTEMS
    (fully implemented)

  ANNEX G. NUMERICS
    Accuracy requirements for floating-point and complex not fully met

  ANNEX H. SAFETY AND SECURITY
    (fully implemented)

  ANNEX I. OBSOLESCENT FEATURES
    (fully implemented)

  ANNEX J. LANGUAGE-DEFINED ATTRIBUTES
    (fully implemented)

  ANNEX K. LANGUAGE DEFINED PRAGMAS
    Attach_Handler (implemented on Sparc SunOS and Sparc Solaris only)
    Interrupt_Handler (implemented on Sparc SunOS and Sparc Solaris only)
