- 39.a
- Discussion: The next three headings list all language changes between Ada 83 and Ada 9X. Language changes are any change that changes the set of text strings that are legal Ada programs, or changes the meaning of any legal program. Wording changes, such as changes in terminology, are not language changes. Each language change falls into one of the following three categories:
- Inconsistencies With Ada 83
- 39.b
- This heading lists all of the upward inconsistencies between Ada 83 and Ada 9X. Upward inconsistencies are situations in which a legal Ada 83 program is a legal Ada 9X program with different semantics. This type of upward incompatibility is the worst type for users, so we only tolerate it in rare situations.
- 39.c
- (Note that the semantics of a program is not the same thing as the behavior of the program. Because of Ada's indeterminacy, the "semantics" of a given feature describes a set of behaviors that can be exhibited by that feature. The set can contain more than one allowed behavior. Thus, when we ask whether the semantics changes, we are asking whether the set of behaviors changes.)
- 39.d
- This is not part of the definition of the language, and does not appear in the RM9X.
- Incompatibilities With Ada 83
- 39.e
- This heading lists all of the upward incompatibilities between Ada 83 and Ada 9X, except for the ones listed under "Inconsistencies With Ada 83" above. These are the situations in which a legal Ada 83 program is illegal in Ada 9X. We do not generally consider a change that turns erroneous execution into an exception, or into an illegality, to be upwardly incompatible.
- 39.f
- This is not part of the definition of the language, and does not appear in the RM9X.
- Extensions to Ada 83
- 39.g
- This heading is used to list all upward compatible language changes; that is, language extensions. These are the situations in which a legal Ada 9X program is not a legal Ada 83 program. The vast majority of language changes fall into this category.
- 39.h
- This is not part of the definition of the language, and does not appear in the RM9X.
- 39.i
- As explained above, the next heading does not represent any language change:
- Wording Changes From Ada 83
- 39.j
- This heading lists some of the non-semantic changes between RM83 and the RM9X. It is incomplete; we have not attempted to list all wording changes, but only the "interesting" ones.
- 39.k
- This is not part of the definition of the language, and does not appear in the RM9X.