[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Issue: ADJUST-ARRAY-NOT-ADJUSTABLE (Version 8)



Although I haven't had time to join the overly-lengthy discussion on this
matter,  I did point out one particularly confusing direction -- that this
proposal to "fix" the function ADJUST-ARRAY has become a proposal to alter 
the semantics of the type SIMPLE-ARRAY.  Compare CLtL, p28, with the
sentence in the Rationale Section:
  "Specifying the points left unspecified (requiring all simple arrays to be
   non-adjustable and all adjustable arrays to be non-simple) would require
   large changes to some implementations and would be of little benefit to
   ..."
and with an item in the Clarification section:
  "a. Whether an array can be both simple and adjustable is unspecified."
[CLtL definition *does* specify it].

I suggested that a simple statement be added to the proposal as follows:
  "This proposal does not attempt to alter the meaning of the type
   SIMPLE-ARRAY in any way"
Moon expressed approval of adding that statement.

Altered semantics would mean that it is no longer a portable type.  I 
have sent out several trivially small examples that show this.  Some 
people have interpreted those examples as simply showing what happens 
with "broken" code; but quite to the contrary, they show how code can be 
"correct" on one implementation and "broken" on another ****** when the 
definition of SIMPLE-ARRAY is allowed to vary between one implementation 
and the other ******.  Very carefully, CLtL spells out that implementations 
may vary on the efficiency with which they implement SIMPLE-ARRAYS; but 
nowhere does it provide for optional exclusion of some parts of the 
definition thereof.


Also, I note that all of the discussion on the Cl-cleanup list was by
persons other than the half-dozen or so maintainers of "stock hardware"
compilers.  I personally spoke with three others (not including myself)
at Hawaii, and we all have identical requirements for the type SIMPLE-ARRAY,
and identical resolve that it must not be changed.  Our compilers will
continue to offer this C-level optimization capability; the only 
question is whether or not the CL1989 Standard will be cognizant of it.



-- JonL --