News

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

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

HPX V1.7.1 Released

The newest version of HPX (V1.7.1) is now available for download! This release fixes minor problems found after the version 1.7.0. It fixes a bug in the internals of actions, adds a version check to the new Asio dependency, and slightly improves the performance of spinlocks among other minor changes. Importantly, the experimental hpx::execution::simdpar execution policy introduced in 1.7.0 was renamed to hpx::execution::par_simd for consistency with the standard parallel execution policies. While this is a breaking change in a patch release, we felt it was important to make this adaptation as soon as possible. The full list of improvements, fixes, and breaking changes can be found in the 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 one of 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, senders/receivers 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 2020 The Surprising Costs of void() (and Other Not-Quite-Innocuous Evils)--Patrice Roy

Registration is now open for CppCon 2021, which starts on October 24 and will be held both in person and online. To whet your appetite for this year’s conference, we’re posting videos of some of the top-rated talks from our most recent in-person conference in 2019 and our online conference in 2020. Here’s another CppCon talk video we hope you will enjoy – and why not register today for CppCon 2021 to attend in person, online, or both!

The Surprising Costs of void() (and Other Not-Quite-Innocuous Evils)

by Patrice Roy

Summary of the talk:

There are some things that might pass us by without us noticing them as evil or, as they have come to be known, Bad Code Smells.

Many of these little things are acceptable in some cases, and thus pass unnoticed in some code reviews. They are respectful of language rules, and thus pass unnoticed through the compiler's virtual hands. They might even lead to working code... and if it works, it's fine, no?

The idea for this talk came about when discussing with colleagues about such suspicious code and coding patterns, and hearing such questions as "but why is that a problem?". It's about those little evils that creep in code and poison our practice in subtle ways (making memory consumption higher than it should be, making execution slower than it should be, making reuse harder than it should be, etc.).

How to Parallelise CSV Reader - C++17 in Practice--Bartlomiej Filipek

Would do it the same way?

How to Parallelise CSV Reader - C++17 in Practice

by Bartlomiej Filipek

Friom the article:

At C++Stories (and in my C++17 book) you can find several articles on Parallel Algorithms introduced in C++17. The examples included in those posts were usually relatively straightforward. How about writing something larger?

In this text, you’ll see how to build a tool that works on CSV files, parses lines into sales records and then performs calculations on the data.

You’ll see how easy it is to add parallel execution to selected algorithms and have a performance improvement across the whole application (for example 4.5x on 6 cores, including file loading). In the end, we’ll discuss problems that we found along the way and possible future enhancements.

Here’s the plan:

  • How to build an application that loads CSV files
  • How to efficiently use parallel algorithms
  • How to use std::filesystem library to gather required files
  • How to use other C++17 library features like std::optional, conversion routines - std::from_chars and string_view
  • Where to add [[nodiscard]] and improve code readability

Let’s go...

Template Instantiation--Rainer Grimm

The series continue.

Template Instantiation

by Rainer Grimm

From the article:

Template instantiation is the creation of a concrete function or a concrete class out of a function template or class template. The creation of template instantiation can be implicit (compiler-generated) or explicit (user-provided)...

Adding a book section to Meeting C++

Meeting C++ has now its own C++ book section:

Adding a book section to Meeting C++

by Jens Weller

From the article:

The section offers a listing of current C++ books, currently 14 books by various authors such as Bjarne Stroustrup or Rainer Grimm! More books will be listed in the future, as not all authors had yet time to list their books. July/August is a holiday month after all, though that might give you the time to read a book!

CppCon 2019 The Dawn of a New Error--Phil Nash

Registration is now open for CppCon 2021, which starts on October 24 and will be held both in person and online. To whet your appetite for this year’s conference, we’re posting videos of some of the top-rated talks from our most recent in-person conference in 2019 and our online conference in 2020. Here’s another CppCon talk video we hope you will enjoy – and why not register today for CppCon 2021 to attend in person, online, or both!

The Dawn of a New Error

by Phil Nash

Summary of the talk:

As a community we've tried many different ways to express, propagate and handle error conditions in our code over the years. Each seem to have different trade-offs, with none being perfect in all cases.

This presentation is the follow-up to my earlier talk, "Option(al) Is Not a Failure", where I surveyed existing error-handling approaches and score them against each other, leading up to the new proposal, p0709, "Zero-overhead deterministic exceptions".

We'll summarise some of that background so we're all on the same page, but in this talk we're going to dig into the proposal in more depth - and look at the supporting proposals, p1028 (std::error) and p1029 ([[move relocates]]) and others. We'll also comment similar mechanisms in other languages, notably Swift, to get an idea of how it might work out in practice.

Counting in Iteration Models--Barry Revzin

What is your opinion?

Counting in Iteration Models

by Barry Revzin

From the article:

There’s a really interesting issue pointed out in the July 2021 mailing by way of P2406R0.

Basically, in C++, the iterator loop structure ordering is as follows (I wrote it with a goto to make the ordering more obvious. Note that in C++, we start with the it != end check, not the ++it operation. The point of this ordering is to focus on the transition from one position to the next)...

C++20 concepts are structural: What, why, and how to change it?--Jonathan Müller

Flexibility.

C++20 concepts are structural: What, why, and how to change it?

by Jonathan Müller

From the article:

C++20 added concepts as a language feature. They’re often compared to Haskell’s type classes, Rust’s traits or Swift’s protocols.

Yet there is one feature that sets them apart: types model C++ concepts automatically. In Haskell, you need an instance, in Rust, you need an impl, and in Swift, you need an extension. But in C++? In C++, concepts are just fancy boolean predicates that check for well-formed syntax: every type that makes the syntax well-formed passes the predicate and thus models the concepts.

This was the correct choice, but is sometimes not what you want. Let’s explore it further.

Voting results and the Top 10 talks for Meeting C++ 2021

The results from the voting for this years Meeting C++ conference are in, and published together with the Top10 of talks!

Voting results and the top 10 Talks for Meeting C++ 2021

by Jens Weller

From the article

The Meeting C++ hive mind has spoken, and given the feedback of the C++ community to the submissions of Meeting C++ 2021.

Like in the previous years, one could vote from 0-5 for each talk and leave a comment if you'd like on each talk. The talks are randomized in Order, and not every voting session has finished the full stack of talks to vote on. The result below is then achieved by weighing the votes from 0-5 as {-3,-2,-1,1,3,4}, this gives the talks that folks want to see a bit of an edge, while the negative numbers help to keep the range of the end result a bit closer. Having bought a ticket before the voting starts does give you a higher voting weight, as you'll be attending the conference.


 

CppCon update: Near-record number of talk submissions

hallway_track-300x188.jpegA near-record number of talk submissions, with the large majority of speakers asking to deliver their talks in person, on-site in Aurora this October:

Big Update with Big Thanks for a Big Program

by Jon Kalb

From the announcement:

The deadline for Main Program submissions has passed with a near-record number of submissions! ... We are excited both by the quality of the submissions and by the fact that that the vast majority of submissions were for onsite presentations.

... Our Program Committee is currently hard at work reviewing and rating each submission and we know that we’ll have an amazing program for both onsite and online attendees in Aurora in October. As you know, we’ve announced that Bjarne Stroustrup will be our opening keynote onsite... Creating multiple, thoughtful evaluations on almost two-hundred submissions touching on virtually every topic of C++ and software design in less than a month is a mammoth task, but we know that the CppCon 2021 Program that you’ll be seeing in Aurora and/or online, will be something that we as organizers, the Program Committee, and the presenters, will be proud to present.