[comp.lang.ada] Ada9X Revision Requests Categorization, part 1

nyberg@AJPO.SEI.CMU.EDU (Karl Nyberg) (03/09/90)

[Ed - this was missing a "-" before]

Subject: Ada9X Revision Requests Categorization, part 1
Date: Thu, 08 Mar 90 05:09:02 EST
From: deilers@ajpo.sei.cmu.edu

        The Ada 9X project has collected 774 revision requests during
the one-year request period which ended 31 October 1989, and made these
available to the public, both on-line and in hard-copy form.  The on-line
versions have all been available since 5 January 1990 via ftp on
ajpo.sei.cmu.edu in ~ftp/public/ada9x/revision.requests, or on the Ada 9X
electronic bulletin board (1-800-Ada9X25).  Complimentary hard-copies of the
first 150 requests (those submitted before 25 July 1989) have been available
from the Ada Information Clearinghouse (Gil Austin at 703/685-1477 or Susan
Carlson at 301/459-3711 or email to ada9x@ajpo.sei.cmu.edu) since August 1989.
A hard-copy of requests 151-774 was displayed 7 February 1990 at the
AdaJUG conference in San Diego.  It is about 5 inches thick.  The
AdaIC apparently intends to mail complimentary copies of this to everyone
who requested the first volume, and any others who request it, although I
do not know of anyone who has actually received their copy yet.

        The requests are numbered 1 to 774 in the order in which they
were received.  The hard-copy version is organized by RM section number,
which makes it somewhat more digestible.  (The hard-copy version is also
a lot prettier than the on-line requests, as a result of a lot of work
standardizing the various styles used, and adding missing titles, etc.).
It also includes a keyword index, a page-number-title index, a title-page
index, a author-page index, and a submitting organization-page index.
On-line, there are 5 reports available:  a table of number of requests
per LRM chapter, a number-author-phone-address-LRM_reference-status index,
a LRM_reference-author-number index, a status-author-LRM_reference-number
index, and a number-byte_size-date-author-LRM_reference index.  Status
is described as "received, accepted, etc." and is always "received",
(except in one case where it is "RECEIVED" which sorts to the top of
the status-author-LRM_reference-number index :-) ).  The on-line reports
currently cover only the first 150 requests.

        Despite all the indices, it is difficult to find related requests
or to estimate the number of unique requests.  The LRM references supplied
are somewhat helpful, but often inconsistent.  For example, some requests
for object-oriented capabilities reference chapter 3 (types), and others
reference chapter 7 (packages).  Many titles are also overly general,
such as "exception handling".  And some requests with similar sounding
titles are actually describing distinct issues, and vice versa.

        Instead of waiting for the Requirements Team to sort this all
out (according to the February 1990 Ada9X Public Report, their first report
is scheduled for early April 1990), I have attempted to do it myself.
The results are a list of 368 distinct issues, sorted by LRM section number,
and a table of closely related requests, sorted by frequency of submittal.
The two most frequent requests relate to object-oriented capabilities,
and passing subprograms as parameters, with 17 requests each.

        Also, some trivia:  request #585 doesn't exist; request #407
contains two separate requests.  About a dozen requests are exact
duplicates (these should be, but are not noted).  A few requests
are of the form "do not add feature x".  In the list of closely
related requests, these also should be, but are not distinguished.
Some requests come from individuals, others come from groups, including
SIGAda ALIWG, SIGAda ARTEWG, JIAWG, Ada UK, Ada Europe, and the Canadian
AWG.  These group submittals probably should be, but are not noted.

        Much of the categorization is subjective.  When a request
discussed two or more separable issues, I tended either to group it
with the least frequent of the issues discussed, or to combine those
issues into one larger issue.  Some of the frequently requested issues
are more the result of such combinations than of similar requests.
I apologize in advance to any request author whose intent I may have
misunderstood, or whose request I may have mis-categorized.  I would
be happy to correct any such mistakes.
                     -- Dan Eilers, Irvine Compiler Corp.
                     (No connection to Ada9X project)


                Distinct Ada 9X Revision Requests
                      (Unofficial List)
                          368 total

 #    RM                 Title

                       Chapter 1
