1.1.3 Conformity of an Implementation with the Standard
conforming implementation shall:
Translate and correctly execute legal programs
written in Ada, provided that they are not so large as to exceed the
capacity of the implementation;
Identify all programs or program units that are
so large as to exceed the capacity of the implementation (or raise an
appropriate exception at run time);
Identify all programs or program units that contain
errors whose detection is required by this International Standard;
Supply all language-defined library units required
by this International Standard;
Contain no variations except those explicitly permitted
by this International Standard, or those that are impossible or impractical
to avoid given the implementation's execution environment;
Specify all such variations in the manner prescribed
by this International Standard.
of the execution of an Ada program is defined
in terms of its interactions with its external environment.
following are defined as external interactions
Any interaction with an external file (see A.7
Any call on an imported subprogram (see Annex
), including any parameters passed to it;
Any result returned or exception propagated from
a main subprogram (see 10.2
) or an exported
subprogram (see Annex B
) to an external caller;
Any read or update of an atomic or volatile object
The values of imported and exported objects (see
) at the time of any other interaction
with the external environment.
A conforming implementation of this International
Standard shall produce for the execution of a given Ada program a set
of interactions with the external environment whose order and timing
are consistent with the definitions and requirements of this International
Standard for the semantics of the given program.
An implementation that conforms to this Standard
shall support each capability required by the core language as specified.
In addition, an implementation that conforms to this Standard may conform
to one or more Specialized Needs Annexes (or to none). Conformance to
a Specialized Needs Annex means that each capability required by the
Annex is provided as specified.
An implementation conforming to this International
Standard may provide additional aspects, attributes, library units, and
pragmas. However, it shall not provide any aspect, attribute, library
unit, or pragma having the same name as an aspect, attribute, library
unit, or pragma (respectively) specified in a Specialized Needs Annex
unless the provided construct is either as specified in the Specialized
Needs Annex or is more limited in capability than that required by the
Annex. A program that attempts to use an unsupported capability of an
Annex shall either be identified by the implementation before run time
or shall raise an exception at run time.
aspects of the semantics are defined to be either implementation defined
. In such cases, the set of possible effects is
specified, and the implementation may choose any effect in the set. Implementations
shall document their behavior in implementation-defined situations, but
documentation is not required for unspecified situations. The implementation-defined
characteristics are summarized in M.2
The implementation may choose to document implementation-defined
behavior either by documenting what happens in general, or by providing
some mechanism for the user to determine what happens in a particular
If an implementation detects
the use of an unsupported Specialized Needs Annex feature at run time,
it should raise Program_Error if feasible.
If an implementation wishes to provide implementation-defined
extensions to the functionality of a language-defined library unit, it
should normally do so by adding children to the library unit.
2 The above requirements imply that an
implementation conforming to this Standard may support some of the capabilities
required by a Specialized Needs Annex without supporting all required
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe