Loading…
Venue: _3 clear filter
Monday, September 14
 

11:00 MDT

Back to Basics: Move Semantics
Monday September 14, 2026 11:00 - 12:00 MDT
Move semantics and perfect forwarding, introduced in C++11, are quite impactful features that still remain a source of confusion even for some experienced developers. This talk builds understanding from the ground up: what problem move semantics solves, how rvalue references enable it, and why the rules work the way they do.

We start with the cost of unnecessary copies and how move constructors and move assignment operators let us transfer resources instead of duplicating them. We then look at how std::move doesn't actually move anything — and what it really does. From there we tackle the forwarding problem: why writing a single function that preserves the value category of its arguments is necessary, how forwarding references (also known as "universal reference" in the past) solve it, and what std::forward does under the hood.

Along the way we cover the practical details that trip people up: reference collapsing rules, the interaction between overload resolution and reference binding, when the compiler generates move operations and when it doesn't, and the cases where std::move can actually pessimize your code. We also discuss trade-offs in parameter passing — by value, by const reference, or by forwarding reference — so attendees should have a clearer model for making these decisions in their own code.

At the end we will look into std::forward_like and explore how it is different from std::forward .

No prior knowledge of rvalue references is assumed. Familiarity with copy constructors, destructors, and basic templates is helpful.

Presenters
avatar for Ruslan Arutyunyan

Ruslan Arutyunyan

Ruslan is a Senior Middleware Development Engineer specializing in parallel and threading runtimes. He joined Intel in 2017 and has experience in the autonomous driving domain, where he led the development of two libraries. Currently, Ruslan is the lead developer of oneAPI DPC++ library... Read More →
Monday September 14, 2026 11:00 - 12:00 MDT
_3

14:00 MDT

Back to Basics: Templates
Monday September 14, 2026 14:00 - 15:00 MDT
C++ templates are one of the language’s most powerful yet often misunderstood features. This talk walks the audience through the entire template landscape, starting with the basic syntax and definition, moving through function and class templates, and culminating in advanced techniques.

Attendees will learn how template argument deduction works, why implicit requirements matter, and how explicit specialization can replace error-prone macro tricks. Real-world examples, including a flexible register abstraction used in production code, show how generic programming can deliver type-safe, high-performance solutions without sacrificing readability and performance (zero cost abstraction).

By the end of the session, participants will feel confident writing their own generic components, understand the trade-offs of different template features, and have a toolbox of best-practice patterns they can apply immediately to their projects.

Presenters
avatar for Laurent Carlier

Laurent Carlier

Lead embedded software engineer, Laurent Carlier Consulting
Laurent Carlier is a freelance embedded software consultant and Development Lead Embedded Software Engineer at KION, where he works on autonomous mobile robots and automated vehicles for warehouse logistics. He has over a decade of industry experience, having spent nine years at Nokia... Read More →
Monday September 14, 2026 14:00 - 15:00 MDT
_3

15:15 MDT

Back to Basics: Code Analysis
Monday September 14, 2026 15:15 - 16:15 MDT
In the C++ ecosystem, we have powerful tools for understanding our programs before, during, and after they run. But compiler warnings, clang-tidy, cppcheck, sanitizers, debuggers, profilers, and coverage tools all answer different questions, and using them well starts with knowing which question you are asking.

This talk introduces code analysis from first principles. We will compare static techniques such as compiler diagnostics, linting, and include analysis with runtime techniques such as sanitizers, coverage instrumentation, and profiling. We will also briefly connect these tools to the direction of modern C++, including C++26 contracts and standard library hardening, where some assumptions that used to live only in comments, documentation, or debug modes become part of the program's checkable structure. Through small C++ examples, we will see what each category of tool can reveal, what it cannot prove, and how the tools complement each other.

Attendees will leave with a practical mental model for choosing the right analysis tool for the task at hand, interpreting its output, introducing analysis into an existing C++ codebase, and writing code that is easier for both humans and tools to understand.

Presenters
avatar for Alexsandro Thomas

Alexsandro Thomas

Senior Software Engineer, Zivid
Alexsandro Thomas is a Senior Software Engineer at Zivid AS specializing in C++ API development, build systems, and developer tooling. His interests include GPGPU, compiler technology, and low-level programming. In his free time he enjoys studying programming and natural languages... Read More →
Monday September 14, 2026 15:15 - 16:15 MDT
_3

16:45 MDT

