!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 <> 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 <> 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 <> 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. ****************************************************************