Long ago, I wrote about using the PPL to achieve a .NET 4.0 level of parity for async programming in C++. Since then, a lot of work has gone into raising this level of parity to .NET 4.5 and beyond. Introducing… C++ coroutines.
Sure, there have been various tricks and extensions to approximate this in the past. But this is actually ending up in the C++ standard!
Gor Nishanov, a major champion/designer of this new feature, describes coroutines as a negative overhead abstraction, where you end up with something “not only simpler, shorter, neater, tighter than before, but also much faster.” (He also spends a good amount of time on the origins of coroutines via Melvin Conway, which I also previously wrote about.)
For a few practical samples, you can peruse the following resources:
- Windows with C++ – Coroutines in Visual C++ 2015
- Resumable functions in C++ (older, uses preview keywords)
This + modules + the proposed ‘ranges/views/spans’ stuff may finally make C++ quite nice indeed.
The only thing left to hope for is insanely quick adoption of those above 3 items… and a decent class library capable of performing useful stuffs (but that’s too much to wish for I suppose :))
While we’re discussing unrealistic dreams, let’s add to this an editing experience for C++ as nice as C# in Visual Studio!
Nonsense! We all want “Find all References” to not find any references at all. We want it to do a plain text search instead (i.e. click on Foo.Create and watch it find all .Creates in your project)!
I encourage everyone to keep submitting that feedback on every machine with VS installed so they get the message.