Ada Programming/Ada 2022
This is an overview of the major features that are available in Ada 2022, the most recent version of the Ada standard.
Summary of what's new edit
New profile edit
Jorvik is a subset of the Ada tasking capabilities, similar to Ravenscar and which imposes fewer restrictions, removing the following ones compared to the Ravenscar profile:
- No_Implicit_Heap_Allocations
- No_Relative_Delay
- Simple_Barriers
- Max_Entry_Queue_Length => 1
- Max_Protected_Entries => 1
- No_Dependence => Ada.Calendar
- No_Dependence => Ada.Synchronous_Barriers
New syntax edit
- Assignment target name @
- Square brackets for array aggregates
- Default initial conditions for types
- Default generic parameters
- Declare expressions
- Reduction expressions
- Iteration filters
- Generalized literals
New keywords edit
- parallel
New pragmas edit
- Admission_Policy
- All_Calls_Remote
- Conflict_Check_Policy
- Elaborate_Body
- Generate_Deadlines
- Preelaborable_Initialization
- Preelaborate
- Profile now supports the Jorvik profile
- Pure
- Remote_Call_Interface
- Remote_Types
- Shared_Passive
New aspects edit
- Aggregate
- Allows_Exit
- Default_Initial_Condition
- Dispatching
- Elaborate_Body
- Full_Access_Only
- Global
- Global'Class
- Integer_Literal
- Iterator_View
- Max_Entry_Queue_Length
- No_Controlled_Parts
- No_Return (for functions)
- Nonblocking
- Parallel_Calls
- Parallel_Iterator
- Preelaborable_Initialization
- Put_Image
- Real_Literal
- Relative_Deadline
- Stable_Properties
- Stable_Properties'Class
- Static
- Static_Predicate
- String_Literal
- Synchronization
- Use_Formal
- Yield
New attributes edit
- Enum_Rep
- Enum_Val
- Index
- Object_Size
- Parallel_Reduce
- Preelaborable_Initialization
- Put_Image
- Reduce
- Relative_Deadline
New packages edit
- Atomic_Operations
- System.Atomic_Operations.Exchange
- System.Atomic_Operations.Test_And_Set
- System.Atomic_Operations.Integer_Arithmetic
- System.Atomic_Operations.Modular_Arithmetic
- Big Numbers
- Ada.Numerics.Big_Numbers.Big_Integers
- Ada.Numerics.Big_Numbers.Big_Reals
- Containers
- Ada.Containers.Bounded_Indefinite_Holders