Back to Basics: Lambdas, Function Objects, and std::function
Monday September 14, 2026 16:45 - 17:45 MDT
C++ gives us at least four different ways to pass "a thing that can be called" from one piece of code to another: function pointers, function objects, lambdas, and type-erased wrappers like std::function . Modern C++ has added more — generic lambdas, deducing-this lambdas, std::move_only_function , and a healthy ecosystem of concept-constrained callable parameters. Each of these has a job it is good at and several jobs it is bad at, but they are often used interchangeably until something breaks.

We will start with the basics: what a callable actually is, how function pointers, function objects, and lambdas relate to one another, and how the compiler thinks about each of them. We will look at lambda capture rules in detail — by-value, by-reference, init captures, dangling captures, and the cases where well-meaning developers reach for [=] or [&] and ship a bug — and we will see how generic lambdas (C++14) and deducing-this lambdas (C++23) extend the model without giving up clarity.

From there we will turn to the question of how to store and pass callables. We will compare function pointers, std::function , std::move_only_function (C++23), and concept-templated callable parameters along the axes that actually matter: ownership, allocation, move-only support, performance, and what the API tells the reader. Examples will be drawn from issues that have come up writing production code and mentoring developers — including the kind of subtle ABI and lifetime bugs that hide behind a perfectly reasonable-looking std::function<void()> parameter.

We will conclude with recommendations for which tool to reach for in which situation, with reference to the C++ Core Guidelines where useful. Attendees will leave with a clearer mental model of callables in modern C++ and a defensible default for the next time they write a function that takes one.

Presenters
avatar for Roth Michaels

Roth Michaels

Principal Software Engineer, Native Instruments
Roth Michaels is a Principal Software Engineer at Native Instruments, an industry leader in real-time audio software for music production and broadcast/film post-production. In his current role he is involved with software architecture and bringing together three merged engineering... Read More →
Monday September 14, 2026 16:45 - 17:45 MDT
_3
 
Tuesday, September 15
 

09:00 MDT

Back to Basics: std::unordered_map
Tuesday September 15, 2026 09:00 - 10:00 MDT
In modern C++, std::unordered_map is the de facto #2 container. Its dominance signifies a fundamental shift in application design: the performance-critical need for O(1) average-case key-value lookups.

Join as we move beyond "just use a hash map" and explore the critical, real-world implications of this choice. We'll start by benchmarking the classic std::map (red-black tree) against std::unordered_map (hash table) to understand exactly what you gain-and what you might lose.

However this power comes with risks. An average-case O(1) can quickly degrade to a catastrophic O(n) without warning. We will profile and dissect the actual costs of using a hash map:

  • The Hash: What makes a good hash function? We'll go beyond std::hash and see how to write effective, fast hashers.
  • The Collision: How do different collision-handling strategies impact performance and memory?
  • The Re-hash: What is "load factor," and when does the hidden cost of a full table re-hash destroy your performance gains?
We'll conclude with a practical decision-making framework for when to choose std::unordered_map , when to fall back on the ordered std::map , and how std::string -the container we often forget is a container-fits into this modern landscape.

You will leave this session knowing precisely which data structure to deploy for maximum performance.

Presenters
avatar for Kevin Carpenter

Kevin Carpenter

Software Engineering Manager, EPX
Kevin Carpenter, an experienced Software Engineer, excels in crafting high-availability C++ solutions for Linux and Windows, with expertise in transaction software, financial modelling, and system integration. As a Software Engineering Manager, he ensures secure, high-speed credit... Read More →
Tuesday September 15, 2026 09:00 - 10:00 MDT
_3

14:00 MDT

C++ at Scale
Tuesday September 15, 2026 14:00 - 15:00 MDT
At scale, writing C++ becomes a different engineering discipline. Problems that appear secondary in smaller systems — dependency boundaries, build graph stability, toolchain inconsistencies, integration latency, ownership, and deployability — become first-order constraints.

In production HFT, a single core infrastructure repository may contain 26+ million lines of C++ across 100K files, organized into 250+ distinct subprojects: exchange gateways, feed handlers, protocol codecs, shared risk libraries, replay frameworks, and strategy infrastructure. That shared foundation is continuously modified, rebuilt, tested, and deployed by engineering teams across five time zones and more than 40 trading teams, each maintaining their own siloed multi-million-line client systems in C++, Rust, and Python.

