Product News

Boost 1.70.0 released

Check it out:

Boost 1.70.0 released

From the release notes:

New Libraries​
  • Outcome: A set of tools for reporting and handling function failures in contexts where directly using C++ exception handling is unsuitable, from Niall Douglas.
  • Histogram: Fast and extensible multi-dimensional histograms with convenient interface for C++14, from Hans Dembinski.
Updated Libraries​
  1. Asio:
  • Fixed a Windows-specific memory leak that may occur when system_executor is used.
  • Improved dispatch, post and defer documentation.
  • Fixed compile errors that occur when using the composed read and write operations with MSVC 11.0.
  • Fixed a macOS-specific warning about the deprecation of OSMemoryBarrier.
  • Changed composed asynchronous read and write operations to move buffer sequence objects.
  • Added a fallback error code for when we OpenSSL produces an SSL_ERROR_SYSCALL result without an associated error.
  • Suppressed the eof error on SSL shutdown as it actually indicates success.
  • Ensured SSL handshake errors are propagated to the peer before the local operation completes.
  • Fixed buffer_sequence_begin and buffer_sequence_end to prevent implicit conversion.
  • Changed the range-based asynchronous connect operation to deduce the EndpointSequence iterator type.
  • Fixed calculation of absolute timeout when the backend uses pthread_cond_timedwait.
  • Changed receive operations to return the correct number of bytes transferred when truncation (error::message_size) occurs on a datagram-oriented socket.
  • Enabled recycling of the memory used to type-erase a function object with the polymorphic executor.
  • Added a new BOOST_ASIO_DISABLE_VISIBILITY configuration #define.
  • Added the noexcept qualifier to various functions.
  • Added a constructor for local::basic_endpoint that takes a string_view.
  • Relaxed the completion condition type requirements to only require move-constructibility rather than copy-constructibility.
  • Added a make_strand helper function.
  • Added a new async_compose function that simplifies the implementation of user-defined asynchronous operations.
  • Added a new DynamicBuffer_v2 concept which is CopyConstructible.
  • Updated the Coroutines TS support and promoted it to the asio namespace.
  • Added a new async_result form with an initiate static member function.
  • Added the ability to use custom I/O executors with I/O objects (such as sockets).
  • This release includes a number of new features, bug fixes, performance enhancements, and documentation improvements. Notable changes include:
  • Consult the Revision History for further details.


CLion 2019.1 release comes with ClangFormat and initial embedded dev support

As announced earlier, our main areas of focus this year are IDE performance, expanding Clangd leverage, and Embedded Development. This update makes headway in all three areas.



CLion 2019.1 is Here with Embedded Development, ClangFormat, Memory View, Injected languages, Custom Themes, and Much More

by Anastasia Kazakova

From the article:

  • CLion 2019.1 has taken a couple of first steps towards Embedded Development. They include integration with STM32CubeMX and OpenOCD support.
  • Its C++ refactorings Rename and Extract are now more accurate, and code highlighting has moved to Clangd to make the editor more responsive.
  • To help you follow your preferred coding style, CLion now integrates with the well-known ClangFormat tool and adds support for various C/C++ naming schemes.
  • For compilation database projects, it’s now possible to create build-system independent Targets and Run/Debug configurations. This also means that you can build your project from CLion with any build tool you prefer, including custom commands and scripts.
  • Debugger got Memory View, Disassembly View for LLDB and Mute Variables on stepping opportunity.
  • String literals with pieces of code in other languages (SQL, HTML, RegExp, etc.)can now be treated accordingly, thanks to injected languages feature.
  • The Rust plugin was updated: it got profiler tools on Linux and macOS and suggests out-of-scope items in completion and auto-import.


doctest -- The Fastest C++ Testing Framework -- version 2.3 released! -- Viktor Kirilov

doctest brings the ability of compiled languages such as D, Rust and Nim to write tests right next to the production code to C++.

doctest - "The Fastest C++ Testing Framework" - version 2.3 released

by Viktor Kirilov

From the article:

Version 2.3 brings an extensible reporter system and a few already implemented reporters with the framework - most importantly one for XML - vital for Continuous Integration (CI) workflows. Huge thanks to the Catch2 project for paving the way for single header testing libraries.

Expressing fire-and-forget coroutines more explicitly, -or- How to turn any coroutine into fire-...

The series continues.

Expressing fire-and-forget coroutines more explicitly, -or- How to turn any coroutine into fire-and-forget

by Raymond Chen

From the article:

Last time, we looked at how to mark a coroutine as fire-and-forget, meaning that the caller does not get any information about when the coroutine completes. This is fine as far as it goes, but it may not be what you want...

winrt::fire_and_forget was too forgetful

Heard about it?

winrt::fire_and_forget was too forgetful

by Raymond Chen

From the article:

C++/WinRT provides a handy helper class called winrt::fire_and_forget. It lets you specify that nobody is going to observe the result of the coroutine. This is handy because it lets you tell the compiler that the lack of observation is intentional, so it won’t generate a warning...

Game performance and compilation time improvements in Visual Studio 2019--Gratian Lup

Getting better!

Game performance and compilation time improvements in Visual Studio 2019

by Gratian Lup

From the article:

The C++ compiler in Visual Studio 2019 includes several new optimizations and improvements geared towards increasing the performance of games and making game developers more productive by reducing the compilation time of large projects. Although the focus of this blog post is on the game industry, these improvements apply to most C++ applications and C++ developers...

Understanding GCC warnings--Martin Sebor

In detail.

Understanding GCC warnings

by Martin Sebor

From the article:

Most of us appreciate when our compiler lets us know we made a mistake. Finding coding errors early lets us correct them before they embarrass us in a code review or, worse, turn into bugs that impact our customers. Besides the compulsory errors, many projects enable additional diagnostics by using the -Wall and -Wextra command-line options. For this reason, some projects even turn them into errors via -Werror as their first line of defense. But not every instance of a warning necessarily means the code is buggy. Conversely, the absence of warnings for a piece of code is no guarantee that there are no bugs lurking in it...

CppDepend v2019.1 Released including Misra C++ Standard!

We are happy to inform you that CppDepend v2019.1 has been released and is now available for download! CppDepend allows architects and developers to analyze C and C++ code base, customizing your own coding rules, and facilitate refactoring and migration.

CppDepend v2019.1

by CppDepend

About the release:

includes important updates:

  • Misra C++ standard checks:  CppDepend 2019.1 provides now out of the box 90 MISRA guidelines to facilitate code safety, security, portability, and reliability.
  • Plugins execution optimization: in order to get the CppDepend results quickly, the execution of the plugins are now executed in asynchronous mode. Their results will be loaded as soon as the analysis is done.
  • Clang Tidy customization: The Clang tidy tool checks against many standards and guidelines which makes it very slow, To optimize its execution you can now change its command line arguments to check only what you want as guidelines.
  • (Improvement) Many bug fixes and improvements including SonarQube 7.6 compatibility.

Download and enjoy the new version of CppDepend now by clicking here.