C++ Developments in 2019

C++ Software Engineer Bartek published a blog reviewing the developments of C++ in 2019.

C++ Developments in 2019

Bartek mainly introduced the evolution of C++ features in 2019, significant advancements in global conferences, improvements in related tools, and expectations for new features in C++20. He summarized three major points of focus:

  • C++20 is about to be released

  • Tools have made writing C++ code much easier

  • C++ maintains a stable position among developers

(It is important to note that the views expressed in the article are solely those of Bartek and do not represent the views of the entire ISO C++ committee.)

From the table below, it can be seen that in 2019, the C++ community accomplished many things, with significant progress in new features we are concerned about, such as the releases of Clang 8.0.0, 9.0.0, the release of VS 2019, and the release of GCC 9.1.

C++ Developments in 2019

In summary, starting from Clang 5.0, GCC 8.0, Visual Studio 15.7, and Intel C++ Compiler 19.0.1, all compilers support C++ language features. However, the C++ standard library requires additional support, especially for key points such as parallel algorithms and the filesystem.<span>std::filesystem</span> requires GCC 8.1 (or higher version GCC 9.1), Clang 3.9 (or higher version 7.0), and Visual Studio 2017 15.7. Updates for parallel algorithms were first available in Visual Studio 2017 15.7, but the MSVC team added more algorithms in subsequent updates.

Discussions about C++20 dominated this year, with the main features now frozen, including:

  • Modules

  • Coroutines

  • Concepts in the Standard Library

  • Ranges

  • <span>constexpr</span> support for:<span> new</span>/ <span>delete</span>, <span>dynamic_cast</span>, <span>try</span>/ <span>catch</span>, virtual

  • <span>constexpr</span> vectors and strings

  • Timing: calendar and timezone support

  • <span>std::format</span>

  • <span>std::span</span>

  • <span>std::jthread</span>

Currently popular compilers have implemented many C++20 features. Bartek listed a small table of new C++20 features:

C++ Developments in 2019

In terms of tools, first, Visual Studio provides many new supports for C++, including:

  • AI-assisted code completion using Visual Studio IntelliCode

  • Support for Clang and MSVC’s Clang-Tidy in C++ MSBuild and CMake projects

  • AddressSanitizer support for projects compiled with MSVC on Windows

  • Better integration with CMake

  • Concepts available in 16.3

  • Comprehensive <span>to_chars()</span> support that meets C++ 17 requirements

  • A new set of tools called C++ Build Insights.

Clang/LLVM provides many powerful utilities, such as:

  • Clang Tidy

  • Clang-Include-Fixer

  • AddressSanitizer

  • MemorySanitizer

The code analyzer CppDepend v2019.3 has added support for MISRA coding guidelines, with support for VS 2019, QT projects, simplified UI, and embedded project support.

PVS-Studio, a tool for detecting errors in source code written in C/C++ and C#, saw significant changes in 2019, including .NET Core 3 and 3.1 project analysis, MISRA guidelines support, over 40 new checks, and support for Java and SonarQube plugins.

Package managers Conan and Microsoft/vcpkg also saw some new changes.

Finally, Bartek introduced that the position of C++ among developers remained stable in 2019:

  • C++ ranked 4th in the TIOBE programming language index.

  • In the StackOverflow survey, C++ ranked 9th above C.

  • In GitHub’s survey, C++ ranked 6th.

In addition to these rankings, Bartek also conducted a simple survey, the results showed the usage of C++, including the versions of the standard library used, tool choices, and the use of new features in C++20:

C++ Developments in 2019

For the complete review, see the original blog:

https://www.bfilipek.com/2019/12/cpp-status-2019.html

Recommended Reading

“My Business Card Can Run Linux”

Spring Cloud 2020 Roadmap

IntelliJ Platform 2020 Roadmap

Scala Roadmap: Skip 2.14, Move to Scala 3 Next Year

GNOME Operating System Will Debut

Leave a Comment