Under these conditions, many accepted “best practices” simply do not survive contact with reality. Systems must instead evolve toward what might be called a ground state: components reduced to their essential boundaries and responsibilities, abstract enough to support radically different workloads, but precise enough to compose into a coherent whole.

The challenge is not merely writing fast code. It is building systems that remain correct, flexible, and evolvable while operating under constant latency and operational pressure.

This is not a talk about “perfect architecture,” but about the tradeoffs, hard-earned lessons, constraints, and occasional failures through which generations of engineers — myself included — have kept large systems moving forward without stopping the business behind them.

Presenters
avatar for Radoslav Zlatev

Radoslav Zlatev

Tower Research Capital
Radoslav Zlatev is a Principal Engineer and technical leader at Tower Research Capital, where he works across a wide range of problems spanning quantitative model optimization, ultra-low-latency system architecture, and large-scale software lifecycle management. Prior to Tower, he... Read More →
Tuesday September 15, 2026 14:00 - 15:00 MDT
_3

15:15 MDT

Back to Basics: C++20 Concepts
Tuesday September 15, 2026 15:15 - 16:15 MDT
In this talk we will explore "Concepts," a powerful feature for expressing template requirements added in C++20. Participants will learn how concepts improve code readability, provide clearer compiler diagnostics, and help enforce correct usage of templates and function overloading. Through simple, hands-on examples, we will explore the syntax, common use cases, and best practices for integrating concepts into modern C++ code. By the end of the session, attendees will understand how to write safer, more maintainable template code and leverage concepts to communicate intent clearly.

Presenters
avatar for Amir Kirsh

Amir Kirsh

Teacher, Academic College of Tel-Aviv-Yaffo
Amir Kirsh is a C++ lecturer at the Academic College of Tel-Aviv-Yaffo and Tel-Aviv University, previously the Chief Programmer at Comverse, after being CTO and VP R&D at a startup acquired by Comverse. Amir is also co-organizer of the annual Core C++ conference and the Core C++ meetup... Read More →
Tuesday September 15, 2026 15:15 - 16:15 MDT
_3

16:45 MDT

Back to Basics: Function Overloading
Tuesday September 15, 2026 16:45 - 17:45 MDT
Modern programming languages offer powerful tools for creating intuitive, expressive code, but few are as frequently debated as function and operator overloading. While these features allow developers to write code that mimics natural mathematical notation, such as A+B for complex numbers or vectors, they also introduce significant risks of ambiguity, hidden performance costs, and unintuitive behavior if misused.

This talk explores the balance between expressive power and code maintainability. We will dive into the mechanics of compile-time polymorphism, examining how compilers resolve overloaded calls and the strict rules governing arity, precedence, and associativity. Beyond the what and the how, we will talk about the when and the why with examples.

Presenters
avatar for chris ryan

chris ryan

Classically trained in hardware and software engineering. Well experienced in Modern C++ and Classic ‘C’ with extremely large problem spaces and Firmware on Embedded devices. Believes strongly in reducing complexity and teaching the core language mechanisms and the fundamentals... Read More →
Tuesday September 15, 2026 16:45 - 17:45 MDT
_3
 
Wednesday, September 16
 

09:00 MDT

Ranges Without Compromise: Designing for Simplicity, Performance, and Composability
Wednesday September 16, 2026 09:00 - 10:00 MDT
Range views enable a “no raw loops” style of programming — not as a matter of taste, but as a pragmatic way to reuse well-tested algorithms to write code faster, express intent clearly, and avoid common bugs. In practice, however, developers often run into issues that may lead them to abandon ranges altogether:

  • unintuitive behavior and surprising limitations
  • slower compilation and runtime performance compared to raw loops
  • high complexity when implementing custom views
In this talk, we’ll distill the core design choices behind these problems — and the alternatives that avoid them. In particular, we’ll compare:

  • iterators and indices
  • external and internal iteration
  • transformations of nested views that overcome limitations of internal iteration
Attendees will leave with practical insights for designing and using range abstractions, along with examples of libraries that embody these ideas.

Presenters
avatar for Oleksandr Bacherikov

Oleksandr Bacherikov

Software Engineer
Oleksandr Bacherikov is a software engineer with over a decade of experience building low-latency machine learning and computer vision systems for mobile devices and AR glasses. He is particularly interested in designing abstractions that make complex algorithms simple, efficient... Read More →
Wednesday September 16, 2026 09:00 - 10:00 MDT
_3

14:00 MDT

