ACAA Header

Ada 202x Amendment Proposals

As of January 22, 2021

This page shows all of the Ada 202x Amendment Proposals (other than fixups), broken down by current progress, relationship to the WG 9 instructions, and relationship to other proposals.
Each AI is listed only once; AIs are listed with the most appropriate WG 9 instructions item if several apply. AIs are shown in Black if ARG approved, Green if wording is proposed (but still may need wordsmithing), Orange if a consensus solution has been described (this means that the proposal has been discussed at one or more ARG meetings), and in Red otherwise.
Items are linked to the actual AI; we use the major feature defined rather than the subject of the AI here for clarity at-a-glance. We also show any AIs that the current item depends on.

Strongly related to WG 9 Instructions (Bullet 1)

  • Improving the capabilities of Ada on multi-core and multi-threaded architectures;
AI12-0119-1 Parallel blocks and loops
AI12-0242-1 Reduce/Parallel_Reduce attributes
AI12-0251-1 Explicit chunk index for parallel loops (depends upon AI12-0119-1)
AI12-0262-1 Map-Reduce attributes (depends upon AI12-0242-1 and syntax from AI12-0212-1)
AI12-0266-1 Parallel container iterators (depends upon AI12-0119-1; also related to Bullet 3)
AI12-0267-1 Data Race and Blocking prevention (depends upon AI12-0064-2, AI12-0079-3, AI12-0119-1, and AI12-0251-1)
AI12-0276-1 Admission Policy for acquiring a Protected Object resource
AI12-0281-1 CPU Affinity for Protected Objects (split from AI12-0234-1)
AI12-0290-1 Restriction Pure_Barriers (added by WG 9 mandate)
AI12-0291-1 Jorvik profile (added by WG 9 mandate)
AI12-0298-1 The default conflict checking policy is incompatible (fixes for AI12-0267-1)

Strongly related to WG 9 Instructions (Bullet 2)

  • Improving the ability to write and enforce contracts for Ada entities (for instance, via preconditions);
AI12-0064-2 Aspect Nonblocking
AI12-0079-3 Aspect Global
AI12-0143-1 (Family) Index Attribute in Postconditions
AI12-0187-1 Stable Properties aspects
AI12-0220-1 Pre/Post for access-to-subprogram types
AI12-0241-1 Aspect Nonblocking for language-defined units (depends upon AI12-0064-2)
AI12-0265-1 Default_Initial_Condition
AI12-0269-1 Aspect No_Return for functions reprise
AI12-0272-1 Contracts for generic formal parameters
AI12-0280-2 Making 'Old more sensible
AI12-0283-1 Nonblocking and remote subprograms
AI12-0285-1 Syntax for Stable_Properties aspects (depends upon AI12-0212-1)
AI12-0302-1 Global aspect for language-defined units (depends upon AI12-0079-3)
AI12-0319-1 Nonblocking for Unchecked_Deallocation (depends upon AI12-0064-2)

Strongly related to WG 9 Instructions (Bullet 3)

  • Improving the use and functionality of the predefined containers;
AI12-0111-1 Stable views of containers
AI12-0112-1 Contracts for containers (depends upon AI12-0064-2, AI12-0079-3, AI12-0187-1, and AI12-0265-1)
AI12-0212-1 Container aggregates
AI12-0254-1 Bounded_Indefinite_Holders
AI12-0306-1 Syntax for null aggregates (fix for, depends on AI12-0212-1)
AI12-0307-1 Resolution of aggregates (fix for, depends on AI12-0212-1)
AI12-0308-1 New features should be declarations (fixes for AI12-0189-1, AI12-0212-1, and AI12-0251-1)
AI12-0311-1 Suppressing language-defined assertions (split from AI12-0112-1 and AI12-0208-1)

Strongly related to WG 9 Instructions (Bullet 4)

  • Improving support for Unicode in the language and predefined libraries.
AI12-0021-1 Additional Internationalization
AI12-0260-1 Is_Basic and To_Basic for Wide_Characters
AI12-0263-1 Update references to ISO/IEC 10646

Unrelated to any WG 9 Instructions

Some of the following AIs may be depended upon by AIs in the previous categories. The unfinished AIs are listed in the priority order as per ARG letter ballots of March and May 2018.


