Version 1.1 of acs/ac-00199.txt

Unformatted version of acs/ac-00199.txt version 1.1
Other versions for file acs/ac-00199.txt

!standard 1.1.1(1)          10-10-21 AC95-00199/01
!class confirmation 10-10-21
!status received no action 10-10-21
!status received 10-04-27
!subject AI05 Spreadsheet

From: Dan Eilers
Sent: Tuesday, April 27, 2010  1:28 PM

The latest two ARG meeting minutes have said:

meeting 40:
>  Randy started to create a spreadsheet of the AIs, but he ran out of
> time to provide anything useful. We'll delay this discussion until the
> end of this meeting [but we didn't discuss it then - Editor].

meeting 39:
>  Bob isn't ready to discuss this, as he wasn't able to find time to
> draw  up a chart. We'll either do it at the end of this meeting [we
> didn't -  Editor] or next time.

Here's my attempt at such a spreadsheet, ignoring AIs that are ramifications,
confirmations, presentation issues, or "no action".


                     Amendment 2012   ARG Approved   Work Item    Total
                     --------------   ------------   ---------    -----
Class: Ada 2012    |       18              4            30          52
Class: Ada 2005 BI |      104              0            21         125
                          ---              -            --         ---
Totals:                   122              4            51         177

     Class: Amendment           Status: Amendment 2012   (18)
AI05-0001-1/09  Bounded containers and other container issues
AI05-0003-1/04  Qualified expressions and names
AI05-0031-1/03  Add a From parameter to Find_Token
AI05-0049-1/03  Extend file name processing in Ada.Directories
AI05-0069-1/05  Holder container
AI05-0123-1/07  Composability of equality
AI05-0136-1/06  Multiway tree container
AI05-0137-1/05  String encoding package
AI05-0143-1/03  In Out parameters for functions
AI05-0148-1/06  Accessibility of anonymous access stand-alone objects
AI05-0149-1/06  Access types conversion and membership
AI05-0150-1/03  Use all type clause
AI05-0152-1/03  Restriction No_Anonymous_Allocators
AI05-0162-1/03  Allow incomplete types to be completed by partial views
AI05-0166-1/04  Yield for non-preemptive dispatching
AI05-0168-1/04  Extended suspension objects
AI05-0179-1/04  Labels at end of a sequence_of_statements
AI05-0193-1/02  Alignment of allocators
    Class: Amendment            Status: ARG Approved      (4)
AI05-0144-2/04  Detecting dangerous order dependences
AI05-0145-2/06  Pre- and Postconditions
AI05-0159-1/05  Queue containers
AI05-0176-1/00  Quantified expressions
    Class: Amendment            Status: Work Item        (30)
AI05-0111-1/08  Specifying a pool on an allocator AI05-0117-1/00  Memory barriers and Volatile objects AI05-0119-1/00  Package Calendar, Daylight Savings Time, and UTC_Offset
AI05-0125-1/01  Nonoverridable operations of an ancestor
AI05-0127-1/02  Adding Locale Capabilities
AI05-0135-2/02  "Integrated" nested packages
AI05-0139-2/04  Syntactic sugar for accessors, containers, and iterators
AI05-0142-4/06  Explicitly aliased parameters and accessors for Ada.Containers
AI05-0146-1/03  Type and Package Invariants
AI05-0147-1/09  Conditional expressions
AI05-0151-1/06  Allow incomplete types as parameter and result types
AI05-0153-1/04  Subtype predicates
AI05-0154-1/00  Unconstrained 'Access on array components
AI05-0158-1/04  Generalizing membership tests
AI05-0161-1/02  Restrictions for default stream attributes of elementary types
AI05-0167-1/02  Managing affinities for programs executing on multiprocessor pl
AI05-0169-1/02  Defining group budgets for multiprocessor platforms
AI05-0170-1/02  Monitoring the time spent in Interrupt Handlers
AI05-0171-1/03  Ravenscar Profile for Multiprocessor Systems
AI05-0173-1/01  Testing if tags represent abstract types
AI05-0174-1/03  Implement Task barriers in Ada
AI05-0177-1/01  Renaming of expressions as functions
AI05-0183-1/02  Aspect Specifications
AI05-0184-1/03  Compatibility of streaming of containers
AI05-0185-1/01  Wide_Character and Wide_Wide_Character classification and foldi
AI05-0186-1/05  Global-in and global-out annotations
AI05-0188-1/04  Case expressions
AI05-0189-1/01  Restriction No_Allocators_After_Elaboration
AI05-0190-1/03  Global storage pool controls
AI05-0191-1/01  Aliasing predicates
    Class: Binding Interpretation      Status: Amendment 2012  (104)
AI05-0002-1/04  Unconstrained arrays and C interfacing
AI05-0006-1/06  Nominal subtypes for all names
AI05-0007-1/04  Stream 'Read and private scalar types
AI05-0008-1/05  General access values that might designate constrained objects AI05-0009-1/10  Confirming representation items and independence
AI05-0013-1/13  No_Nested_Finalization is difficult to enforce
AI05-0014-1/03  Accessibility of designated objects
AI05-0015-1/04  Constant return objects
AI05-0016-1/02  Others => <> can be used in place of null record
AI05-0017-1/04  Freezing and incomplete types
AI05-0019-1/04  Primitive subprograms are frozen with a tagged type
AI05-0020-1/03  Universal operators of fixed point and access types
AI05-0021-1/03  Issues with containers
AI05-0022-1/04  Container tampering should be checked for formal subprograms
AI05-0023-1/06  'Read on records with variant parts
AI05-0024-1/05  Run-time accessibility checks
AI05-0025-1/03  Missing legality rules for formal_package_association
AI05-0026-1/04  Missing rules for Unchecked_Unions
AI05-0027-1/06  Behavior of container operations when passed a finalized contai
AI05-0028-1/06  Problems with preelaboration
AI05-0029-1/04  Operations that are not declared but still exist
AI05-0030-2/05  Requeue on synchronized interfaces
AI05-0032-1/02  Extended return statements for class-wide functions
AI05-0033-1/04  Rules for non-library level interrupt handlers
AI05-0034-1/04  Categorization of limited views
AI05-0035-1/04  Inconsistencies with pure units
AI05-0037-1/02  Out of range <> associations in array aggregates
AI05-0038-1/03  Minor Errors in Ada.Text_IO
AI05-0039-1/04  User-defined stream attributes cannot be dynamic
AI05-0040-1/03  Limited with clauses on descendants
AI05-0041-1/08  Derived types and partial views
AI05-0042-1/04  Overriding versus implemented-by
AI05-0043-1/02  The Exception_Message for failed language-defined checks.
AI05-0044-1/05  Equivalence and equality in containers
AI05-0045-1/05  Termination of unactivated tasks
AI05-0046-1/03  Null exclusions must match for profiles to be fully conformant
AI05-0047-1/07  Annoyances in the array packages
AI05-0048-1/03  Redispatching is not expected in language-defined subprograms
AI05-0050-1/07  Return permissions are not enough for built-in-place return obj
AI05-0052-1/11  Coextensions and distributed overhead
AI05-0053-1/06  Aliased views of unaliased objects
AI05-0054-2/06  Variable views of constant objects
AI05-0055-1/03  Glitch in EDF protocol
AI05-0056-1/02  Wrong result for Index functions
AI05-0058-1/01  Abnormal completion of an extended return statement
AI05-0060-1/07  The definition of Remote access types is too limiting
AI05-0062-1/03  Null exclusions and deferred constants
AI05-0063-1/05  Access discriminants on derived formal types
AI05-0064-1/01  Redundant finalization rule
AI05-0065-1/03  Remote access types should be defined as externally streamable
AI05-0066-1/05  Temporary objects are required to live too long
AI05-0067-1/09  Objects that are built in place
AI05-0070-1/01  Elaboration of interface types
AI05-0071-1/05  Class-wide operations for formal subprograms
AI05-0072-1/02  Termination only signals 'Terminated when it is True
AI05-0073-1/04  Questions about functions returning abstract types
AI05-0076-1/03  Meaning of "function with a controlling result"
AI05-0077-1/03  The scope of a declaration does not include any context clause
AI05-0078-1/03  Alignment need not match for Unchecked_Conversion
AI05-0079-1/04  An other_format character should be allowed wherever a separato
AI05-0080-1/04  "view of" is not needed when it is clear from context
AI05-0082-1/03  Accessibility level of generic formal types
AI05-0084-1/03  Pragma Remote_Types for Container library units
AI05-0086-1/02  Statically compatible needs to take null exclusions into account
AI05-0087-1/03  Formal nonlimited derived types should not have limited actual
AI05-0088-1/01  Only the value of "**" is equivalent to repeated "*"s
AI05-0090-1/05  Ambiguities with prefixed views of synchronized primitives
AI05-0091-1/03  An other_format character is not allowed in an identifier
AI05-0093-1/03  Additional rules that need to use "immutably limited"
AI05-0094-1/03  Timing_Events should not require deadlock
AI05-0095-1/04  Address of intrinsic subprograms
AI05-0096-1/04  Deriving from formal limited types
AI05-0097-1/03  3.9.3(4) includes abstract null extensions
AI05-0098-1/03  Incomplete type names can be used in anonymous access-to-subpro
AI05-0099-1/04  The tag, not the type, of an object determines if it is control
AI05-0100-1/04  Placement of pragmas
AI05-0101-1/05  Remote functions must support external streaming
AI05-0102-1/04  Some implicit conversions ought to be illegal
AI05-0103-1/05  Return statements should require at least static compatibility
AI05-0104-1/02  Null exclusions are not allowed in uninitialized allocators
AI05-0106-1/04  Representation items are not allowed on generic formal paramete
AI05-0107-1/04  A failed allocator need not leak memory
AI05-0108-1/03  The incomplete view from a limited view does not have a discrim
AI05-0109-1/03  Redundant check in S'Class'Input
AI05-0112-1/03  Names for anonymous aspects of representation
AI05-0113-1/05  Conflicting external tags and other tag issues
AI05-0116-1/04  The value of Alignment for a class-wide object
AI05-0118-1/03  The association of parameter associations
AI05-0120-1/03  The current instance of a protected object is a constant view
AI05-0126-1/03  Dispatching when there is no declared operation
AI05-0128-1/03  "/=" is a primitive operation
AI05-0129-1/04  A limited view does not contain views of incomplete types
AI05-0132-1/03  A library unit pragma must apply to a library unit
AI05-0134-1/03  Full conformance should include the profiles of anonymous acces
AI05-0157-1/03  Calling Unchecked_Deallocation is illegal for zero-sized pools
AI05-0160-1/02  Additional ways to invalidate cursors
AI05-0164-1/02  Parameters of access-to-subprogram parameters and derivation
AI05-0178-1/02  Incomplete views are limited
AI05-0181-1/02  Soft hyphen is a nongraphic character
AI05-0196-1/02  Null exclusion checks for 'out' parameters
AI05-0203-1/02  A return_subtype_indication cannot denote an abstract subtype
AI05-0205-1/02  An extended return statement declares a name usable inside the
AI05-0207-1/02  Access constant is considered for mode conformance
AI05-0208-1/04  Characteristics of incomplete views
    Class: Binding Interpretation      Status: Work Item   (0)
    Class: Binding Interpretation      Status: Work Item  (21)
AI05-0012-1/02  Independence and Representation clauses for atomic objects
AI05-0051-1/08  Accessibility checks for class-wide types and return from neste
AI05-0057-1/04  The class attribute of a constrained subtype AI05-0110-1/00  Characteristics of generic formal derived type are not inherite
AI05-0114-1/01  Conflicting definition of Letter
AI05-0115-1/04  Aggregates with components that are not visible AI05-0122-1/00  Private with and generic children
AI05-0131-1/01  Class-wide operations for formal subprograms revisited
AI05-0155-1/01  'Size clause on type with nonstatic bounds
AI05-0163-1/01  Pragmas in place of null
AI05-0182-1/01  Preciseness of S'Value
AI05-0194-1/02  The default value of S'Stream_Size
AI05-0195-1/01  Uninitialized scalars
AI05-0197-1/01  Dispatching when there are multiple inherited operations
AI05-0198-1/01  Inheriting abstract operators for untagged types
AI05-0199-1/01  Record aggregates with components of anonymous access types AI05-0200-1/00  Mismatches in formal package declarations
AI05-0201-1/01  Independence and components of atomic objects
AI05-0202-1/01  Task_Termination and Exceptions raised during finalization
AI05-0206-1/01  Remote_Types packages should be able to depend on Preelaborated
AI05-0209-1/01  Universal operators of fixed point types (again)


From: Randy Brukardt
Sent: Tuesday, April 27, 2010  1:56 PM

> Here's my attempt at such a spreadsheet, ignoring AIs that are
> ramifications, confirmations, presentation issues, or "no action".

Thanks for working this out.

[Note: I got two versions of this at the same time; I posted the one labeled
"corrected" and deleted the other. Hope that was OK.]

>                                         Status
>                                         ------
>                      Amendment 2012   ARG Approved   Work
> Item    Total
>                      --------------   ------------
> ---------    -----
> Class: Ada 2012    |       18              4            30          52
> Class: Ada 2005 BI |      104              0            21         125
>                           ---              -            --         ---
> Totals:                   122              4            51         177

This information we can get from the cross-reference list and the Amendment
tool. I wanted more than that (see below). There is one presentation AI
currently in the Amendment and one more which is still a work item. No
ramifications currently in the Amendment (none have wording changes, I think).

Here's the corresponding Ada 2005 numbers:

                       Corrigendum 1     Amendment 2005        Total
  Ramifications              2                 2                  4
  Binding Intrep.           83                78                161
  Presentation               8                 5                 13
  Amendment                  0                97                 97


But what I really wanted to know was two things:

How large are the changes proposed by these AIs? My spreadsheet includes
paragraphs inserted/deleted/modified for each AI, along with whether each has
new syntax or is only new/modified package, and estimates of implementation and
conceptual "size". New packages are "smaller" than new syntax, for instance.

What of the 4 areas of work from the WG 9 instructions are these AIs targeted
to? (Plus of course, "fixes": almost all of the BI s go there.) That is, is an
AI targeted to "containers", "contracts", "multi-core", "access types", or

That's why this was taking so long; each AI had to be skimmed to extract that
information. I probably went too far, but I wanted to get enough information to
see if the feeling of a lot of large stuff was justified.


Questions? Ask the ACAA Technical Agent