Loading…
CppCon 2019 has ended
Wednesday, September 18 • 15:15 - 16:15
How to Implement Your First Compiler Feature: The Story of Concepts in Clang

Log in to save this to your schedule, view media, leave feedback and see who's attending!

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.

Speakers
avatar for Saar Raz

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... Read More →


Wednesday September 18, 2019 15:15 - 16:15 MDT
Summit 4/5
  • Compilers/Tooling