Articles & Books

A Universal I/O Abstraction for C++ -- Corentin Jabot

SG-11, the study group charged of all things concurrency and parallelism made forward progress and sent the proposal to LEWG - with the hope of landing a future revision in the C++23 draft. This is rather big news given that this work has been brewing for about a decade.

A Universal I/O Abstraction for C++

by Corentin Jabot

From the article:

The year is 2020 and even consummer CPUs feature double digits number of cores, storage offers 10GB/s read speeds and networks have to accommodate ever-growing traffic.

For a long time, the C++ committee seemed to think that either async file I/O didn’t make sense or was fundamentally irreconcilable with networking. This belief would lead to two inter-incompatible APIs in the standard, which would be a nightmare in term of usability (aka ASIO and AFIO).

It seems that there is finally a way to resolve these divides:

io_uring offers very high performance I/O which doesn’t discriminate on device type.
Sender Receiver provides the composable, low-cost, non-allocating abstraction while offering a simple mental model for asynchronous operations lifetime.
Coroutines make asynchronous i/o dead simple for the 99% use case.
Asynchronous Networking is nice.

Asynchronous I/O is better.

AWAIT ALL THE THINGS!

C++20 Concepts--omnigoat

Getting familiar with concepts.

C++20 Concepts

by omnigoat

From the article:

A quick syntax-based overview of C++20 Concepts, as they are in the standard (circa January 2020)...

C++ in 2020--Jens Weller

Don't miss it!

C++ in 2020

by Jens Weller

From the article:

Now where the year is a few weeks old, lets see whats ahead for C++ in 2020!

I'll cover the Meeting C++ Community Survey, Conferences, Libraries & Releases, ISOCPP and C++20.

This blog post is based on a newsletter, which is based on a talk I gave at my User Group in Düsseldorf two weeks ago. Come and visit our meetings at the 3rd Wednesday of the month! My C++ User Group is also still looking for speakers in 2020, contact me if you're in town!

Decorating with a side effect -- Krzysztof Ostrowski

A taste of functional stack of effects.

Decorating with a side effect

by Krzysztof Ostrowski

From the article:

Logging is one of such overused features, that leads to costly side effects (consider distributed logging, a DLT, prevalent in automotive industry). This article describes a technique that is used to extract side effects brought by logging, and then compose with them back in a well defined manner.

C++20 Reference Card--Bartlomiej Filipek

The big ones.

C++20 Reference Card

by Bartlomiej Filipek

From the article:

While the C++20 Standard is still being finalised and polished, we know all of its core features. At first, the new specification of the language might sound complex and overwhelming. That’s why, if you want to have an overview of the core elements and get the bigger picture, you can have a look at my new reference card...

How to Short-Circuit a Sequence of Operations with a Boolean Value--Jonathan Boccara

Boolean and bit operators are not the same.

How to Short-Circuit a Sequence of Operations with a Boolean Value

by Jonathan Boccara

From the article:

Interrupting a sequence of operations when one of them fails is a common problem in computer programming. There are plenty of elaborate ways to code that, ranging from exceptions to monads to static exceptions.

One of the techniques to stop such a sequence of operations that is not so sophisticated, but that can be found in existing code, is to use a boolean. This relies on each step producing a boolean flag to indicate if it succeeded or failed, and to stop executing steps at the first failure.

However, simple as it is, this technique can lead to code that doesn’t do with it looks like...