# Ada Programming/Ada 95

Ada 95 is the second revision of the language, preceded by Ada 83. It was standardized by the ISO in 1995. The Technical Corrigendum 1 was published in June 2001.

## New language features

Main additions:
* Object Orientation
* Protected Objects
* Hierarchical libraries

### Character set

* Latin-1 (8-bit) character set for identifiers
* Type Character expanded to the 256 values of Latin-1 (8 bits)
* New type Wide_Character (16-bit character type, UCS-2 encoding) and Wide_String

### Specialized Needs Annexes

* Annex C, "Systems Programming"
* Annex D, "Real-Time Systems"
* Annex E, "Distributed Systems"
* Annex F, "Information Systems"
* Annex G, "Numerics"
* Annex H, "Safety and Security" (in Ada 2005 renamed to "High Integrity Systems")

### Other language additions

* Modular types
* General access types
* Access to subprograms
* 'delay until' statement
* 'use type' clause

## Summary of what's new
### New keywords

Ada 95 has 6 new keywords with respect to Ada 83 (69 keywords in total):
* abstract
* aliased
* protected
* requeue
* tagged
* until

### New pragmas

Added 29 pragmas, removed 5 (38 total):
* pragma All_Calls_Remote
* pragma Asynchronous
* pragma Atomic
* pragma Atomic_Components
* pragma Attach_Handler
* pragma Convention
* pragma Discard_Names
* pragma Elaborate_All
* pragma Elaborate_Body
* pragma Export
* pragma Import
* pragma Inspection_Point
* pragma Interrupt_Handler
* pragma Interrupt_Priority
* pragma Linker_Options
* pragma Locking_Policy
* pragma Normalize_Scalars
* pragma Preelaborate
* pragma Pure
* pragma Queueing_Policy
* pragma Remote_Call_Interface
* pragma Remote_Types
* pragma Restrictions
* pragma Reviewable
* pragma Shared_Passive
* pragma Storage_Size
* pragma Task_Dispatching_Policy
* pragma Volatile
* pragma Volatile_Components

### New attributes

Added 52 attributes, removed 7 (85 total):
* Access
* Adjacent
* Alignment
* Bit_Order
* Body_Version
* Caller
* Ceiling
* Class
* Component_Size
* Compose
* Copy_Sign
* Definite
* Denorm
* Exponent
* External_Tag
* Floor
* Fraction
* Identity
* Input
* Leading_Part
* Machine
* Max
* Max_Size_In_Storage_Elements
* Min
* Model
* Model_Emin
* Model_Epsilon
* Model_Mantissa
* Model_Small
* Modulus
* Output
* Partition_ID
* Read
* Remainder
* Round
* Rounding
* Safe_First
* Safe_Last
* Scale
* Scaling
* Signed_Zeros
* Storage_Pool
* Tag
* Truncation
* Unbiased_Rounding
* Unchecked_Access
* Valid
* Version
* Wide_Image
* Wide_Value
* Wide_Width
* Write

### New library units

* Ada.Real_Time

## See also
### Wikibook

* Ada Programming/Ada 83
* Ada Programming/Ada 2005
* Ada Programming/Ada 2012
* Ada Programming/Keywords
* Ada Programming/Attributes
* Ada Programming/Pragmas

## References

* Ada Reference Manual, ISO/IEC 8652:1995(E) with COR.1:2000 (June 2001)
* Annotated Ada Reference Manual, ISO/IEC 8652:1995(E) with COR.1:2000 (June 2001)
* The Ada 95 Rationale: The Language, The Standard (January 1995)
* Ada 95 Quality and Style Guide: Guidelines for Professional Programmers (October 1995)

## References

* ↑ "WG9 Standards and Projects". Retrieved 2008-06-09. The Corrigendum is approved and was published in June 2001.
* ↑ Naomi Hamilton. "The A-Z of Programming Languages: Ada". Computerworld. Retrieved 2008-06-09. The "big three" Ada 95 language revisions were Hierarchical Libraries, Protected Objects, and Object-Oriented Programming.

## External links

* Tucker Taft (1994). "Ada 9X for Embedded Systems Development". Retrieved 2008-06-04.
* David L. Moore (1995-10-01). "Object-Oriented Facilities in Ada 95". Dr. Dobb's Journal. Retrieved 2008-06-04.