Version 1.1 of ai05s/ai05-0245-1.txt
!standard 0.3(57.11/2) 11-03-10 AI05-0245-1/01
!class Amendment 11-03-10
!status Amendment 2012 11-03-10
!status work item 11-03-10
!status received 11-03-10
!priority Low
!difficulty Easy
!subject Introduction update for Ada 2012
!summary
The Introduction to the standard is updated to reflect the additions of
Ada 2012.
!problem
The Introduction of the Standard does not reflect the additions of Ada 2012.
!proposal
Ask John Barnes to write a nice introduction.
!wording
Add after Introduction (57.11/2):
Amendment 2 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, enhancements are made to
address two important issues, namely, the particular problems of
multiprocessor architectures, and the need to further increase the
capabilities regarding assertions for correctness.
The following significant changes with respect to the 1995 edition as amended by
Amendment 1 are incorporated:
* New syntax (the aspect specification) is introduced to enable
properties to be specified for various entities in a more structured manner
than through pragmas. See clause 13.3.1.
* The concept of assertions introduced in the 2005 edition is extended
with the ability to specify preconditions and postconditions for subprograms,
and invariants for private types. The concept of constraints in defining
subtypes is supplemented with subtype predicates which enable subsets to be
specified other than as simple ranges. These properties are all indicated
using aspect specifications. See clauses 3.2.4, 13.3.2, and 13.3.3.
* New forms of expressions are introduced. These are if expressions,
case expressions, quantified expressions and expression functions. As well as
being useful for programming in general in avoiding the introduction of
unnecessary assignments, they are especially valuable in conditions and
invariants since they avoid the need to introduce auxiliary functions. See
clauses 4.5.7, 4.5.8, and 6.8. Membership tests are also made more flexible.
See clauses 4.4 and 4.5.2.
* A number of changes are made to parameters. Functions may now have
parameters of all modes. In order to mitigate consequent (and indeed
existing) problems of inadvertent order dependence, rules are introduced to
reduce aliasing. A parameter may now be explicitly marked as aliased and
incomplete types may be used as parameters in certain circumstances. See
clauses 3.10.1, 6.1, and 6.4.1.
* The use of access types is now more flexible. The rules for
accessibility and certain conversions are improved. See clauses 3.10.2,
4.5.2, 4.6, and 8.6. Furthermore, better control of storage pools is
provided. See clause 13.11.4.
* The Real-Time Systems Annex now includes facilities for defining
domains of processors and assigning tasks to them. Improvements are made to
scheduling and budgeting facilities. See clauses D.10.1, D.14, and D.16.
* A number of important improvements are made to the standard library.
These include packages for conversions between strings and UTF encodings,
and classification functions for wide and wide wide characters.
Internationalization is catered for by a package giving locale information.
See clauses A.3, A.4.11, and A.19. The container library is extended to include
bounded forms of the existing containers and new containers for indefinite
objects, multiway trees, and queues. See clause A.18.
* Finally, features are added primarily to ease the use of containers
such as the ability to iterate over all elements in a container without
having to encode the iteration. These can also be used for iteration over
arrays. See clauses 4.1.5, 4.1.6, and 5.5.1.
!discussion
We're not making any changes to the language summary.
[Should we make any changes? Do we need to? - Editor.]
!corrigendum 0.3(57.11/2)
Insert after the paragraph:
- The overall reliability of the language has been enhanced by a number
of improvements. 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.
the new paragraphs:
Amendment 2 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, enhancements are made to
address two important issues, namely, the particular problems of
multiprocessor architectures, and the need to further increase the
capabilities regarding assertions for correctness.
The following significant changes with respect to the 1995 edition as amended by
Amendment 1 are incorporated:
- New syntax (the aspect specification) is introduced to enable
properties to be specified for various entities in a more structured manner
than through pragmas. See clause 13.3.1.
- The concept of assertions introduced in the 2005 edition is extended
with the ability to specify preconditions and postconditions for subprograms,
and invariants for private types. The concept of constraints in defining
subtypes is supplemented with subtype predicates which enable subsets to be
specified other than as simple ranges. These properties are all indicated
using aspect specifications. See clauses 3.2.4, 13.3.2, and 13.3.3.
- New forms of expressions are introduced. These are if expressions,
case expressions, quantified expressions and expression functions. As well as
being useful for programming in general in avoiding the introduction of
unnecessary assignments, they are especially valuable in conditions and
invariants since they avoid the need to introduce auxiliary functions. See
clauses 4.5.7, 4.5.8, and 6.8. Membership tests are also made more flexible.
See clauses 4.4 and 4.5.2.
- A number of changes are made to parameters. Functions may now have
parameters of all modes. In order to mitigate consequent (and indeed
existing) problems of inadvertent order dependence, rules are introduced to
reduce aliasing. A parameter may now be explicitly marked as aliased and
incomplete types may be used as parameters in certain circumstances. See
clauses 3.10.1, 6.1, and 6.4.1.
- The use of access types is now more flexible. The rules for
accessibility and certain conversions are improved. See clauses 3.10.2,
4.5.2, 4.6, and 8.6. Furthermore, better control of storage pools is
provided. See clause 13.11.4.
- The Real-Time Systems Annex now includes facilities for defining
domains of processors and assigning tasks to them. Improvements are made to
scheduling and budgeting facilities. See clauses D.10.1, D.14, and D.16.
- A number of important improvements are made to the standard library.
These include packages for conversions between strings and UTF encodings,
and classification functions for wide and wide wide characters.
Internationalization is catered for by a package giving locale information.
See clauses A.3, A.4.11, and A.19. The container library is extended to include
bounded forms of the existing containers and new containers for indefinite
objects, multiway trees, and queues. See clause A.18.
- Finally, features are added primarily to ease the use of containers
such as the ability to iterate over all elements in a container without
having to encode the iteration. These can also be used for iteration over
arrays. See clauses 4.1.5, 4.1.6, and 5.5.1.
!ACATS test
None needed.
!ASIS
No ASIS impact.
!appendix
From: John Barnes
Sent: Thursday, March 10, 2011 12:08 PM
Herewith a draft new lump of text for incorporation in the Introduction.
[This is version /01 of this AI - Editor.]
I have avoided embedding colourful comments such as (Phew - this new bit
stinks).
****************************************************************
From: Randy Brukardt
Sent: Thursday, March 10, 2011 5:26 PM
> Herewith a draft new lump of text for incorporation in the
> Introduction.
Thanks for getting this done in a timely fashion. (For the rest of you,
especially Ed, Bob, and Tucker, how are you doing with your homework?? :-) This
will be AI05-0245-1.
One solitary comment:
"The following significant changes with respect to the 2005 edition are
incorporated:"
The only problem with this is that there was no ISO edition for Ada 2005, and
for ISO purposes nothing happened in 2005 anyway (Amendment 1 was published in
2007). We have to say something like:
"The following significant changes with respect to the 1995 edition as amended
by the 2007 amendment are incorporated:"
But that probably would probably rile up the people who think that ever
mentioning the real date of 2007 is blasphony. So probably it would be better to
just mention the document by number:
"The following significant changes with respect to the 1995 edition as amended
by Amendment 1 are incorporated:"
I also found a bunch of incorrect clause references (and one missing one), all
of which I fixed. (It's pretty obvious from the text to which clauses you are
referring.)
****************************************************************
Questions? Ask the ACAA Technical Agent