C Builtin Funxions

Doug Gwyn gwyn at brl-smoke.ARPA
Mon May 5 13:50:17 AEST 1986


In article <182 at cbmvax.cbmvax.cbm.UUCP> grr at cbmvax.UUCP (George Robbins) writes:
>To minimize this criticism, the committee seems to be making a
>big distinction between hosted and non-hosted environments that
>doesn't map well into the real world.  Most of the people trying
>to develop compilers for non-unix microcomputer operating systems
>are trying to be as unix-like as possible, but just can't make
>all the way because of operating system brain damage.

Although based on a subset of the UNIX implementation, the X3J11
hosted C specification does not require support functions that
cannot be implemented on almost any popular operating system.
For example, I am sure that a conforming hosted implementation
is possible on my Apple //e.  There aren't many more primitive
systems than that!

>I would be much happier if there were two separate documents, so
>that a vendor could clearly say that his compiler is fully X3J11
>conforming, and his runtime support conforms to XJXXX with the
>following exceptions.

"Exceptions" are pointless when the hosted runtime support is
implementatble on essentially every system.

All the library functions pertain to the hosted environment only.
Only the "raw" C language is required in the stand-alone environment.
It didn't take X3J11 long to agree that it was as important to
standardize the hosted environment library functions as to
standardize the raw language.  I think that is essential; most
C porting problems I've encountered have been library and header
interface incompatibilities, not raw language problems.

>One of the better things to come out of the COBOL standards efforts
>was the notion of specifying a minimum core language, then defining
>optional modules that were pretty close to the way the big boys (IBM)
>had actually implemented their extensions.  This makes it fairly
>easy for a vendor to communicate to a user just what his compiler
>supports.

That is easier for a language with built-in I/O facilities.  In the
case of C, either an implementation is a conforming hosted ditto or
it is a conforming stand-alone ditto (no library functions) or it
is nonconforming.  That's about the right number of levels as far
as I am concerned.  There's no need for more (although it would be
nice to have standardized library additions for a variety of
things; however, the X3J11 document describes the minimum useful
language, not a superset of everybody's wish lists).



More information about the Comp.lang.c mailing list