Refactoring Techniques and Strategies (a Tale in Three Acts)
Wednesday September 16, 2026 14:00 - 15:00 MDT
Refactoring is defined as "the process of changing a software system in a way that does not alter the external behavior of the code yet improves its internal structure", and is a core skill and process in modern software development. From "cleaning up a little mess" to handling legacy code to improving testability to completely changing architecture, refactoring is the process to achieve that elusive thing, "clean, elegant, and maintainable code".

This talk will cover the basics of Refactoring from three angles. First, we will cover a few of the most important refactoring techniques and connect them to other well-known points of good C++ style.

Second, we'll talk about how to decide what and where to refactor. Common "code smells" are good places to start, but we will also discuss how to look for "seams" along which code can be cut, and how to find hints left in the code by previous developers that can point the way.

Third, we'll discuss how to successfully execute refactoring, even on a busy team and a big code base. What is the "blast radius" of a change, how to minimize the disruption it causes, and how to avoid annoying co-workers in the process.

Presenters
avatar for Dave Steffen

Dave Steffen

Principal Software Engineer, SciTec Inc
Dave Steffen completed his Ph.D. in theoretical physics at Colorado State University in 2003, and promptly changed course for a career in software engineering. He has worked primarily in defence and aerospace, and is currently a technical lead at SciTec Inc.'s Boulder office. For... Read More →
Wednesday September 16, 2026 14:00 - 15:00 MDT
_3

15:15 MDT

Back to Basics: Computer Systems
Wednesday September 16, 2026 15:15 - 16:15 MDT
Every software engineer needs to understand the fundamentals of how your computer works. My mantra for teaching computer systems is 'no more magic', and in this talk I'll do my best to dispel what feels like 'magic' in our hardware in a single hour. In this talk, we will investigate '3' pictures of the 'the compilation process', 'program stack', and a 'cpu' to understand how these components work together to ultimately compile and execute code. An emphasis during this talk will focus on the 'CPU' and the hardware components (e.g. registers, cache memory, main memory, page table) interact with the operating system to efficiently execute a program. Hardware will be presented side-by-side with code so we can understand what happens in the hardware as software executes. Attendees will leave this talk with a better mental model of how their hardware works, and the implications their software design choices have on performance.

Presenters
avatar for Mike Shah

Mike Shah

Professor / (occasional) 3D Graphics Engineer
Mike Shah is currently a teaching faculty at Yale University with primary teaching interests  in computer systems, computer graphics, and game engines. Mike's research interests are related to performance engineering (dynamic analysis), software visualization, and computer graphics... Read More →
Wednesday September 16, 2026 15:15 - 16:15 MDT
_3

16:45 MDT

The Clocks of C++: Knowing When (and Why) to Use Each One
Wednesday September 16, 2026 16:45 - 17:45 MDT
Time handling in C++ looks simple — but it has some caveats. Between system_clock , steady_clock , high_resolution_clock , and a few new friends from C++20, it’s easy to pick the wrong one and end up with flaky tests, wrong timestamps, or confusing results.

This talk demystifies how time works in C++. We’ll explore what a "clock" really is, how std::chrono models it, and why not all clocks tick the same way. You'll learn when to use each standard clock, how to reason about monotonicity and precision, and how to build your own custom or fake clocks to make testing reliable.

By the end, you'll not only understand the difference between wall time and steady time — you'll know how to use them confidently in your production and test code.

Presenters
avatar for Sandor Dargo

Sandor Dargo

Software Developer, Spotify
Sandor is a passionate software developer focusing on reducing the maintenance costs by developing, applying and enforcing clean code standards. His other core activity is knowledge sharing both oral and written, within and outside of his employer. When not reading or writing, he... Read More →
Wednesday September 16, 2026 16:45 - 17:45 MDT
_3
 
Thursday, September 17
 

09:00 MDT

Back to Basics: Loops in C++
Thursday September 17, 2026 09:00 - 10:00 MDT
A fundamental control structure of each programming language are loops. And we all expect them to be simple and self explanatory. However, C++ would not be C++, if there would be no tricky details to learn and respect about loops in C++.

This talk takes its time to discuss the various ways and approaches to program loops in C++. Beside basic while and for loops, we talk about the range-based for loop, and all the extensions recently added to these control structures.

In addition, we will look at other ways to program loops in C++, such as using algorithms and how to deal with parallel computing in a loop.