681:  1.        Ada line of code (ALOC) standard
189:  1.1.1(5)  Standard numerical package
136:  1.1.1(5)  Standard bit-level shift/rotate package
 51:  1.1.1(5)  Standard general purpose packages
314:  1.1.2     Standardize diagnostics
325:  1.1.2     Allow controlled subsets and supersets
326:  1.5       More flexible notation for syntax
 42:  1.6       Compile-time detection of erroneous/suspicious constructs
236:  1.6       Static semantics and support for formal analysis

                       Chapter 2
 34:  2.1       Use 8-bit ASCII
528:  2.1       Pronunciation of symbols
251:  2.1       Use of parentheses for multiple purposes
504:  2.2       Proposal for an exchange operator
126:  2.4       Underscore before exponent part of numeric literals
391:  2.4.2     Clumsy syntax for based numbers
210:  2.8       Maintenance/documentation pragmas
397:  2.8       Meaning of keyword "pragma" is non-obvious
211:  2.8       Required warnings for unrecognized/ignored pragmas
386:  2.8       No means to turn optimization off
322:  2.9       Do not add new reserved words to the language.
619:  2.10      Elimination of replacement characters

                       Chapter 3
 12:  3.        Inheritance, polymorphism and object-oriented extensions
166:  3.        Lack of literal representation for abstract data types
458:  3.        Weakly-typed calls
168:  3.        Inability to define destructors
510:  3.        Need "sequence" type with fixed lower bound
522:  3.        Allow discriminant of arbitrary non-limited type
679:  3.        Component selection as a function
129:  3.        Allow default initialization for all types
117:  3.1       Elaboration overhead
 94:  3.2       Identifier lists
321:  3.2       Anonymous array, record, and access types
  3:  3.2       Finalization for types and packages
246:  3.2.1     The meaning of constants in Ada
247:  3.2.1     Implicit code/action generation
653:  3.2.1     Runtime constants
100:  3.2.1(2)  Constants cannot use default values
 31:  3.3.2(2)  Non-contiguous subsets of discrete types
190:  3.3.3     Utility of attribute 'base should be expanded
248:  3.3       Control over storage location of discriminant
350:  3.3(6)    Implication that values can be assigned to types
529:  3.3.1     Insufficient type descriptor access

 52:  3.4       Multiple type derivations
 80:  3.4(17)   Derived types are clumsy
354:  3.4       Physical data types (dimensions)
252:  3.4       Ada support for ANSI/IEEE STD 754 (including NaN)
482:  3.4(11)   Provide explicit subprogram derivation
558:  3.4       Making derived subprograms unavailable
560:  3.4       Access to implementation of derived types
234:  3.5       Null ranges
389:  3.5       Inconvenient handling of cyclic scalar types
155:  3.5       Permit 'range for scalar types
220:  3.5.1     Enumeration literal integer codes
 45:  3.5.4     Double-wide intermediate results for integer multiply
 44:  3.5.4     Unsigned integers
