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

Programming Structure, Modularity Ada 83 Ada 95 Ada 2005 Ada 2012*
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      


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    
Extension aggregates  
Aggregates of limited type    
Unchecked deallocation
Controlled types, Accessibility rules  
Accessibility rules for anonymous types    
Preconditions, Postconditions, Type invariants      


Concurrency Ada 83 Ada 95 Ada 2005 Ada 2012*
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*
Elementary functions  
Bounded Containers, holder containers, multiway trees      
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      

* Ada 2012 will be the next ISO standard of Ada.