C++ annotated: Summer edition
Recently we’ve started regular C++ Annotated editions covering various C++ related topics. We’ve published the subscription form and sent it out by email to everyone interested. The feedback was awesome and really impressive. Also, we’ve got a bunch of requests for posting it to the blog as well and decided to follow your suggestion. Find the first edition below.
C++ Annotated: Summer 2015
In this edition:
- New releases
- Statistic corner
In the News
- Steve Klabnik, a Ruby and Rails contributor and a member of the Rust core team, talks about Rust in an episode of CppCast.
- Nick Desaulniers talks about additional C/C++ tooling, including CMake, Flint, runtime sanitizers ASan and UBSan, and more.
- Anthony Williams shares his knowledge about std::shared_ptr’s secret constructor.
- Meeting C++ conference announced the 4th track.
- Users share their experience on how to set up Unreal Engine 4 CMake environment for CLion.
This month marks the release of Boost 1.59 – an update to the most popular set of C++ libraries in the world. This release introduces two new libraries:
- Boost.Convert 2.0 , which is an alternative to boost::lexical_cast that provides extensibility and uniformity of interfaces used for conversion between binary and textual representations of different types.
- Boost.Coroutine2 is a C++14-only implementation of support for coroutines, i.e., an ability to suspend and resume execution of code at specific locations.
As always, Boost 1.59 comes with plenty of bug fixes and updates to different Boost libraries. For example, Boost.Test v3 comes with many new major features. You can find the detailed list of updates and new libraries here.
Incidentally, if you are interested in Boost, check out this Pluralsight course by Dmitri Nesteruk. It covers several popular Boost libraries, including Optional, ProgramOptions, Any, Signals2 and more!
Concepts are one of the most anticipated C++ language features (second maybe only to modules). The specification for concepts was finalized, and the GCC compiler developers already got it implemented.
This summer’s been hot in terms of new versions. It all started in May with the Rust 1.0 release. Even if you are not planning to move to Rust from your beloved C or C++, it’s good to learn the best practices and ideas collected in it by the generations of C and C++ programmers, especially taking into consideration its fantastic goal to be concurrent and safe.
Visual Studio 2015 released with fairly feature-complete C++11 and C++14 support and some new C++17 features, STL fixes, and even cross-platform C++ support. Concerning C++11, C++14 and C++17 features, this very detailed table in msdn blog describes the state of the art. Read about several completely new things introduced in VS 2015 including ref-qualifiers, constexpr, unicode string literals, user-defined literals, generic lambdas and lots more.
ReSharper C++ 1.1 introduces Google Test support in the unit test runner, adds a new Introduce Field refactoring, extends C++11 support, and lets you explore include directives hierarchy in a dedicated tool window. It comes with the ability to add include directives for macros and contains lots of performance improvements.
CLion 1.1 brings massive C++ parser overhaul to serve your C++ needs better. It now handles some tricky C++ cases more accurately, distinguishing one language construct from another with higher precision, especially in cases where the overall context influences the code semantics. The parser overhaul also brings performance improvements.
CLion 1.1 also brings LLDB integration for OS X users, tons of new code style settings (for CMake, preprocessor directives and more) and several bundled coding style schemes (such as Google, Qt and GNU).
One more tool to mention is the newly updated Android Studio. This free tool from Google designed for Android development is based on the open-source IntelliJ Platform made by JetBrains. The Android and C++ markets share a very important area: NDK development. To cover this case, Google introduced C++ support for NDK projects, based on CLion. See their announcement from the Google I/O event that happened in May.
Statistics can reveal a lot of interesting information and let you look on the market from a bird’s eye view. Our research team is always busy running questionnaires, stackoverflow and reddit surveys, analyzing industry job ads, TIOBE index, GitHub stats, Google Trends data, and other external reports.
Did you know there are 4.4 millions C++ developers and 1.9 millions C developers worldwide? We’re a big family! Not quite as big as Java developers (9 million), but similar to Python developers (4 million). 44% of us work on Linux, 39% on Windows, and 17% on OS X.
And where do we all work? The biggest areas for C++ development are Finance, Banking and Games. Embedded and Telecoms are also very close:
The top compiler is GCC (65% share), trailed by Clang with 20%. Taking only Windows platforms, 36% use Visual C++ and 34% use GCC.
Want to learn more? View our infographics about the C++ market and community.
Modern C++ aggregates many impressive but not always simple concepts. Understanding their benefits and limitations and using them correctly is instrumental for effective development. This July we hosted an overview live webinar with Dmitri Nesteruk covering C++ concepts like uniform initialization, automatic type deduction, lambdas, strongly typed enumerations, type traits, and variadic templates. After the hour-something-long talk Dmitri answered live questions and comments. Watch the recording including answers to selected questions.
And another great webinar is on its way! Let Dmitri Nesteruk, the speaker, introduce it himself:
“Here’s a question for you: what do finance and generative art have in common? Well, two things: both involve working with randomness and both require fairly hefty computational resources to get anything interesting done. As a newly fledged owner of a 4K tv set I don’t know what to do with (hey, I’m bragging here!), I decided to liven up my living room by having a go at writing my own implementation of static and dynamic image generation… all using C++, of course!
In this webinar, we’ll take a look at an example of generative art that can be done purely using known mathematical functions in a recursive setting. These functions will let us generate interesting resolution-less artwork that can be used in illustration or print. What’s neat is that new samples can be generated at a moment’s notice. We’ll also look at the generation of thousands of image samples with slightly changed variables in order to produce dynamically changing animations.
Just like the HPC webinar I did a while back, this one will involve plenty of performance optimization (OpenMP, SIMD and others) and will also require plenty of experimentation to get the image generation parameters to produce interesting-looking images instead of bland grey squares. And yes, we’ll also look at using MPI in order to get your machine cluster to generate those computationally expensive animations.
So, to summarize, join the webinar (registration is open, save a seat right now!) and we’ll have a lot of fun with random images as well as the hottest topics in parallel processing!”
We enjoy telling stories and digging into product history. Our latest, JetBrains Way to C++, The Inside Story of our Journey, is dedicated to C++ coming to JetBrains and covers some interesting facts.
Did you know for example, that the first idea about C++ IDE was born in the Objective-C IDE team? Why didn’t we use clang as parser in our tools and how that decision is affecting things? Read the full story here and find out.
Summer is not big on conferences and major events, but soon enough comes CppCon to be held September 20-25, in Bellevue, WA, USA. If you are still undecided, here are some talks that simply can’t be missed there. First is the keynotes by Bjarne Stroustrup. The author of the C++ language will share his tips to write good C++14 code. Don’t miss his talk on Monday, September 21, and take the chance to ask all your pressing questions about C++.
Second, expect more good keynotes from Sean Parent, principal scientist at Adobe. Sean will talk about data structures and better code, sharing how standard containers can be better utilized and talking about how creating containers (or using non-standard libraries) can greatly simplify code. Don’t miss his talk on Wednesday, September 23.
We’d also like to recommend Andrei Alexandrescu’s talk about memory allocation, Marc Gregoire’s talk and demos about developing for Windows, Android and iOS in VS 2015, Neil MacIntosh’s presentation about static analysis, and many other interesting topics.
Meet us there too—stop by the JetBrains booth or catch us at the venue. We’ll be glad to chat, discuss modern C++ and show demos of our C++ tools. Pass our C++ quiz and win some neat prizes, or get the paper version of O’Reilly report, “C++ Today: The Beast Is Back” by Jon Kalb and Gašper Ažman!
That’s all, folks. We hope you enjoyed this debut edition of JetBrains C++ Annotated. Do let us know if you did so we bring you more!