HPX V1.5 released -- STE||AR Group

The STE||AR Group has released V1.5 of HPX -- A C++ Standard library for parallelism and concurrency.

HPX V1.5 Released

The newest version of HPX (V1.5) is now available for download! This is a big release with many changes and improvements. We have added numerous new features, adapted a lot of facilities to improve C++20 conformance. We have also continued our work on modularizing and making HPX lighter, improved its usability, stability, and performance. Please see here for full release notes.

    HPX is a general purpose parallel C++ runtime system for applications of any scale. It implements all of the related facilities as defined by the C++ Standard. As of this writing, HPX provides the only widely available open-source implementation of the new C++17 parallel algorithms. Additionally, HPX implements functionalities proposed as part of the ongoing C++ standardization process, such as large parts of the features related parallelism and concurrency as specified by the upcoming C++20 Standard, the C++ Concurrency TS, Parallelism TS V2, data-parallel algorithms, executors, and many more. It also extends the existing C++ Standard APIs to the distributed case (e.g. compute clusters) and for heterogeneous systems (e.g. GPUs).

    HPX seamlessly enables a new Asynchronous C++ Standard Programming Model that tends to improve the parallel efficiency of our applications and helps reducing complexities usually associated with parallelism and concurrency.

 

Cppcon: Instructor Interview: Phil Nash / Accelerated Test Driven Design

Another interesting interview.

Instructor Interview: Phil Nash / Accelerated Test Driven Design

Summary of the video:

In this week’s instructor interview, Kevin Carpenter welcomes Phil Nash for a discussion of his CppCon Academy class, Accelerated TDD: For More Productive C++ . Phil shares the origin story of Catch, the popular testing framework that he authored to support better testing in C++. Kevin has taken a previous CppCon Academy class on testing with Phil. Phil explains that he focuses less on what TDD is (which can be explained in five minutes using one slide) and more on how to apply and get the benefits of TDD in real-world code bases.

Write cleaner, safer, modern C++ code with SonarQube

SonarSource will present a 30min webinar Wednesday, Sept 2 at 15:00 GMT to show how you can use SonarQube and SonarLint static analysis to write better C++. Even if you can't attend, sign up and we'll send you a link to the recording afterward.

Write cleaner, safer, modern C++ code with SonarQube

by SonarQube

From the announcement:

As a C++ Developer, you know that writing clean, secure, modern C++ code is important for you and your users. At SonarSource, we know that only developers can truly impact Code Quality and Security, so we put the power in your hands.

SonarQube makes C++ development easier with static code analysis that's powerful, fast, and accurate - right out of the box. Analysis is easy to integrate into your workflow and works with most common compilers, including many for embedded systems. Come see for yourself how you can make your C++ projects more reliable and secure.

Friendly reminder to mark your move constructors noexcept -- AndyG

AndyG warns us that if you're upgrading to Visual Studio 2017, you might be incurring some unexpected performance overhead thanks to better noexcept support.

Friendly reminder to mark your move constructors noexcept

by AndyG

From the article:

Since C++11 we have had the noexcept keyword, which is a promise that the function will not throw an exception (and if it does, go straight to std::terminate, do not pass go). noexcept is nice for two reasons:

  1. The compiler can optimize a little better because it doesn’t need to emit any code for unwinding a call stack in case of an exception, and
  2. It leads to incredible performance differences at runtime for std::vector (and other containers, too)

CppCon 2019: std::midpoint? How Hard Could it Be?--Marshall Clow

This year, CppCon 2020 is going virtual. The dates are still the same – September 14-18 – and we are aiming for the CppCon live event to have pretty much everything you’re familiar with at CppCon except moved online: multiple tracks including “back to basics” and a new “embedded” track; live speaker Q&A; live talk time zones friendly to Americas and EMEA (and we’re going to try to arrange around-the-clock recorded repeats in all time zones, where speakers who are available can be available for live Q&A in their repeated talks too, and we’ll do that if it’s possible – but we’re still working on it!); virtual tables where you can interact face-to-face online with other attendees just like at the physical event; virtual exhibitor spaces where you can meet the folks on your favorite product’s teams to ask them question face-to-face; pre- and post-conference classes; and even the CppCon house band playing live before every plenary session. All talk recordings will be freely available as usual on YouTube a month or two after the event, but everything else above will be available only live during CppCon week.

To whet your appetite for this year’s conference, here’s another of the top-rated talks from last year. Enjoy – and register today for CppCon 2020 – all the spirit and flavor of CppCon, this year all virtual and online!

std::midpoint? How Hard Could it Be?

by Marshall Clow

Summary of the talk:

The standards committee adopted "P0811: Well-behaved interpolation for numbers and pointers" for C++20.
It includes a new library call `std::midpoint`.
The paper says "The simple problem of computing a value between two other values is surprisingly subtle in general."

In this talk, I will explore this simple call, provide a history of the development in libc++, and show some of the pitfalls.
Undefined behavior will rear its ugly head, along with numeric representations, and the arcane C promotion rules.

Along the way, we'll talk about testing, and why writing extensive tests helps everyone.

C++17: Polymorphic Allocators, Debug Resources and Custom Types--Bartlomiej Filipek

Better memory management.

C++17: Polymorphic Allocators, Debug Resources and Custom Types

by Bartlomiej Filipek

From the article:

In my previous article on polymorphic allocators, we discussed some basic ideas. For example, you’ve seen a pmr::vector that holds pmr::string using a monotonic resource. How about using a custom type in such a container? How to enable it? Let’s see.