Ada Comparison Chart

The following chart provides an overview of evolution of the major features of the Ada programming language.

Programming Structure, Modularity Ada 83 Ada 95 Ada 2005 Ada 2012
Packages
Child units  
Limited with clauses and mutually dependent specs  
Generic units
Formal packages  
Partial parametrization    
Conditional expressions, Case expressions      
Quantified expressions      
In-out parameters for functions      
Iterators      
Expression functions      
Object-Oriented Programming Ada 83 Ada 95 Ada 2005 Ada 2012
Derived types
Tagged types  
Multiple inheritance of interfaces  
Named access types
Access parameters, Access to subprograms  
Enhanced anonymous access types    
Aggregates
Extension aggregates  
Aggregates of limited type    
Unchecked deallocation
Controlled types, Accessibility rules  
Accessibility rules for anonymous types    
Preconditions and postconditions      
Type invariants      
Subtype predicates      
Concurrency Ada 83 Ada 95 Ada 2005 Ada 2012
Tasks
Protected types, Distributed annex  
Synchronized interfaces  
Delays, Timed calls
Real-time annex  
Ravenscar profile, Scheduling policies    
Multiprocessor affinity, barriers      
Re-queue on synchronized interfaces      
Ravenscar for multiprocessor systems      
Scientific Computing Ada 83 Ada 95 Ada 2005 Ada 2012
Numeric types
Complex types  
Vector/matrix libraries  
Standard Libraries Ada 83 Ada 95 Ada 2005 Ada 2012
Input/output
Elementary functions  
Containers  
Bounded Containers, holder containers, multiway trees      
Task-safe queues      
Character Support Ada 83 Ada 95 Ada 2005 Ada 2012*
7-bit ASCII
8/16 bit  
8/16/32 bit (full unicode)  
String Encoding package