views:

183

answers:

3

C99 still isn't supported by many compilers, and much of the focus is now on C++, and its upcoming standard C++1x.

I'm curious as to what C will "get" in its next standard, when it will get it, and how it will keep C competitive. C and C++ are known to feed on one another's improvements, will C be feeding on the C++1x standard?

What can I look forward to in C's future?

+1  A: 

Probably the best place to find the current status would be to look at the current draft of the new version of the C standard. Warning: though it's coming directly from the committee, the server behind that link isn't always the most responsive...

Jerry Coffin
A: 

I was typing a list of of features, but noticed the Wikipedia page on C1X has a pretty complete listing of all proposed changes.

On the ISO C working group posts 'after meeting' mailings on their website. One of the more interesting is this Editor's Report.

schot
I'd be interested in hearing more detail than the Wikipedia page provides. Especially about the new character types. Will there be a whole family of functions to manipulate strings of these types (ala `strstr`, etc.) or just the functions for converting back and forth to multibyte strings? As for threads, is the only addition the `__thread` keyword? Or might there be a new portable threads API with less complexity and more sanity than POSIX threads?
R..
@R..: Exactly what I'm after
Matt Joiner
On top of that, I wonder how C1x threads and POSIX threads might interact. It would be very unfortunate if the underlying implementation could not be the same, accessed either through the simple API which would be implemented across a range of systems (C1x) or the feature-rich API just available on POSIX environments.
R..
I think it's highly likely it's an interface wrapper, and a subset or exact replica of pthreads.
Matt Joiner
Nobody would use C's threads if they were wildly different to POSIX threads, which are already widely used, documented and understood.
dreamlax
+1  A: 

Here's a summary from the Wikipedia page:

  • Alignment specification (_Align specifier, alignof operator, aligned_alloc function)
  • Multithreading support (_Thread_local storage-class specifier, <threads.h> header including thread creation/management functions, mutex, condition variable and thread-specific storage functionality)
  • Improved Unicode support (char16_t and char32_t types for storing UTF-16/UTF-32 encoded data, including the corresponding u and U string literal prefixes and conversion functions in <uchar.h>)
  • Removal of the gets function
  • Bounds-checking interfaces (Annex K)
  • Analyzability features (Annex L)
Gabe
Good riddance to `gets()`.
dreamlax
dreamlax: Indeed, I was going to put "*yay!*" after that item, but thought it might be in poor taste...
Gabe
Still no namespaces? pfft...
Longpoke
In the latest draft we get _Generic! A manual version of C++'s function overloading.
Joe D
@Joe D: Type generics look awesome.
Matt Joiner