AI12-0020-1 'Image for all types
AI12-0059-1 Aspect Object_Size
AI12-0075-1 Static expression functions
AI12-0086-1 Relaxation of discriminant rules in Record Aggregates
AI12-0125-3 Assignment Target Name (@) Shorthand
AI12-0127-1 Delta Aggregates
AI12-0128-1 Access to Atomic Parts fix
AI12-0144-1 Improved Discrete_Random
AI12-0156-1 Subtype_Indication in generalized iterators
AI12-0163-1 Policy Ordered_FIFO_Queuing
AI12-0164-1 Aspect Max_Entry_Queue_Length
AI12-0175-1 Additional preelaborable operations (Preelaborable System.Address)
AI12-0184-1 Long Long C data types
AI12-0189-1 Iterator loop body as anonymous procedure
AI12-0201-1 Additional static String operations
AI12-0205-1 Defaults for generic formal types
AI12-0208-1 Bignum packages (depends upon to AI12-0249-1)
AI12-0213-1 Ids in record syntax
AI12-0226-1 Make "object"s more consistent
AI12-0230-1 Deadline Floor Protocol
AI12-0234-1 Compare-and-swap for atomic objects (depends on AI12-0282-1)
AI12-0235-1 Root_Storage_Pool should be Pure
AI12-0236-1 Declare expressions (possibly depends upon AI12-0275-1)
AI12-0237-1 Reading the representation of an enumeration value
AI12-0249-1 User-defined numeric literals
AI12-0250-1 Iterator filters
AI12-0256-1 Aspect No_Controlled_Parts
AI12-0275-1 Omit subtype name from object renaming
AI12-0282-1 Atomic and Volatile generic formal types (split from AI12-0234-1)
AI12-0286-1 Allows_Exit on language-defined subprogram (depends upon AI12-0189-1)
AI12-0292-1 Various cleanups (fixes for various AIs, old and new)
AI12-0293-1 Marshalling streams
AI12-0294-1 More cleanups (fixes for various AIs, old and new)
AI12-0295-1 User-defined string literals (split from AI12-0249-1)
AI12-0304-1 Image attributes of language-defined types (depends upon AI12-0020-1)
AI12-0315-1 Image attribute improvements (clean-up for AI12-0020-1)
AI12-0321-1 Atomic Test-and-Set, Arithmetic operations (split from AI12-0234-1)
AI12-0340-1 Put_Image should use a Text_Buffer (improvement for AI12-0020-1)
AI12-0384-1 Fixes for Put_Image and Text_Buffers (improvement for AI12-0340-1)
AI12-0389-1 Ignoring unrecognized aspects
AI12-0394-1 Named Numbers and User-Defined Numeric Literals
AI12-0395-1 Allow aspect_specifications on formal parameters
AI12-0396-1 Fixups for various aspects of aspects (improvement for all Ada 2012 and newer aspects)
AI12-0396-1 Most declarations should allow aspect specifications
AI12-0399-1 Aspect specification for Preelaborable_Initialization
AI12-0411-1 Add "bool" to Interfaces.C

Unfinished proposals



The following AIs have Hold status and are not expected to appear in Ada 202x. They remain active and may appear in a future version of Ada. (Note: Amendment AIs with numbers greater than 280 that are not splits/fixes/improvements to AIs listed above arrived after the deadline for consideration in Ada 202x; they were born with Hold status.)
AI12-0017-1 Exception Contracts
AI12-0018-1 Entity Versioning
AI12-0023-1 Root_Stream_Type is an interface
AI12-0083-1 Automatic creation of constructor functions
AI12-0092-1 Suppressible errors
AI12-0118-1 Extended precision in static expressions
AI12-0197-3 Generator Functions
AI12-0197-4 Coroutines and Channels
AI12-0209-1 Refine definition of Volatility
AI12-0214-1 Case statements/expressions for composite types
AI12-0215-2 Anonymous instantiations
AI12-0218-1 Aspect Scalar_Storage_Order
AI12-0223-1 The co-derivation problem
AI12-0239-1 Ghost code
AI12-0240-5 Heap object ownership for Abstract Data Types
AI12-0243-1 Subtypes as primitive arguments
AI12-0246-1 Fixed first index for array subtypes
AI12-0253-1 Saturation math
AI12-0257-1 Generalize prefix views
AI12-0270-1 Eliminate differences between use of values and objects
AI12-0271-1 Specifying aspects of (anonymous) formal parameters
AI12-0273-1 Contract matching for formal subprograms (depends upon AI12-0272-1)
AI12-0274-1 Case pattern matching
AI12-0284-1 Renaming a file to an existing file should be allowed
AI12-0288-1 User-defined Value attribute (split from and depends on AI12-0020-1)
AI12-0296-1 User-defined character and null literals (split from AI12-0249-1)
AI12-0297-1 Defaults for generic formal packages and in out objects (split from AI12-0205-1)
AI12-0305-1 Bounded Bignum packages (depends upon AI12-0208-1)
AI12-0349-1 Add parallel to aggregate iterators (depends upon AI12-0119-1 and AI12-0212-1)
AI12-0360-1 Procedural iterators for generic procedures (depends upon AI12-0189-1)
AI12-0415-1 Parallel_Calls aspect for types