1.1.3 Conformity of an Implementation
Implementation Requirements
A
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 Reference Manual;
Supply all language-defined library units required
by this Reference Manual;
Contain no variations except those explicitly permitted
by this Reference Manual, 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 Reference Manual.
The
external effect of the execution of an Ada program is defined
in terms of its interactions with its external environment.
The
following are defined as
external interactions:
Any interaction with an external file (see
A.7);
Any call on an imported subprogram (see
Annex
B), 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
(see
C.6);
The values of imported and exported objects (see
Annex B) at the time of any other interaction
with the external environment.
A conforming implementation of this Reference
Manual 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 Reference Manual
for the semantics of the given program.
An implementation that fully conforms to the
core
of this Reference Manual shall support each capability required by the
core language (see
1.1.2), as specified.
Full conformance to a Specialized Needs Annex means that each capability
required by the Annex shall be provided as specified.
An implementation conforming, either in full or in
part, to this Reference Manual 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 the core
or a Specialized Needs Annex unless the provided construct is either
as specified in this Reference Manual or is more limited in capability
than that required by this Reference Manual. A program that attempts
to use an unsupported capability shall either be identified by the implementation
before run time or shall raise an exception at run time.
A conforming implementation of a language-defined
unit shall abide by all postconditions, type invariants, and default
initial conditions specified for the unit by this document (see
11.4.2).
Documentation Requirements
Certain
aspects of the semantics are defined to be either
implementation defined
or
unspecified. 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
case.
Implementation Advice
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.
NOTE The above requirements imply
that an implementation conforming to this Reference Manual can support
some of the capabilities required by a Specialized Needs Annex without
supporting all required capabilities.
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe