Version 1.3 of acs/ac-00004.txt

Unformatted version of acs/ac-00004.txt version 1.3
Other versions for file acs/ac-00004.txt

!standard 1.1.3 (00)          00-12-21 AC95-00004/01
!class confirmation 00-12-21
!status received no action 00-12-21
!subject When do approved AIs take effect?
!summary
!appendix

From: Pan, Weston
Sent: Thursday, December 21, 2000 12:22 PM

Hi,

When an Ada Issue is approved by the ARG, is a compiler vendor
required to include the AI in order to claim that their compiler
conforms to the Ada95 standard? Basically, given two compilers:

Compiler A: Implements original Ada95 + approved AIs
Compiler B: Only implements original Ada95 language

Which of the two implements _the_  standard Ada95 language?

****************************************************************

From: Erhard Ploedereder
Sent: Thursday, December 21, 2000 4:56 PM

> When an Ada Issue is approved by the ARG, is a compiler vendor
> required to include the AI in order to claim that their compiler
> conforms to the Ada95 standard?

Legalistically speaking, what defines the standard is the ISO/IEC-8652:1995
document plus any subsequent Technical Corrigenda or Standard Amendments. A
Technical Corrigendum (made up of many AIs approved by ARG and WG9 so far)
is currently in the approval cycle at ISO and expected to become official in
a couple of months. A compiler is required to abide by all these documents,
once approved by ISO, in order to claim conformance.

Until it is in a Technical Corrigendum, an AI approved by ARG or WG9 has,
in principle, no binding force on implementations. Those AIs that are
classified as confirmations, however, can be seen as merely affirming
the official documents (even if their reading might be slightly unclear)
and hence could be regarded as binding. Here, in practice, the ACATS
conformance test suite might well add a test to enforce the AI
interpretation.

For the other AIs, it is up to the vendors to decide whether to comply
immediately or delay compliance until a Corrigendum or Amendment has been
approved. (Of course, if the AI fixes a real bug in the Standard, vendors
are well advised to comply immediately.)

> Basically, given two compilers:
> Compiler A: Implements original Ada95 + approved AIs
> Compiler B: Only implements original Ada95 language

> Which of the two implements _the_  standard Ada95 language?

If I equate "approved" with "officially published in a Technical
Corrigendum", the answer is: only Compiler A.

Otherwise, the answer is: both A and B.

****************************************************************

From: Randy Brukardt
Sent: Thursday, December 21, 2000 6:14 PM

To expand a bit on what Erhard said:

> Until it is in a Technical Corrigendum, an AI approved by ARG
> or WG9 has, in principle, no binding force on implementations.
> ...
> Here, in practice, the ACATS
> conformance test suite might well add a test to enforce the AI
> interpretation.

The policy of the old AVO with regards to AIs was that any AI approved by
WG9 was testable, and tests often were included in the ACVC for such AIs
(even for Binding Interpretation AIs). The ACAA has continued this policy
for the ACATS, so, as a practical matter, compilers may have to conform to
those AIs well before their official inclusion in the standard. (The ACAA is
currently concentrating on adding ACATS tests for the Corrigendum, tests on
other approved AIs are not a priority.)

AIs are supposed to represent a consensus about an issue, so a vendor not
conforming to one is disregarding that consensus. Ada vendors generally have
tracked AIs closely (for this reason and others), so including tests "early"
has not generated problems.

> > Basically, given two compilers:
> > Compiler A: Implements original Ada95 + approved AIs
> > Compiler B: Only implements original Ada95 language
>
> > Which of the two implements _the_  standard Ada95 language?

While a legalistic argument could be made that B implements "the" standard,
such a compiler probably would not be validated, and would have to contain
various bugs (as there are several places where the RM is just plain wrong).
I don't think I would want to use such a compiler!

In any case, once Technical Corrigendum 1 is approved, compiler B suddenly
would become "wrong", while compiler A will become more "right".

****************************************************************

From: Robert Dewar
Sent: Friday, December 22, 2000 9:08 AM

<<When an Ada Issue is approved by the ARG, is a compiler vendor
required to include the AI in order to claim that their compiler
conforms to the Ada95 standard? Basically, given two compilers:>>

