CppCon 2019: Saar Raz “How to Implement Your First Compiler Feature: The Story of Concepts in Clang”


Discussion & Comments: https://www.reddit.com/r/cpp/

Presentation Slides, PDFs, Source Code and other presenter materials are available at: https://github.com/CppCon/CppCon2019

C++20 will introduce Concepts into the language — a feature that allows defining which template arguments may be passed into a template. Concepts, long in the making, is set to revolutionize the way we write generic code. It improves code readability, error message readability, and compile times.

In December 2017, I, unrelated to Clang or the concepts proposal in any way, and not having any compiler engineering experience or background, volunteered to implement C++20 concepts in the Clang compiler. Now, a year and a half of working on the feature in my (little) spare time, I have reached conformance with the standard, and am close to merging into mainline Clang.

In this talk I will walk you through the story of how this all happened - how I got from just being a Concepts enthusiast with no knowledge of compiler architecture or open-source contribution to implementing one of the largest new features in recent C++ history in one of its leading compilers. I will show that taking the compiler into your own hands and contributing to the C++ community is very achievable, by showing the process I went through taking on this daunting task, giving real details of how I initially implemented some of the first aspects of the feature.

The talk assumes no prior knowledge of Concepts, and in fact does not focus very much on the feature itself but rather on the story of my involvement with it.

Saar Raz
A tech and C++ enthusiast, Saar programs in C++ mostly in his free time. In late 2017, he volunteered to implement C++20 Concepts in the Clang compiler, and has been working on that since, having recently reached a feature-complete beta stage.
Other than C++ and tech, Saar also likes graphic design and playing video games.

Videos Filmed & Edited by Bash Films: http://www.BashFilms.com