365:  3.5.4     Implementation options lead to non-portability
122:  3.5.4(6)  Limitation on range of integer types
135:  3.5.4(6)  Catenation operation for one-dimensional constrained arrays
495:  3.5.5(10  Leading space in the 'image attribute for integer types
144:  3.5.6     Support for configurations without floating point co-processors
253:  3.5.6     Digits to specify real number accuracy and precision
425:  3.5.7     Open ranges for real types
225:  3.5.7     Relation between mantissa and exponent size
637:  3.5.7     The status of floating-point "minus zero"
720:  3.5.7     Improve on the Brown floating point model
 61:  3.5.7(8)  Floating point must include long_float and short_float
564:  3.5.7(9)  Safe numbers for floating point types
255:  3.5.8     T'epsilon is inadequate for real, floating point numbers
 24:  3.5.8     Portable access to floating point exponent/mantissa
358:  3.5.8     Numeric operators floor, ceiling not predefined
363:  3.5.8     Adding attributes 'image and 'value to floating point types
191:  3.5.9     Mantissa of fixed point types unreasonably small
256:  3.5.9     Fixed point scaling and precision
565:  3.5.9     Determining 'small for fixed point types
733:  3.5.9     Uniform representation of fixed point precision for all ranges
357:  3.5.9     Decimal
566:  3.5.9(6)  Fixed point model numbers
567:  3.6.1(6)  Obtain constraints from a variable's initial value
 54:  3.6.3     Variable length strings
713:  3.6(2)    Provide a unification of constrained and unconstrained arrays
 86:  3.7       Reference to self in initial value expression
568:  3.7(2)    Multiple non-nested variant parts for record types
596:  3.7(2)    Ending record declarations with type name itself
532:  3.7(3)    Distinct identifiers for record components
212:  3.7.1(9)  Assignment to a discriminant
473:  3.7.2     Partially constrained discriminated subtypes
531:  3.7.2     Nested variants don't work well
 27:  3.7.4     Addition of attributes for record types
197:  3.8(5)    Parameter modes with access types (constants)
238:  3.8       Pointers to non-heap (constant) objects
 18:  3.8(8)    Static ragged arrays
 98:  3.8.1     Mutually dependent types other than access
259:  3.8.1     Allow forward references instead of incomplete types
533:  3.8.1     Incomplete types can't be used across packages
112:  3.8       Automatic garbage collection
702:  3.8       Heap management improvements
726:  3.8(8)    Non-contiguous arrays
260:  3.9       Many descriptions in the reference manual need to be clarified
261:  3.9       Program error raised for subprogram elaboration
 32:  3.9       Relax declaration order restrictions

                       Chapter 4
 53:  4.        Aggregate for null records and null arrays
308:  4.        Array operations
  7:  4.1.4(4)  Add attribute to access internal code of enumeration literal
323:  4.1.2(3)  Slices of multidimensional arrays
640:  4.1.2     Operations on bit-vectors and bit-arrays (find first bit)
406:  4.1.4(4)  User defined attributes
570:  4.1.3     Allow prefix of a name to denote a renamed enclosing construct
 29:  4.3.2     Others choices in array aggregates, sliding
240:  4.3.1(3)  Component associations are more restrictive than assignment
264:  4.3       Discriminants appear like variables
341:  4.3.1(2)  Non-static discriminants in variant record aggregates
152:  4.4       Allow a < b < c
265:  4.4       Short circuit
266:  4.4       Limiting overloading
536:  4.4       Scalar operators min, max not predefined
638:  4.5       Axioms to be obeyed by built-in operations
 11:  4.5.6(6)  Exponents of zero by a zero exponent
102:  4.5.5     Remainder divide for real numbers
537:  4.5.5     Multiplying operator "/"
400:  4.5.5     Fixed multiplication & division with universal real operands
401:  4.5.7     Accuracy required of composite fixed-point operations
572:  4.5.5(7)  Operators for all predefined integer types
680:  4.5.6(4)  Integer exponents
213:  4.6(7)    Predictability of rounding
351:  4.8(7)    Scrubbing memory for trusted computing base systems
  9:  4.9(2)    Allow more expressions/types to be classified as static
452:  4.9       Constant (and static) functions
639:  4.9       Large and/or complex constants

                       Chapter 5
618:  5.1(7)    Elimination of goto construct
 49:  5.2       Reference to variable names on lhs and rhs of assignment
199:  5.3(2)    Optional names for case, if, and select
312:  5.4       Case statements supporting decision tables
320:  5.4       Real/string case expressions
317:  5.5       Extend loop iteration constructs
221:  5.6(2)    Common processing to exception handlers of the same frame
491:  5.6       Exit statement to complete execution of block statement
538:  5.7       Preventing exit and return in a loop
625:  5.7(2)    "when" with return and raise statements
620:  5.8       Elimination of return statement except in functions

                -- continued in next message --