The ARG has no authority, so its "approval" of an issue is simply a
recommendation that WG9 and eventually ISO issue a corrigendum with
the change. Until this is issued, no formal action has been taken
(No such corrigendum has been officially approved by ISO for either
Ada 83 or Ada 95, though one for Ada 95 may be approved in the near
future).

However, where the ARG is simply confirming the proper reading of the RM,
or noting that it is a clear ramification of other rules in the RM, then
the ARG is saying that in their expert opinion this is what the RM
already says. It would be very unusual for any vendor to disagee, since
in practice, if there is any significant disagreement when an issue is
discussed, it does not end up in the confirmation or ramification class.

Basically these two classes are used when a someone raises a question who
does not fully understand the RM. The ARG then points out whyt the question
is already answered by the RM.

From a formal point of view, a compiler is implementing *the* standard
Ada 95 language if it conforms to the RM and any subsequent corrigenda.
However, this is not a precise science, and conformance requires some
judgment in marginal cases. In practice, the ACATS tests function as a
practical measure of what conformance means.

****************************************************************

From: Robert Dewar
Sent: Friday, December 22, 2000 8:39 AM

<<Until it is in a Technical Corrigendum, an AI approved by ARG or WG9 has,
in principle, no binding force on implementations. Those AIs that are
classified as confirmations, however, can be seen as merely affirming
the official documents (even if their reading might be slightly unclear)
and hence could be regarded as binding. Here, in practice, the ACATS
conformance test suite might well add a test to enforce the AI
interpretation.>>

Confirmation say that the reading is NOT unclear. But the above note also
applies to ramifications where it is fair to say that the reading might
be unclear -- but a conforming compiler should also follow ramification
AI's.

****************************************************************

From: Robert Dewar
Sent: Friday, December 22, 2000 9:11 AM

<<The policy of the old AVO with regards to AIs was that any AI approved by
WG9 was testable, and tests often were included in the ACVC for such AIs
(even for Binding Interpretation AIs). The ACAA has continued this policy
for the ACATS, so, as a practical matter, compilers may have to conform to
those AIs well before their official inclusion in the standard. (The ACAA is
currently concentrating on adding ACATS tests for the Corrigendum, tests on
other approved AIs are not a priority.)
>>

In the case of binding interpretations, it is quite dubious for the ACATS
to include the test, especially when it is changing the language. Clearly
from a legal point of view, the compiler that FAILED the test in this case
would be the conforming one.

****************************************************************

From: Randy Brukardt
Sent: Friday, December 22, 2000 12:35 PM

Quite right. (Which is a major reason why the ACAA was so strongly in favor
of completing a Technical Corrigendum!!)

However, when an AI changes the language in some way, the test suite
certainly should not be enforcing the original language (otherwise, vendors
would be encourged to support obsolete interpretations). So the alternatives
are leaving the feature completely untested, or testing the new
interpretation. It depends on the feature which is the best option.

Most Ada vendors want to track the AIs; usually when a vendor challenges a
test, if an AI applies to the issue, they usually agree that the test is
correct. Of course, if a vendor challenged a test on the basis that an AI
changed the language and that their compiler conformed to the original
language, such a challenge would be accepted and the test would be marked
Not Applicable for that implementation.

An example of case where having a test for a Binding Interpretation (BI) is
important is AI-235 (the prefix of 'Access AI). This AI changes the
resolution of the prefix of 'Access, as we discovered that compilers varied
a lot, and none of them strictly adhered to the standard. This was a problem
for users. If we don't test the new interpretation, the user problem will
remain (as compilers will continue to vary). Thus, a test here serves to
highlight the way things *ought* to work. Certainly, if a vendor wants to
stick with the original RM, the ACAA would be happy to mark the test as Not
Applicable.

Given that the ARG is starting to work on Amendments, we probably ought to
consider adding a new class of optional test. (We do want to test
amendments, but we certainly can't insist on them.) We would use this for
tests covering BIs and Amendments not yet included in a Technical
Corrigendum or an Amendment. Exactly when these would be run, and how to
report the results of such tests would need to be discussed.

****************************************************************

From: Robert Dewar
Sent: Friday, December 22, 2000 5:12 PM

I think it is fine to just identify tests which dpeend on a BI, and understand
that they are optional.

****************************************************************

Questions? Ask the ACAA Technical Agent