News

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.

CppCon 2020 Building a Coroutine based Job System without Standard Library--Tanki Zhang

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!

Building a Coroutine based Job System without Standard Library

by Tanki Zhang

Summary of the talk:

A job system is a common game engine component to improve total CPU throughput. In this talk, I will walk through building a coroutine-based job system and explain the advantages of using coroutines over the typical ways to build a job system.

We shipped coroutines in C++20, but why does it matter for users, especially since there’s no standard library support? The answer is the coroutine semantics. Developers can customize the behavior of `co_return`, `co_yield`, `co_await` to build their own systems without any dependency of the standard library. For game developers, this is important because many game studios forbid the use of the standard library. The coroutine language feature itself is flexible enough to build a system with 100% control, which is exactly what engine developers want—no black box, no magic.

I will discuss the design decision I made, trade-offs, and current limitations. This talk is a crash course for system developers who want to build systems independently from the standard library and will also discuss possible future directions for this language feature.

This is an advanced coroutine talk and I expect attendees to have basic understanding about how (c++)coroutine works. Here is a useful link for some related materials if you want more information before attending this talk: https://gist.github.com/MattPD/9b55db...

C++20 Coroutines--Martin Bond

A first step.

C++20 Coroutines

by Martin Bond

From the article:

There seems to be a lot of confusion around the implementation of C++20 coroutines, which I think is due to the draft technical specification for C++20 stating that coroutines are a work in progress so we can’t expect full compiler and library support at this point in time.

A lot of the problems probably arise from the lack of official documentation about working with coroutines. We have been given C++ syntax support for coroutines (the co_yield and co_return) but without all of what I consider full library support. The standard library has hooks and basic functionality for supporting coroutines, but we must incorporate this into our own classes. I anticipate that there will be full library support for generator style coroutines in C++23.

The C++20 specification is obviously looking to provide support for parallel (or asynchronous) coroutines using co_await, which makes the implementation of a simpler generator style synchronous coroutines more complex. The implementation requirements for our coroutines utilises a Future and Promise mechanism similar to the std::async mechanism for asynchronous threads.

If you are a Python or C# developer expecting a simple coroutine mechanism, you’ll be disappointed because the C++20 general purpose framework is incomplete. Having said that, there are many blogs and articles on the web that include a template class that supports generator style coroutines. This blog contains a usable coroutine template and example code after discussing what a coroutine is...

C++20 Concepts — Complete Guide--Šimon Tóth

Helping the users.

C++20 Concepts — Complete Guide

by Šimon Tóth

From the article:

One of the well deserved common complaints about C++ is the low quality of compiler errors. Both GCC and Clang made a lot of progress to improve the situation in the past 10 years, but templated code is one area where they can’t really help...

Highlighting the free Student and Support tickets for Meeting C++ 2021

Like in the last years, Meeting C++ hosts two programs to allow students, under represented folks and others to participate in the conference.

Highlighting the Student and Support tickets for Meeting C++ 2021

by Jens Weller

From the article:

With the talk listing published, and the schedule coming soon, I'd like to highlight the student and support tickets for Meeting C++ 2021.

For a few years now Meeting C++ has hosted programs to give students, underrepresented folks and those who can't afford a ticket access to the conference. This is supported through the ticket sales and some times sponsorships...

CppCon 2019 Compiled C++ Coding Standards--Valentin Galea

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!

Compiled C++ Coding Standards

by Valentin Galea

Summary of the talk:

Coding conventions, guidelines and standards are a perennial effort of software development. Lots of work goes into preparing and writing them but arguably less in following them - partly because these are documents usually maintained outside of main development, so they evolve separately and often retroactively.

We will show a novel model whereby the coding standard chosen by a team is a 'live' source code file integrated into a production repository so that it participates in compilation. This immediately brings a couple of advantages that we will explore in detail, as well as the implications it has in the context of a full team of developers.

As a practical example, the coding standard files of Splash Damage - a game development company - will be shown and discussed, detailing the various C++ aspects they deal with it and the techniques encouraged therein. Going further than the code, we'll talk about the human factor and how standards are written, evolved and championed across a large company in the face of different constraints between projects and teams.

CppCon 2020 C++20 String Formatting Library: An Overview and Use with Custom Types--Marc Gregoire

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!

C++20 String Formatting Library: An Overview and Use with Custom Types

by Marc Gregoire

Summary of the talk:

C++20 introduced a nice formatting library with std::format(). This session will explain what the formatting library provides, how to use all of its functionality, and most importantly, how you can customize it so that you can use formatting strings that include your very own custom types and custom formatting parameters, and of course, how to handle errors.

Coercing deep const-ness--Barry Revzin

A complex problem.

Coercing deep const-ness

by Barry Revzin

From the article:

In C++, template deduction doesn’t allow for any conversion. A type matches the pattern, or it’s a deduction failure. But there’s one sort-of exception to this rule, and it’s an exception that everyone has taken advantage of...