ACAA Header

Ada 2020 Amendment Proposals

As of March 5, 2018

This page shows all of the Ada 2020 Amendment Proposals, broken down by current progress, relationship to the WG 9 instructions, and relationship to other proposals. We intend to use this listing to help determine the scope of Ada 2020 to be approved by WG 9 in October 2018.
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-0251-2 Manual chunking operations (depends upon AI12-0119-1 - Brad to split from AI12-0119-1)
AI12-0262-1 Map-Reduce attributes (depends upon AI12-0242-1 and syntax from AI12-0212-1)
AI12-02yy-1 Data Race and Blocking prevention (depends upon AI12-0064-2, AI12-0079-1, and AI12-0119-1 - Brad to split from AI12-0119-1)
AI12-02zz-1 Parallel iterators for containers (depends upon AI12-0119-1; also related to Bullet 3 - Brad to split from AI12-0119-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-0017-1 Exception Contracts
AI12-0064-2 Aspect Nonblocking
AI12-0079-1 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)

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-1, and AI12-0187-1)
AI12-0202-1 Tampering_Check
AI12-0212-1 Container aggregates (related to AI12-0xxx-1)
AI12-0254-1 Bounded_Indefinite_Holders

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

Possibly related to WG 9 Instructions (Bullet 1), or depended on by such an AI

AI12-0139-1 Thread-safe language-defined units

Possibly related to WG 9 Instructions (Bullet 2), or depended on by such an AI

AI12-0127-1 Delta Aggregates
AI12-0236-1 Declare expressions (possibly depends upon AI12-0???-1)
AI12-0239-1 Ghost code

Possibly related to WG 9 Instructions (Bullet 3), or depended on by such an AI

AI12-0xxx-1 Additional iterators for array aggregates (TBD: Tucker)

Possibly related to WG 9 Instructions (Bullet 4), or depended on by such an AI


Unrelated to any WG 9 Instructions

AI12-0009-1 Iterators for Ada.Environment_Variables and Ada.Directories
AI12-0018-1 Entity Versioning
AI12-0020-1 'Image for all types
AI12-0023-1 Root_Stream_Type is an interface
AI12-0059-1 Aspect Object_Size
AI12-0060-1 Overriding indicators on protected subprogram bodies
AI12-0075-1 Static expression functions
AI12-0083-1 Automatic creation of constructor functions
AI12-0086-1 Relaxation of discriminant rules in Record Aggregates
AI12-0092-1 Suppressible errors
AI12-0118-1 Extended precision in static expressions
AI12-0125-3 Assignment Target Name (@) Shorthand
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-0188-1 Iterators over keys
AI12-0189-1 Iterator loop body as anonymous procedure
AI12-0190-1 Anonymous Functions
AI12-0197-1 Generator Functions
AI12-0197-2 Passive Tasks
AI12-0197-3 Generator Function
AI12-0197-4 Coroutines and Channels
AI12-0201-1 Additional static String operations
AI12-0205-1 Defaults for generic formal parameters
AI12-0208-1 Bignum packages (depends upon to AI12-0249-1)
AI12-0209-1 Refine definition of Volatility
AI12-0213-1 Ids in record syntax
AI12-0214-1 Case statements/expressions for composite types
AI12-0215-1 Implicit instantiations
AI12-0218-1 Aspect Scalar_Storage_Order
AI12-0221-1 Defaults for in out parameters
AI12-0223-1 The co-derivation problem
AI12-0226-1 Generalize "object"
AI12-0229-1 Type renaming
AI12-0230-1 Deadline Floor Protocol
AI12-0234-1 Compare-and-swap for atomic objects
AI12-0235-1 Root_Storage_Pool should be Pure
AI12-0237-1 Reading the representation of an enumeration value
AI12-0240-1 Access value aliasing and parameter aliasing
AI12-0243-1 Subtypes as primitive arguments
AI12-0246-1 Fixed first index for array subtypes
AI12-0248-1 Null array aggregates
AI12-0249-1 User-defined literals
AI12-0250-1 Iterator filters
AI12-0253-1 Saturation math
AI12-0256-1 Aspect No_Controlled_Subcomponents
AI12-0???-1 Case pattern matching (to be split from AI12-0214-1)
AI12-0???-1 Omit subtype name from object renaming (split from AI12-0236-1)
AI12-0???-1 User-defined Value attribute (split from and depends on AI12-0020-1)