I just came back from the C++ standards committee in Jacksonville, and I’m not surprised by what the committee voted into C++17. In fact, I’m quite enthused by what we got, and what we’ll get in subsequent C++ version. C++17 will have filesystem, parallelism, library fundamentals, special math, a bunch of library fixes and language fixes.
It’s not a major release but neither is it a minor release: it’s a release of what the committee deemed ready to ship because C++ now releases on a “train” schedule.
I’m happy, so why is the internet angry? You were promised more in multiple web publications as well as conferences such as CppCon. Or rather, the committee was overly optimistic when it publicly stated what could be in C++17, and the internet rightfully interpreted this as what would be in C++17. Sure reddit is angry. You know what? It always has a base of anger, and they have a right to be angry because they were promised something!
C++ doesn’t just need cheerleaders who gets developers enthused: it also needs leaders who focuses the committee to ship great features. Anything else leads to disappointment and discord as we have now. I hope this has taught all of us a lesson and brings the committee together.
What’s in C++17 is great, and I find it insulting to say C++17 has nothing. Consider the parallelism TS: NVIDIA and Intel, who you’d think aren’t best buds, came together on that one and delivered. You may not care much for it, but the high-performance computing people love it. They also love the special math functions. Same thing for filesystem which, despite TOCTOU security concerns for multi-user systems, made it to C++17. All of these are incremental steps, future C++ releases will build on them. It’s not perfect but it’s pretty damn good.
Many experts voted against the features that didn’t get through. Concepts not getting through shouldn’t be a surprise to anyone on the committee. Consider:
All signs that something was wrong with concepts. Everyone on the committee wants concepts in the language, but the voting shows that a substantial number of experts didn’t deem them ready to ship. If you were paying attention to the standards committee then you knew this was coming. Unfortunately, if you were paying attention to interviews and conferences then you’re disappointed because your expectations were set on getting concepts. For that the committee should be sorry.
We don’t just want shiny features in C++, we want features which will mature well instead of adding more gotchas. This release helps dampen the old gotchas and it adds functionality without, I hope, adding new gotchas.
Compare to Chrome which also does release trains. You miss the train: too bad, wait for the next one in 6 weeks. Chrome still manages to release significant features and trains are usually on time. People don’t get angry when a Chrome feature slips by a release or two. Actually that’s not true, people still get angry because internet. But you know what? People get angrier when we ship something that’s broken.
C++ may move to a 2-year train, down from its current 3-year target. C++19 hold a lot of promise if people actually collaborate instead of staking their honor on promised features. Let’s not disappoint the internet again!
More and more people are participating in the committee. I’m enthused to see that ARM is now represented, and AMD started attending at the previous meeting. They’re joining hardware vendors such as IBM, NVIDIA and Intel who care because C++ allows developers to better use their hardware, which is becoming critical as Moore’s law dies off. Similarly we’ve got increased participation from the US national labs who work on Exascale and high-performance computing problems. Same for gaming folks, who are joining forces with the finance industry in making C++ shine for low-latency usecases. C++ is you, if your industry isn’t represented you should consider sending a representative!
The committee failed you in setting the wrong expectations. Let’s not do that again. As ISO Trump++ says,
let’s make C++ operator > again! Thank you Jacksonville, FL, you did it!
This is the sub-group I attended during the entire week. Here’s an overview of what we discussed. Look for the follow-up papers in the post-Jacksonville mailing, which should come out in about 3 weeks.
Ain’t that a train that we’re setting up future C++ releases! And that’s just from the concurrency and parallelism sub-group, one of 14 sub-groups.