Rationale for Ada 2012
1.2 Scope of revision
The changes from Ada
95 to Ada 2005 were significant (although not so large as the changes
from Ada 83 to Ada 95). The main additions were
in the OO area, multiple inheritance using interfaces
and the ability to make calls using prefixed notation,
more flexible access types with anonymous types,
more control over null and constant, and downward closures via access
to subprogram types,
enhanced structure and visibility control by the
introduction of limited with and private with clauses and by an extended
form of return statement,
in the real-time area, the Ravenscar profile
[2],
various new scheduling polices, timers and execution time budget control,
some minor improvements to exception handling,
numerics (especially fixed point) and some further pragmas such as Assert,
various extensions to the standard library such
as the introduction of operations on vectors and matrices, further operations
on times and dates, and operations on wide wide characters; and especially:
a comprehensive library for the manipulation of
containers of various kinds.
The changes from Ada 2005 to Ada 2012 were intended
to be relatively modest and largely to lead on from the experience of
the additions introduced in Ada 2005. But one thing led to another and
in fact the changes are of a similar order to those from Ada 95 to Ada
2005.
From the point of view of the ISO standard, Ada 2005
is the Ada 95 standard modified by two documents. First there was a Corrigendum
issued in 2001
[3] and then an Amendment
issued in 2007
[4]. In principle the
poor user thus has to study these three documents in parallel to understand
Ada 2005. However, they were informally incorporated into the Ada 2005
Reference Manual
[5].
In the case of Ada 2012, this process of developing
a further formal amendment would then lead to the need to consult four
documents and so the intention is that the new Edition will formally
be a single Revision.
The scope of this Revision
is guided by a document issued by WG9 to the ARG in October 2008
[1].
The essence is that the ARG is requested to pay particular
attention to
a)
Improvements that will maintain or improve Ada's advantages, especially
in those user domains where safety and criticality are prime concerns.
Within this area it cites improving the use and functionality of containers,
the ability to write and enforce contracts for Ada entities (for instance,
via preconditions) and the capabilities of Ada on multicore and multithreaded
architectures.
b)
Improvements that will remedy shortcomings in Ada. It cites in particular
the safety, use, and functionality of access types and dynamic storage
management.
So the ARG is asked to improve both OO and real-time
with a strong emphasis on real-time and high integrity features. Moreover,
"design by contract" features should be added whereas for the
previous amendment they were rejected on the grounds that they would
not be static.}
The ARG is also asked
to consider the following factors in selecting features for inclusion:
Implementability.
Can the feature be implemented at reasonable cost?
Need.
Do users actually need it?
Language stability.
Would it appear disturbing to current users?
Competition and popularity.
Does it help to improve the perception of Ada and make it more competitive?
Interoperability.
Does it ease problems of interfacing with other languages and systems?
Language consistency.
Is it syntactically and semantically consistent with the language's current
structure and design philosophy?
As before, an important further statement is that
"In order to produce a technically superior result, it is permitted
to compromise backwards compatibility when the impact on users is judged
to be acceptable." In other words don't be paranoid about compatibility.
Finally, there is a warning about secondary standards.
Its essence is don't use secondary standards if you can get the material
into the RM itself.
The guidelines conclude with the target schedule.
This includes WG9 approval of the scope of the amendment in June 2010
which was achieved and submission to ISO/IEC JTC1 in late 2011.
© 2011, 2012, 2013 John Barnes Informatics.
Sponsored in part by: