Loading…
Subject: API Design clear filter
arrow_back View All Dates
Wednesday, September 16
 

09:00 MDT

Escaping the AST: A Data-Oriented, Lock-Free Parallel Compiler Architecture
Wednesday September 16, 2026 09:00 - 10:00 MDT
The architecture of legacy compilers presents limitations for modern software development. As codebases scale, developers face increased compilation times. While language complexity is often cited, key architectural bottlenecks include pointer-chasing across deeply nested ASTs (cache misses), single-threaded type resolution, and significant thread-lock contention (RwLock) during parallel semantic analysis. What happens when we discard the Abstract Syntax Tree entirely and apply strict Data-Oriented Design to the compiler itself?

In this session, we will explore the internal architecture of the Vx compiler frontend—a heterogeneous systems programming language to safely maximize utilization of available CPU cores. We will dissect how to translate complex, tree-like program semantics into flat, contiguous arrays of 256-bit bit-packed Global Identifiers (GIDs).

By stepping away from traditional recursive tree-walking and object-oriented compiler design, attendees will learn how to implement high-throughput parallel pipelines.

This talk is not just for language designers. The architectural patterns used to build the Vx compiler—flattening graphs into arrays, deferred identity, and lock-free synchronization boundaries—are directly applicable to any C++ developer building high-performance, multithreaded systems.

Presenters
avatar for Aditya Kumar

Aditya Kumar

Software Engineer, Google
I've been working on LLVM since 2012. I've contributed to modern compiler optimizations like GVNHoist, Hot Cold Splitting, Hexagon specific optimizations, clang static analyzer, libcxx, libstdc++, and graphite framework of gcc.
Wednesday September 16, 2026 09:00 - 10:00 MDT
Willow Lake 3/4/5

09:00 MDT

Awaiters and Awaitables
Wednesday September 16, 2026 09:00 - 10:00 MDT
C++20 coroutines come with a reputation for complexity — and writing your own coroutine return type deserves that reputation. But here is the good news: you probably don't have to. With std::generator in C++23, high-quality libraries like Asio and cppcoro today, and std::task on its way in C++26, most developers can simply write co_await and move on.

There is one gap, however. Sooner or later, every developer using coroutines needs to bridge an existing asynchronous interface — a timer, an I/O operation, a thread pool callback, a legacy future — into the coroutine world. That bridge is built with awaiters and awaitables, and that is exactly what this session teaches.

We will start from first principles: what does co await actually do? We will demystify the three functions that form the awaiter protocol — await ready, await suspend, and await resume — and build a clear mental model for each. We will implement a real awaiter from scratch, then explore how symmetric control transfer keeps the call stack flat across deeply chained async operations. Next, we will learn how to make any existing type co await-able without modifying it, using operator co await, and how await transform lets you restrict or adapt awaitable behavior to a specific coroutine context. Finally, we will look at how to write cancellation-aware awaiters using std::stop token, so your coroutines respond promptly when work is no longer needed.

No prior coroutines experience is assumed. If you know what co await looks like on the surface but not what happens underneath it, this session is for you. You will leave with both the knowledge and the code to wrap any asynchronous operation into a first-class co await expression.

Presenters
avatar for Mateusz Pusz

Mateusz Pusz

C++ Trainer, Train IT
Mateusz Pusz is a C++ architect and voting member of the ISO C++ Committee (WG21), with 100% meeting attendance since 2017. As an active contributor to Library Evolution, he originated variable template template parameters (P2008, now part of C++26), co-authored heterogeneous lookup... Read More →
Wednesday September 16, 2026 09:00 - 10:00 MDT
Colorado A

15:15 MDT

Readable Async Workflows in Modern C++: Coroutines Meet std::expected
Wednesday September 16, 2026 15:15 - 16:15 MDT
What makes an async workflow readable? Not just linear control flow‚ you also need to see where errors go, what each step depends on, and how failures compose. This talk takes a single production workflow‚ multiple async RPC calls with conditional branching, parallel fan-out, and partial-failure handling‚ and shows it implemented in three paradigms: callbacks with thread pools, a workflow orchestration graph over futures, and coroutines with std::expected. We evaluate each through four questions: where does the control flow live, the error flow, the coupling, and the migration risk?

Coroutines restore linear control flow, but without structured error composition, the workflow drowns in manual failure checks at every step, that is more error-handling code than business logic. Task<expected<T, E>> separates async completion from domain failure into orthogonal axes: errors short-circuit through monadic composition (and_then/or_else), and each step has a pure-functional signature that developers on the team can read, test, and extend. The combination‚ coroutines for structure, expected for error flow‚ is what makes the workflow genuinely readable.

Attendees will leave with: (1) the two-axis decomposition (async completion vs. domain outcome) and why separating them changes how you design every step, (2) a four-question framework for evaluating any async architecture, and (3) concrete patterns for partial-failure handling in coroutine fan-out.
Presenters
avatar for Futong Liu

Futong Liu

Software Engineer, Bloomberg
Futong Liu is a software engineer at Bloomberg, where he works on distributed back-end systems for financial infrastructure, with a focus on trading systems built in modern C++. His work spans asynchronous programming, service orchestration, and event-driven workflows in production... Read More →
Wednesday September 16, 2026 15:15 - 16:15 MDT
Homestead 3/4

15:15 MDT

You Shall Not Pass*!
Wednesday September 16, 2026 15:15 - 16:15 MDT
Sean Parent's "no raw pointers" guideline is often misunderstood as "avoid T* , use smart pointers instead", even though Sean explicitly included smart pointers in his definition of a raw pointer: "anything with implied ownership and reference semantics".

This talk presents a refinement of that guideline:

Pointers - smart or not - shall not appear in function signatures, neither as argument nor as return type.

The focus of this talk is how to implement classes as regular types while still supporting dynamic allocation, polymorphism, and sharing internally.

It shows how such value types can be implemented manually, without dedicated library support. It then follows the evolution of the language and library in gradually simplifying these abstractions: C++11 smart pointers ( unique_ptr and shared_ptr ), C++26 vocabulary types ( indirect and polymorphic ), as well as in-progress proposals ( copy_on_write and protocol ) are presented as tools to simplify writing safe abstractions, not as safe abstractions themselves.

Along the way, the talk revisits the Rules of 3/5/0, exception safety guidelines, const propagation, aliasing, and local reasoning.

The talk aims to make you stop passing pointers around.

Presenters
avatar for Daniel Pfeifer

Daniel Pfeifer

Senior Software Engineer
Wednesday September 16, 2026 15:15 - 16:15 MDT
Red Rock 6/7
 
Share Modal

Share this link via

Or copy link

Filter sessions
Apply filters to sessions.
Filtered by Date -