So what?
Should we eliminate file i/o because there are a lot of embedded systems
without any files?
I think you have an insular view of the world.
For desktop computing, C is ancient history. Sure it'll be around for a
while for operating systems and basic command line utilities, but for
most programming it's just a relic - why would anyone use C for a serious
program when there's C++ and Java and .NET?
Embedded programming is the only growth area for C. Embedded IS the
mainstream for C nowadays. But you live in a world where "everything is
an x86 running Windows" and you can't see the big picture.
Or should we eliminate math.h?
What is the use of having a time.h if the toaster has no clock?
No, because these pieces of cruft are now too well established, going all
the way back to C89. It would have been better if they'd never been
included in the standard library, but that ship has long since sailed.
But there is no reason to add any more cruft to the standard library that
would be better being supplied by implementations (maybe through
standards like POSIX that build on C) WHERE THEY MAKE SENSE on those
implementations.
I do not understand the philosophy:
"*I* do not need it therefore feature XXX is useless, just 'cruft'."
And if there are 1 million toasters around who cares?
There is surely 1 dvelopment system and ONE developer for all those!
The C standard library doesn't need to do everything. Other libraries can
be used too. Something like the directory structure on native filesystems
is inherently system-specific and non-portable, it has NO PLACE in the C
standard.
My 2c.