31 Character Externals are Maximally Conforming (was Re: effect of free())

Doug Gwyn gwyn at smoke.BRL.MIL
Tue Sep 12 12:48:08 AEST 1989


In article <1989Sep10.234151.14314 at algor2.algorists.com> jeffrey at algor2.UUCP (Jeffrey Kegler) writes:
>This follows from the fact that no non-trivial strictly conforming
>programs exist.

That's utterly false.  I write such programs all the time.

>I won't repeat the argument which shows this, but it is based on the
>fact that 2.2.4.1 accepts as conforming many implementations which
>impose extra limits on the program, so that few, if any, programs
>will be acceptable to all implementations.

But that's not the criterion for a strictly conforming program!

In practice, ANY implementation has to have SOME additional restrictions
beyond the constraints of the Standard.  X3J11 recognized this.

>Any test suite for ANSI C, must impose additional, "reasonable"
>constraints on conforming implementations, constraints which the dpANS
>explicitly refuses to impose.  Hence, failure to pass a test suite
>cannot prove noncompliance with dpANS, only, at most, noncompliance
>with a "reasonable" interpretation of it.

This too is false.  If the test suite indicates the reason for failure
to pass, it should be a simple matter to determine if it's due to the
implementation failing to meet the Constraints and Semantics requirements,
or to a deficiency in the test suite itself (such as being too large for
the implementation).

>The insistence on strict conformance in working code is, therefore,
>pointless.

Not at all.  It's an important part of a viable portability strategy.

>Insisting on 31 significant initial characters in a "reasonably"
>compliant implementation is as "reasonable" an interpretation of the
>standard as can be made.

That too is false.  The Standard is quite explicit about this.  Only
six characters, monocase, of significance in external identifiers is
required of conforming implementations.

>I can imagine some large vendors saying to their rep to X3J11, "Have
>fun, but remember, if you do anything that requires a change to our
>installed base of mainframe OSes, you can kiss a promising career
>goodbye."

This verges on libel.  I've had many off-the-record discussions with
X3J11 members, and never saw any sign of such pressure.  Nearly all
votes on technical issues were by show of hands, with no specific
names recorded, thus no way for employers to know how representatives
were voting the issues.  Certainly there was a deliberate effort to
accommodate the widest feasible range of computing environments, but
in all cases a majority of the committee had to be convinced, so any
narrow special-interest concern would have to be convincingly presented
as beneficial to C programming as a whole before it would be adopted.
I believe that X3J11 members "voted their conscience" most of the time.

>What may be appropriate is another C standard effort, whose charter
>does not allow them to contradict the ANSI Standard, but which allows
>them to extend it, and to further restrict conforming implementations
>than X3.159 was able to do.

I think you have "gone off the deep end" upon discovering that we were
unable (for PRACTICAL, not POLITICAL, reasons) to force ALL conforming
implementations to accept ALL strictly conforming programs.  All that
trying to impose such a constraint would accomplish would be to reduce
the availability of Standard C; in lieu of standard conformance, who
knows what a C implementation would look like on the other systems.
It would be an immense disservice to make the standard unduly restrict
the environments in which Standard C is available.



More information about the Comp.lang.c mailing list