As a result you get a deeper understanding of the various ways loops can be programmed in Modern C++ so that you know better how to use them in practice.

Presenters
Thursday September 17, 2026 09:00 - 10:00 MDT
_3

14:00 MDT

Using Modules in a Real Project
Thursday September 17, 2026 14:00 - 15:00 MDT
C++20 modules are finally usable end to end, from your own modules to 'import std;' The functional build-system support with real diagnostics. This talk teaches modules the way #include was once taught: with small files, a build, and concrete use cases. Modules stopped being experimental somewhere around 2025. This session builds the mental model from scratch: what a primary module interface unit is, how partitions and implementation units fit together, and, crucially, how import differs from #include in ways that matter day to day. It uses a small library, exposes it as a module, splits it across partitions, consumes import std; and observes the compile-time effect. Then it answers the questions every team hits in week one: how modules interact with macros, with templates in headers, with header-only dependencies, and with a mixed codebase that can't convert everything at once. The examples will be using CMake, clang and recent gcc. You will leave able to structure a small library as a module, explain why a macro didn't cross a module boundary, and plan an incremental adoption that doesn't require converting the whole tree.

Presenters
avatar for Erez Strauss

Erez Strauss

Strat - Sr Software Engineer, Eisler Captal
Erez Strauss worked in Banks and Hedge Funds while focused on low latency systems.
Thursday September 17, 2026 14:00 - 15:00 MDT
_3

15:15 MDT

Back to Basics: Memory Alignment
Thursday September 17, 2026 15:15 - 16:15 MDT
Have you ever wondered why your C++ class suddenly doubled in size, or why reordering its members made it smaller? This talk introduces memory alignment in C++ from the ground up - what it is, why it is critical, and how compilers handle it under the hood. We’ll start from first principles: how modern CPUs read memory, the difference between aligned and unaligned access, and the performance costs of getting it wrong. Using benchmarks, we’ll see just how impactful misalignment can be. From there, we’ll dive into how compilers lay out data members in structs and classes, and how simple reordering can reduce memory footprint. Live coding examples will illustrate how padding is introduced and how tools like alignas, alignof, and std::align give you precise control. We’ll also look at packed data structures, which trade alignment guarantees for compactness - common in network protocols. While they can save space, they also introduce risks like undefined behavior when misused. Through real-world examples, you'll learn when packed structures make sense, and when they’re a hazard. By the end of the talk, you'll walk away with a solid intuition for alignment and the confidence to manage memory layout effectively in your programs.

Presenters
avatar for Sarthak Sehgal

Sarthak Sehgal

Tech Lead, Maven Securities
Sarthak Sehgal is a C++ Software Engineer at a high-frequency options market-making firm based in Chicago. He is passionate about low-level programming, performance optimization, and their applications in financial systems. Outside of work, he shares insights on C++ and finance on... Read More →
Thursday September 17, 2026 15:15 - 16:15 MDT
_3

16:45 MDT

Getting More Out of AI in C++: Custom Hooks, Skills, and MCP servers
Thursday September 17, 2026 16:45 - 17:15 MDT
AI coding agents are transforming how we write C++ code and come with a growing extensibility stack. Between hooks, skills, and MCP servers it's not obvious when to reach for which in your day to day workflow. This talk demonstrates the differences through demos in a real C++ codebase. We'll build a hook that runs the project's linter and lets the agent fix any issues it finds, create a skill to flag C++ performance pitfalls, and use an MCP server to verify portability across compilers, with each technique solving a problem the others can't. Along the way, you'll see how these mechanisms compose into a single workflow. Whether you're just getting started with AI tooling or already using it daily, you'll leave knowing exactly which tool to reach for and how to get the most out of your AI coding agent for C++ development.

Presenters
Thursday September 17, 2026 16:45 - 17:15 MDT
_3

17:20 MDT

Who Is #include-ing You? Measuring the Impact of C++ Libraries
Thursday September 17, 2026 17:20 - 17:50 MDT
C++ library maintainers are often in the dark as to everyone who actually depends on their code. Without that knowledge, deprecation decisions are guesses, the downstream impact of any API change is hard to predict, and the case for funding or continued investment is difficult to make rigorously. This talk demonstrates how mapping your downstream ecosystem changes the way you maintain and evolve a library, using dependent-audit, an open-source tool that discovers real-world dependents by searching public source code for #include directives and CMake integration files, and cross-referencing published academic citations. We'll show concrete examples of what this data reveals: where your true API surface lies, which users are candidates for upstream contribution, and how to make the case for your project's real-world significance. Attendees will leave with a lens for library stewardship built on data and ecosystem analysis

