ACAA Header
 

Ada 2020 Amendment Proposals

As of December 10, 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.
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-1, 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-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)
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-1 Contract cases aspect
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)

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, AI12-0187-1, and AI12-0265-1)
AI12-0212-1 Container aggregates
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
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.

Completed

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-0190-1 Anonymous Functions
AI12-0201-1 Additional static String operations
AI12-0226-1 Make "object"s more consistent
AI12-0230-1 Deadline Floor Protocol
AI12-0235-1 Root_Storage_Pool should be Pure
AI12-0237-1 Reading the representation of an enumeration value
AI12-0249-1 User-defined numeric literals
AI12-0256-1 Aspect No_Controlled_Parts
AI12-0275-1 Omit subtype name from object renaming
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-0295-1 User-defined string literals (split from AI12-0249-1)
AI12-0294-1 More cleanups (fixes for various AIs, old and new)

Unfinished proposals

AI12-0213-1 Ids in record syntax
AI12-0236-1 Declare expressions (possibly depends upon AI12-0275-1)
AI12-0240-1 Access value aliasing and parameter aliasing
AI12-0240-2 Access ownership for Abstract Data Types
AI12-0240-3 Simplified access value ownership and parameter aliasing
AI12-0208-1 Bignum packages (depends upon to AI12-0249-1)
AI12-0250-1 Iterator filters
AI12-0282-1 Atomic and Volatile generic formal types (split from AI12-0234-1)
AI12-0234-1 Compare-and-swap for atomic objects (depends on AI12-0282-1)
AI12-0139-1 Thread-safe language-defined units
AI12-0239-1 Ghost code
AI12-0268-1 Automatic instantiation for generic formal parameters
AI12-0197-1 Generator Functions
AI12-0197-2 Passive Tasks
AI12-0197-4 Coroutines and Channels
AI12-0229-1 Type renaming
AI12-0214-1 Case statements/expressions for composite types
AI12-0214-2 Boolean Case statements/expressions
AI12-0215-1 Implicit instantiations
AI12-0243-1 Subtypes as primitive arguments

Deferred

The following AIs have Hold status and are not expected to appear in Ada 2020. 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 2020; 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 Function
AI12-0205-1 Defaults for generic formal parameters
AI12-0209-1 Refine definition of Volatility
AI12-0218-1 Aspect Scalar_Storage_Order
AI12-0223-1 The co-derivation problem
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)