GNAT IMPLEMENTED FEATURES LIST Current as of 01/26/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 2.02 ==================================== Extension aggregates are implemented (not much tested so far) The Storage_Pool mechanism is in place Functions returning unconstrained values shouldn't leak anymore Enumeration representation clauses are fully implemented Record representation clauses are implemented (currently there is a restriction that all fields must be given a position and tagged records cannot yet be given representation clauses) The constrained attribute is implemented Conformance checking is fully implemented Shared variables (pragmas Shared, Atomic, Atomic_Components, Volatile, and Volatile_Components) are implemented User-defined Initialize/Adjust/Finalize is now almost complete for controlled types as well as for types containing controlled components. (aggregates involving controlled types and functions returning objects with controlled components may still cause trouble). Alignment attribute and attribute definition clause are implemented Pred and Succ for fixed-point types are implemented Discard_Names pragma is implemented Arrays are passed properly to convention C routines Pragma Inspection_Point is implemented Pragma Locking_Policy is implemented Pragma Task_Dispatching_Policy is implemented Pragma Memory_Size is implemented (it is ignored anyway) Derived types from private types are impelmented Floating-point attribute functions are implemented: Adjacent, Ceiling, Compose, Copy_Sign, Exponent, Floor, Fraction, Leading_Part, Machine, Model, Pred, Remainder, Rounding, Scaling, Succ, Truncation, Unbiased_Rounding Pragma Optimize is implemented (checks that GCC optimization level is consistent) Pragma Reviewable is implemented (checks that GCC debug option "-g" is set) Pragma Controlled is implemented (but ignored so far) The attributes Version and Body_Version are implemented Pragma Linker_Options is implemented Attribute Max_Size_In_Storage_Elements is implemented The attribute Valid is implemented Requeue without abort is implemented Delay statement on OS/2 is now working correctly. The attribute Bit_Order is implemented Range checking for modular types Length checks are now implemented Pragma Import Fortran and COBOL are implemented Pragma Convention is now fully implemented (for C, Fortran, COBOL), Pragma Convention for Fortran correctly maps multi-dimensional arrays ======================================================================= Status of Features ============================================================================ = All of Ada 83 is implemented EXCEPT the following unimplemented features = ============================================================================ The following language-defined checks are not implemented: Discriminant Checks Elaboration Checks Range Checks on the elaboration of a subtype_indication Stack overflow checking Language-Defined Pragmas Pack for arrays Input-Output for Integer for type Long_Long_Integer. (only Put currently supported for Long_Long_Integer not Get) Delay is not yet fixed-point as required (the current temporary implementation uses floating-point to represent Delay). Tasking is currently implemented only on the following platforms SGI IRIX 5.2, Sun Sparc (SunOS 4.1), i386 running IBM OS/2 ========================================================================= = All of Ada 95 implemented EXCEPT the following unimplemented features = ========================================================================= CORE Protected entry families Protected subprogram pointers Condition protected entry calls Requeue Statement involving task entries Delay until Input-Output for Modular Types (Only Put is supported currently, Get not yet supported) Input-Output for Decimal Types Input-Output for Wide Text Objects of type with unknown discriminants 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 ANNEX A. PREDEFINED LANGUAGE ENVIRONMENT Ada.Exceptions Ada.Interrupts Ada.Streams.Stream_IO Ada.Wide_Text_IO Ada.Wide_Text_IO.Complex_IO ANNEX B. INTERFACING TO OTHER LANGUAGES The body of Interfaces.COBOL is not yet implemented ANNEX C. SYSTEMS PROGRAMMING Machine intrinsic subprograms Interrupt support The body of package Interrupts is not implemented Preelaboration requirements are not fully met ANNEX D. REAL-TIME SYSTEMS Tasking restrictions Synchronous task control ANNEX E. DISTRIBUTED SYSTEMS The distribution annex is under active development. Stub generation is not yet implemented, and there is no configuration control program. All pragmas are fully implemented. ANNEX F. INFORMATION SYSTEMS Ada.Text_IO.Editing Ada.Wide_Text_IO.Editing ANNEX G. NUMERICS Accuracy requirements for floating-point and complex not fully met ANNEX H. SAFETY AND SECURITY pragma Normalize_Scalars Safety and security restrictions ANNEX I. OBSOLESCENT FEATURES Interrupt entries ANNEX J. LANGUAGE-DEFINED ATTRIBUTES Caller Definite External_Tag Identity Input Output Read Storage_Pool Write ANNEX K. LANGUAGE DEFINED PRAGMAS Attach_Handler Export Interrupt_Handler Normalize_Scalars Queuing_Policy Restrictions