Presenters
avatar for John Parent

John Parent

Kitware, Inc, Research and Development Engineer
John Parent is a senior research and development engineer on the Software Solutions Team at Kitware, Inc., where he is the primary developer of the Spack package manager’s Windows support. His other work covers contributions to CMake, establishing complex CI systems and C++ /Python... Read More →
Thursday September 17, 2026 17:20 - 17:50 MDT
_3
 
Friday, September 18
 

09:00 MDT

C++26: A Curated Tour of What's New
Friday September 18, 2026 09:00 - 10:00 MDT
The next evolution of C++ has officially arrived, bringing a massive wave of enhancements to both the core language and the Standard Library. But with hundreds of committee proposals officially baked into the standard, where do you start? Continuing the tradition from previous releases, this fast-paced session delivers a comprehensive look at the new and updated features that define C++26.

We won’t get bogged down in the minutiae of every single ISO proposal—covering everything in detail is impossible in just one hour. Instead, you'll get a high-level, curated overview of the most impactful changes, from the major game-changers down to the small quality-of-life gems. If you want to get up to speed with the new standard and see how it will shape your codebase, this session is for you.

The session will touch on the following core language and Standard Library topics.

C++26 core language changes include - Reflection - Contracts - Unnamed placeholder variables - = delete("reason"); - Pack indexing - #embed - constexpr exceptions, constexpr placement new - Variadic friends - ...

C++26 Standard Library changes include - Execution control library - New libraries such as , , , , , and more - std::inplace vector: dynamically-resizable vector with fixed capacity - std::philox engine: counter-based random number engine - std::text_encoding: text encodings identification - More constexpr for containers and container adaptors - Saturation arithmetic - New SI prefixes - Printing Blank Lines with std::println() - ...

Where applicable, I’ll point you toward other specialized CppCon sessions for those ready to dive even deeper into specific topics.

Presenters
avatar for Marc Gregoire

Marc Gregoire

Software Project Manager, Nikon Metrology
MARC GREGOIRE is a software project manager and software architect from Belgium. He graduated from the University of Leuven, Belgium, with a degree in "Burgerlijk ingenieur in de computer wetenschappen" (equivalent to a master of science in engineering in computer science). The... Read More →
Friday September 18, 2026 09:00 - 10:00 MDT
_3

10:30 MDT

Back to Basics: Containers
Friday September 18, 2026 10:30 - 11:30 MDT
How to Choose and Use the Right Container in Modern C++: Part 1, Classic Containers

Choosing the right container and using it correctly can have a profound impact on the performance of a program, but doing so is harder than you might think. In Part 1 we will survey the containers and adaptors in the C++17 Standard Library, and discuss how to choose the best tool for the job and extract the best performance from it. We will consider the abstractions they model and the practical limitations they impose, and find that choosing between them requires an understanding not only of the speed and size tradeoffs of each container, but also of the difference between algorithmic complexity and actual behavior. And we will flag aspects of the standard containers that, without this understanding, can lead you to the wrong choice.

How to Choose and Use the Right Container in Modern C++: Part 2, New and Future Containers

Choosing the right container and using it correctly can have a profound impact on the performance of a program, but doing so is harder than you might think. In Part 2 we will survey the new containers and adaptors introduced to the Standard Library in C++23/26, and discuss how to choose the best tool for the job and extract the best performance from it. We will consider the abstractions they model and the practical limitations they impose, and find that choosing between them requires an understanding not only of the speed and size tradeoffs of each container, but also of the difference between algorithmic complexity and actual behavior. And we will examine a proposal for a future container that diverges from the historical STL design principles and ask: what makes for a good container design?

Presenters
avatar for Alan Talbot

Alan Talbot

Manager - Software Engineering, LTK Engineering Services
Alan Talbot started programming in 1972, in BASIC on a DEC PDP-8. He began his professional programming career in 1979 and started using C++ in 1989. For 20 years he was a pioneer in music typography software, then spent 8 years writing digital mapping software, and has spent the... Read More →
Friday September 18, 2026 10:30 - 11:30 MDT
_3

13:30 MDT

Modernizing Legacy Codebases without Stopping the World
Friday September 18, 2026 13:30 - 14:30 MDT
Every mature codebase carries history and technical debt. The challenge is modernizing without stopping the world or introducing big re-write failure risks.

