.. _About_This_Guide:

****************
About This Guide
****************

.. only:: PRO

   For ease of exposition, 'GNAT Pro' will be referred to simply as
   'GNAT' in the remainder of this document.

This manual contains useful information in writing programs using the
GNAT compiler.  It includes information on implementation dependent
characteristics of GNAT, including all the information required by
Annex M of the Ada language standard.

GNAT implements Ada 95, Ada 2005 and Ada 2012, and it may also be
invoked in Ada 83 compatibility mode.
By default, GNAT assumes Ada 2012,
but you can override with a compiler switch
to explicitly specify the language version.
(Please refer to the *GNAT User's Guide* for details on these switches.)
Throughout this manual, references to 'Ada' without a year suffix
apply to all the Ada versions of the language.

Ada is designed to be highly portable.
In general, a program will have the same effect even when compiled by
different compilers on different platforms.
However, since Ada is designed to be used in a
wide variety of applications, it also contains a number of system
dependent features to be used in interfacing to the external world.

.. index:: Implementation-dependent features

.. index:: Portability

Note: Any program that makes use of implementation-dependent features
may be non-portable.  You should follow good programming practice and
isolate and clearly document any sections of your program that make use
of these features in a non-portable manner.

What This Reference Manual Contains
===================================

This reference manual contains the following chapters:

* :ref:`Implementation_Defined_Pragmas`, lists GNAT implementation-dependent
  pragmas, which can be used to extend and enhance the functionality of the
  compiler.

* :ref:`Implementation_Defined_Attributes`, lists GNAT
  implementation-dependent attributes, which can be used to extend and
  enhance the functionality of the compiler.

* :ref:`Standard_and_Implementation_Defined_Restrictions`, lists GNAT
  implementation-dependent restrictions, which can be used to extend and
  enhance the functionality of the compiler.

* :ref:`Implementation_Advice`, provides information on generally
  desirable behavior which are not requirements that all compilers must
  follow since it cannot be provided on all systems, or which may be
  undesirable on some systems.

* :ref:`Implementation_Defined_Characteristics`, provides a guide to
  minimizing implementation dependent features.

* :ref:`Intrinsic_Subprograms`, describes the intrinsic subprograms
  implemented by GNAT, and how they can be imported into user
  application programs.

* :ref:`Representation_Clauses_and_Pragmas`, describes in detail the
  way that GNAT represents data, and in particular the exact set
  of representation clauses and pragmas that is accepted.

* :ref:`Standard_Library_Routines`, provides a listing of packages and a
  brief description of the functionality that is provided by Ada's
  extensive set of standard library routines as implemented by GNAT.

* :ref:`The_Implementation_of_Standard_I/O`, details how the GNAT
  implementation of the input-output facilities.

* :ref:`The_GNAT_Library`, is a catalog of packages that complement
  the Ada predefined library.

* :ref:`Interfacing_to_Other_Languages`, describes how programs
  written in Ada using GNAT can be interfaced to other programming
  languages.

* :ref:`Specialized_Needs_Annexes`, describes the GNAT implementation of all
  of the specialized needs annexes.

* :ref:`Implementation_of_Specific_Ada_Features`, discusses issues related
  to GNAT's implementation of machine code insertions, tasking, and several
  other features.

* :ref:`Implementation_of_Ada_2012_Features`, describes the status of the
  GNAT implementation of the Ada 2012 language standard.

* :ref:`Obsolescent_Features` documents implementation dependent features,
  including pragmas and attributes, which are considered obsolescent, since
  there are other preferred ways of achieving the same results. These
  obsolescent forms are retained for backwards compatibility.

* :ref:`Compatibility_and_Porting_Guide` presents some guidelines for
  developing portable Ada code, describes the compatibility issues that
  may arise between GNAT and other Ada compilation systems (including those
  for Ada 83), and shows how GNAT can expedite porting applications
  developed in other Ada environments.

* :ref:`gnu_fdl` contains the license for this document.

.. index:: Ada 95 Language Reference Manual

.. index:: Ada 2005 Language Reference Manual

This reference manual assumes a basic familiarity with the Ada 95 language, as
described in the
:title:`International Standard ANSI/ISO/IEC-8652:1995`.
It does not require knowledge of the new features introduced by Ada 2005 or
Ada 2012.
All three reference manuals are included in the GNAT documentation
package.

Conventions
===========
.. index:: Conventions, typographical

.. index:: Typographical conventions

Following are examples of the typographical and graphic conventions used
in this guide:

* ``Functions``, ``utility program names``, ``standard names``,
  and ``classes``.

* ``Option flags``

* :file:`File names`

* ``Variables``

* *Emphasis*

* [optional information or parameters]

* Examples are described by text

  ::

    and then shown this way.

* Commands that are entered by the user are shown as preceded by a prompt string
  comprising the ``$`` character followed by a space.

Related Information
===================

See the following documents for further information on GNAT:

* :title:`GNAT User's Guide for Native Platforms`,
  which provides information on how to use the
  GNAT development environment.

* :title:`Ada 95 Reference Manual`, the Ada 95 programming language standard.

* :title:`Ada 95 Annotated Reference Manual`, which is an annotated version
  of the Ada 95 standard.  The annotations describe
  detailed aspects of the design decision, and in particular contain useful
  sections on Ada 83 compatibility.

* :title:`Ada 2005 Reference Manual`, the Ada 2005 programming language standard.

* :title:`Ada 2005 Annotated Reference Manual`, which is an annotated version
  of the Ada 2005 standard.  The annotations describe
  detailed aspects of the design decision.

* :title:`Ada 2012 Reference Manual`, the Ada 2012 programming language standard.

* :title:`DEC Ada, Technical Overview and Comparison on DIGITAL Platforms`,
  which contains specific information on compatibility between GNAT and
  DEC Ada 83 systems.

* :title:`DEC Ada, Language Reference Manual`, part number AA-PYZAB-TK, which
  describes in detail the pragmas and attributes provided by the DEC Ada 83
  compiler system.
