!standard 0.3 (3) 04-11-02 AI95-00387/02 !standard 0.3 (5) !standard 0.3 (6) !standard 0.3 (32) !standard 0.3 (34) !standard 0.3 (38) !standard 0.3 (41) !standard 0.3 (42) !standard 0.3 (44) !standard 0.3 (45) !standard 0.3 (46) !standard 0.3 (47) !standard 0.3 (48) !standard 0.3 (49) !standard 0.3 (50) !standard 0.3 (51) !standard 0.3 (57) !class amendment 04-10-30 !status work item 04-10-30 !status received 04-10-30 !priority High !difficulty Easy !subject Introduction to Amendment !summary This revises the introduction to the International Standard in order to reflect the changes made by the Amendment. !problem We need a new Introduction. !proposal Old John was volunteered to write it. !wording Replace 0(3) by * Ada 95 Rationale. This gives an introduction to the new features of Ada incorporated in the 1995 edition of this Standard, and explains the rationale behind them. Programmers unfamiliar with Ada 95 should read this first. * Ada 2005 Rationale. This give an introduction to the changes and new features in Ada 2005 (compared with the 1995 edition), and explains the rationale behind them. Programmers should read this rationale before reading this Standard in depth. Curiously the old version refers to "Rationale for the Ada Programming Language - 1995 edition". It was never called that to my mind. That was sort of the title for the Ada 83 rationale. Modify 0(5) thus ...all of the text in [the RM95]{this International Standard} ... Modify 0(6) thus ...[This revision]{The 1995 revision} to the language was designed ..., and efficiency. {This amended version provides further flexibility and adds more standardized packages within the framework provided by the 1995 revision.} Modify 0(32) thus ...The enumeration types Boolean, Character,[and] Wide_Character{, and Wide_Wide_Character} are predefined. Modify 0(34) thus ...The array types String,[and] Wide_String{, and Wide_Wide_String} are predefined. Add after 0(38) Interface types provide abstract models from which other interfaces and types may be composed and derived. This provides a reliable form of multiple inheritance. Interface types may also be implemented by synchronized types (task types and protected types) thereby enabling task-safe programming and inheritance to be merged. Modify 0(41) [Representation]{Aspect} clauses ... Modify 0(42) ...and other capabilities[(such as string manipulation and random number generation)] by means ...[Other standard library packages are defined in annexes of the standard to support systems with specialized requirements.] Add after 0(42) The predefined standard library packages provide facilities such as string manipulation, containers of various kinds (vectors, lists, maps etc.), mathematical functions, random number generation, and access to the execution environment. The specialized annexes define further predefined library packages and facilities with especial emphasis on areas such as real-time scheduling, interrupt handling, distributed systems, numerical computation, and high-integrity systems. Replace 0(44-51) This revised International Standard modifies the edition of 1995 which replaced the first edition of 1987. In the 1995 edition, the following major language changes were incorporated: (The original list was a bit inconsistent. It started with noun clauses and then switched to sentences. And it needed changing to the past tense.) * Support for standard 8-Bit and 16-bit characters was added. See clauses 2.1, 3.5.2, 3.6.3, A.1, A.3, and A.4. * The type model was extended to include facilities for object-oriented programming with dynamic polymorphism. See the discussions of classes, derived types, tagged types, record extensions, and private extensions in clauses 3.4, 3.9, and 7.3. Additional forms of generic formal parameters were allowed as described in clauses 12.5.1 and 12.7. * Access types were extended to allow an access value to designate a subprogram or an object declared by an object declaration as opposed to just an object allocated on a heap. See clause 3.10. * Efficient data-oriented synchronization was provided by the introduction of protected types. See clause 9.4. * The library-level structure was extended to allow library units to be organized into a hierarchy of parent and child units. See clause 10.1. * Additional support was added for interfacing to other languages. See Annex B. * The Specialized Needs Annexes were added to provide specific support for certain application areas: Replace 0(57) * Annex H, "High Integrity Systems" (originally "Safety and Security") Add after 0(57) This Amended language (incorporating Amendment 1) modifies the 1995 International Standard by making changes and additions that improve the capability of the language and the reliability of programs written in the language. In particular the changes were designed to improve the portability of programs, interfacing to other languages, and both the object-oriented and real-time capabilities. The following major changes with respect to the 1995 edition are incorporated: * Support for program text is extended to cover the entire ISO/IEC 10646:2003 repertoire. Execution support now includes the 32-bit character set. See clauses 2.1, 3.5, 3.6, A.1, A.3, and A.4. * The object-oriented model has been improved by the addition of an interface facility which provides multiple inheritance and additional flexibility for type extensions. See clauses 3.4, 3.9, and 7.3. An alternative notation for calling operations more akin to that used in other languages has also been added. See clause 4.1. * Access types have been further extended to unify properties such as the ability to access constants and to exclude null values. See clause 3.10. Anonymous access types are now permitted more freely and anonymous access-to-subprogram subtypes are introduced to support "downward closures". See clauses 3.3, 3.6, 3.10, and 8.5.1. * The control of structure and visibility has been enhanced to permit mutually dependent references between units and finer control over access from the private part of a package. See clauses 3.10.1 and 10.1.2. In addition limited types have been made more useful by the provision of aggregates, constants and constructor functions. See clauses 4.3.1, 6.5, and 7.5. * The predefined library has been extended to include better string handling, a major container library, file directory and name management, and access to the execution environment. See clauses A.4, A.16, A.17, and A.18. * Interfaces to other languages have been improved by the inclusion of a pragma for C unions. See clause B.3. * Two of the Specialized Needs Annexes have been considerably enhanced. * The Real-Time Systems Annex now includes: The Ravenscar profile for high-integrity systems, further dispatching policies such as Round Robin and Earliest Deadline First, and various timing mechanisms for the control of CPU budgets etc. See clauses D.2, D.13, D.14, and D.15. * The Numerics Annex now includes support for real and complex vectors and matrices as previously defined in ISO/IEC 13813 plus further basic operations for linear algebra. See clause G.3. * Finally, the overall reliability of the language has been improved by a number of introductions. These include new syntax which detects accidental overloading, as well as pragmas for making assertions and giving better control over the suppression of checks. See clauses 6.1, 11.4.2, and 11.5. !discussion The overall description has not been changed very much (this reflects the fact that this amendment is really a super polish to Ada 95 rather than a rebuild). Apart from minor changes to the opening remarks, the changes are: The mention of wide-wide characters and strings. This is perhaps unnecessary but the existing paragraphs lead one into doing that. A paragraph on interfaces was added. This is an important addition and merits mention at this high level. The existing one paragraph on the predefined environment has been extended to three paragraphs. Much of the additional capability is provided through library packages and the existing description was probably too weak anyway. The list of changes from Ada 83/87 to Ada 95 has been retained but placed in the past tense; a further list of major changes from Ada 95 to Ada 2005 has been added. !example Not applicable !corrigendum TBD !ACATS test Not applicable !appendix *************************************************************