In this talk, we’ll explore how to modernize legacy C++ codebases incrementally using a mix of deterministic code transformations and AI-assisted refactoring .

After delving into some of the common problems with legacy modernization, we'll start tackling the simple "boring" stuff that deliver huge leverage of changes via clang tooling . These represent repeatable, deterministic reviewable upgrades that can be automated and applied at scale.

Then we can look at more difficult transformations that can be AI assisted with more aggressive transformations including API improvements and how to prevent it going off the rails. This will be backed by Compiler diagnostics, static analysis and testing to keep changes maintainable and correct .

The goal is not to replace engineering judgment, but to accelerate it: turning modernization into a continuous, low-risk workflow instead of a disruptive project.

Attendees will leave with a repeatable playbook for modernizing legacy codebases incrementally, safely, and at scale—using the right tool for each class of change

Presenters
avatar for Peter Muldoon

Peter Muldoon

Engineering Lead, Bloomberg
Pete Muldoon has been using C++ since 1991. Pete has worked in Ireland, England and the USA and is currently employed by Bloomberg. A consultant for over 20 years prior to joining Bloomberg, Peter has worked on a broad range of projects and code bases in a large number of companies... Read More →
Friday September 18, 2026 13:30 - 14:30 MDT
_3

14:45 MDT

Concurrency for Modern CPUs - Lock-Free or Lock-based?
Friday September 18, 2026 14:45 - 15:45 MDT
For decades, lock-free programming has been the go-to optimization for the most contended parts of concurrent programs. The reasoning was simple: locks are slow under contention, so eliminate the locks. This made sense on the hardware of the time, and I should know—I've given several talks explaining how and why to do it. The hardware has changed. Modern CPUs are highly optimized for the operations that make locks fast: cache-line transfers, memory ordering, and speculative execution through lock acquisitions. To set the stage, we will briefly establish why, under high contention, a well-written lock consistently outperforms lock-free atomics and CAS loops. (As an aside, I'll hand you a concrete recipe for a spinlock that actually holds up under extreme contention—and show why systematic backoff, by batching cache-line ownership, is what protects the shared interconnect.) But the core of this talk addresses a completely flipped reality: at low contention, lock-free code decisively outperforms spinlocks, for the most surprising reason. Conventional wisdom assumes an uncontended spinlock is practically free. Using raw hardware performance counters, we will see why it isn't: the implicit synchronization a spinlock imposes—even with no contention at all—is deeply unfavorable to modern out-of-order pipelines, while a single lock-free XADD or CAS, an indivisible read-modify-write, is not. The path everyone assumes is free turns out to be the quietly expensive one. Putting these two facts together—locks winning high contention via cache-line batching, atomics winning low contention by staying out of the pipeline's way—points to a concrete design. I will present a highly optimized MPMC (multi-producer, multi-consumer) queue built on a dual-domain structure that deliberately segregates the contended path from the uncontended one, letting each run on the mechanism the hardware actually favors. We will then walk extensive benchmarks across modern silicon—Intel, ARM server (Graviton/Grace), and Apple (M3)—showing this queue is the fastest, often by wide margins, across most operating regimes. We will also see why the tradeoffs play out so differently per chip, in ways that aren't obvious from the spec sheet, and why "ARM vs x86" is the wrong axis entirely—what matters is the chip's target market, not its instruction set. Finally, no benchmark is complete without honest caveats. I will detail the specific corners where this design can still be beaten, the hidden system costs you pay elsewhere to buy this throughput, and why systems that strictly require progress guarantees—deadlock avoidance, priority inversion, safe execution in a signal handler—mean traditional lock-free programming is not dead. It has simply relocated. If you've ever reached for a complex lock-free algorithm to speed up a highly contended hot path—or wondered what your CPU is actually doing during a mutex unlock—this talk will change your mind about where lock-free programming truly belongs.

Presenters
avatar for Fedor Pikus

Fedor Pikus

Fellow, Siemens EDA
Fedor G Pikus is a Technical Fellow and the Director of the Advanced Projects Team in Siemens Digital Industries Software. His responsibilities include planning the long-term technical direction of Calibre products, directing and training the engineers who work on these products... Read More →
Friday September 18, 2026 14:45 - 15:45 MDT
_3
 
Share Modal

Share this link via

Or copy link

Filter sessions
Apply filters to sessions.