The Standard for Ada 2012, ISO/IEC 8652:2012, was published in December 2012. This was a formal revision to Ada, integrating the previously separate changes from Technical Corrigendum 1 (June 2001) and Amendment 1 (March 2007) along with a variety of new features and changes. Ada continues to evolve with software theory and practice, and undoubtedly there will be further improvements in the future.
Below is an brief survey of the more important enhancements in Ada 2012. These enhancements can be grouped as follows:
The most important enhancements are those directly related to correctness, namely the introduction of more powerful assertion mechanisms in the language: pre- and postconditions for subprograms, type invariants, and subtype predicates are other mechanisms that encourage the programmer to better specify the meaning of the code they write, and allow the run-time to verify that this meaning is in fact obeyed. These “programming by contract” features will also be useful for static analysis tools.
There are a number of enhancements to the container library, including task-safe queues, and bounded containers that do not use dynamic allocation.
There are a number of enhancements that contribute to expressiveness and readability: conditional expressions, case expressions, more powerful membership tests, and quantified expressions. A new iterator form over containers will make them much easier to use. Most of these are syntactic enhancements whose semantics is intuitive and fit well in Ada. Several of these are intended to simplify the expression of complex expressions that are likely to appear in pre- and postconditions and in type invariants.
One addition in this category has a larger conceptual import because it reverses an early design decision that had been controversial ever since Ada 83: functions will now have in and in out formal parameters.
Some enhancements concern visibility: more powerful use clauses, and additional uses of incomplete types that simplify the construction of nested containers.
There are a number of enhancements in the area of concurrency, some of which address the multi-core revolution.
Ada Comparison Chart
A short summary of how Ada 2012 stacks up to previous versions of the language.
Ada 2012 Rationale
Written by John Barnes, author of a popular Ada textbook, this document describes the changes in Ada 2012 in detail, discusses the reasons for them, provides examples of use, and compares them to previous versions of Ada.
Ada 2012 Language Reference Manual
The actual text of the Ada Standard is available here, in various forms.
These are the original design documents for each change to the language. Each one of the enhancements mentioned above corresponds to one or more Ada Issues (AIs). For further details, please refer to the database at the Ada Information Clearinghouse (see http://www.ada-auth.org/AI05-SUMMARY.HTML where the interested reader will find up-to-date descriptions and a full list of Amendment AIs, along with their status, motivation and ongoing discussions).