Skip to content

A Unifying Abstraction for Async in C++ & Modules are Coming

Photo of Hana Dusรญkovรก
Hosted By
Hana D.
A Unifying Abstraction for Async in C++ & Modules are Coming

Details

โ–ช๏ธ๐—˜๐—ฟ๐—ถ๐—ฐ ๐—ก๐—ถ๐—ฒ๐—ฏ๐—น๐—ฒ๐—ฟ ๐˜ˆ ๐˜œ๐˜ฏ๐˜ช๐˜ง๐˜บ๐˜ช๐˜ฏ๐˜จ ๐˜ˆ๐˜ฃ๐˜ด๐˜ต๐˜ณ๐˜ข๐˜ค๐˜ต๐˜ช๐˜ฐ๐˜ฏ ๐˜ง๐˜ฐ๐˜ณ ๐˜ˆ๐˜ด๐˜บ๐˜ฏ๐˜ค ๐˜ช๐˜ฏ ๐˜Š++

Async in Standard C++ is in a sad state. The standard tools -- promises, futures, threads, locks, and std::async -- are either inefficient, broken, or both. Even worse, there is no standard way to say where work should happen. Parallel algorithms, heterogeneous computing, networking & IO, reactive streams, and more: all critically important foundational technologies that await a standard abstraction for asynchronous computation.

In this talk, Eric Niebler digs into the Standard Committee's search for the basis operations that underpin all asynchronous computation. He will discuss why futures and promises are slow, what an executor is, what callbacks and coroutines have in common, and how the "Task" abstraction -- under active R&D at Facebook -- might do for async algorithms what the Iterator abstraction did for synchronous ones.

Bio:
Eric Niebler is a senior developer in Facebook working on C++ libraries and standards. He is best known for his range-v3 library and his working bringing Range support to the C++20 Standard Library. Lately he has turned his attention to the foundations of asynchronous computation in the hopes of one day unifying his work on ranges with that of reactive streams.

In a past life, Eric was a Boost Consultant, working remotely from the cafes of the world while he drifted from city to city. Now he is a married homeowner and father of two, and he's never been happier. When he's not puzzling over C++ library design, he is puzzling over a Japanese flower arrangement (ikebana), or playing D&D with his son.

โ–ช๏ธ๐—•๐—ฟ๐˜†๐—ฐ๐—ฒ ๐—”๐—ฑ๐—ฒ๐—น๐˜€๐˜๐—ฒ๐—ถ๐—ป ๐—Ÿ๐—ฒ๐—น๐—ฏ๐—ฎ๐—ฐ๐—ต ๐˜”๐˜ฐ๐˜ฅ๐˜ถ๐˜ญ๐˜ฆ๐˜ด ๐˜ข๐˜ณ๐˜ฆ ๐˜Š๐˜ฐ๐˜ฎ๐˜ช๐˜ฏ๐˜จ

Modules are coming to C++ in the next standard, and they will have an impact unlike any other new feature added to C++ since 1998. Modules are a first-class system for encapsulating and defining interfaces to translation units. They are a modern replacement for C++'s textual inclusion system (e.g. headers).

Other features change how you write C++ code. Modules change not only how you write your code; they will change the very structure of your C++ projects, your build system, your IDE, and your tools.

In this talk, I'll show you how modules work, how they contrast with the current header inclusion system, how you'll benefit from them, and the transition path for the C++ ecosystem.

Bio:
Bryce Adelstein Lelbach is a software engineer on the CUDA driver team at NVIDIA. Bryce is passionate about parallel programming. He maintains Thrust, the CUDA C++ core library. He is also one of the initial developers of the HPX C++ runtime system. He spent five years working on HPX while he was at Louisiana State University's Center for Computation and Technology, and three years at Lawrence Berkeley National Laboratory (a US Department of Energy research facility) developing and analyzing new parallel programming models for exascale and post-Moore architectures. He also helped start the LLVMLinux initiative, and has occasionally contributed to the Boost C++ libraries. Bryce is an organizer for the C++Now and CppCon conferences as well as the Bay Area C++ user group, and he is passionate about C++ community development. He is a member of the ISO C++ standard committee. He worked on the C++17 parallel algorithms; today, he works on standardizing better futures, executors, and multi-dimensional arrays.

Photo of Prague C++ group
Prague C++
See more events
Avast Software
Enterprise Office Center, Pikrtova 1737/1A ยท Prague 4