The original POSIX 1003.1 (published in 1988) specified a cc
utility. The Single Unix Specification version 2 (1997) included both cc
and c89
. The name c89
was introduced to be a standard dialect of C. The name cc
was kept but marked as legacy and declared to be an unspecified dialect of C. Many vendors shipped a compiler that defaulted to K&R C (i.e. pre-ANSI C) under the name cc
. You might note that cc
is mandatory while c89
is part of the C language development option. It was common to have a C compiler under the name cc
that was only really capable of compiling kernel drivers, and commercial unices often charged extra for a proper C compiler.
POSIX 1003.1-2001 (Single Unix v3) specifies c99
specifies instead of c89
, to use an updated standard dialect of C. You can see some editorial traces left from a draft that included a cc
utility as well, but cc
was removed from the specification. POSIX 1003.1-2008 (Single Unix v4) again just has c99
c89
when the two (cc/c89) were considered to be the same thing. Finding an authoritative source for that will be hard, since the POSIX documentation eliminates most of the historical information.