J
James Kuyper
....
The point is not whether you can perform some task with previous C
standards or not. It is whether you can perform those tasks in an easier
manner.
"Allows performing tasks to be performed more easily" != "essential".
There's only a few specialized tasks that can be performed more easily
in C2011 than in C99. It's not even as big of a change as C99 was, and
that was a fairly minor update.
For instance threading in C11 promises to be much easier as you
will have a threading library that is cross platform compatible built
into the language itself rather than having to rely on third party
implementations. Writing code that works on Windows and UNIX will be
much easier.
Will it? I don't write multi-threaded code at all, so I have no idea.
But I know that <threads.h> only implements a sub-set of the features of
either POSIX pthreads, or the Windows equivalent (I've no idea what it's
name is). What fraction of current multi-threaded programs use only
those features of POSIX (or Windows) for which there's a <threads.h>
equivalent?
....
I would be highly surprised if an upgrade to C11 in a compiler would
break existing code especially as most compilers (all that I know of)
allow you to specify the standard you wish to compile your code against
(with the -std=cxx command line switch).
You haven't actually upgraded to C2011, even if your compiler supports
it, if you need to use -std=c99 to make your code compile.
If it was shown that a particular compiler broke existing code due to an
upgrade to C11 I would imagine that the compiler vendor would treat that
problem with the up-most priority.
Many of the new features of C99 that were mandatory are now optional in
C2011. If a vendor took advantage of that fact to cease supporting one
of those features, I doubt that they would consider the lack of support
to be a problem of any kind, much less a high priority one. That
wouldn't make code that used those features any less broken.
....
Let us not forget that C compiler vendors are used to implementing new C
standards. ...
Not really - for most of them, the last time they fully implemented a
new C standard was 1995 or earlier. Even the more up-to-date compilers
haven't had to implement a new C standard since 2000, which is a fairly
long time in the IT world. Many of the people who did the design work in
2000 may have either retired, been laid off, or been promoted into
management by now.