CppCon 2019 has ended
Back To Schedule
Thursday, September 19 • 09:00 - 10:00
Time Travel: Applying Gradual Typing to Time Types with Clang's LibTooling

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

Libraries for C++ are constantly evolving, with new APIs being added, old ones being deprecated and functionality continually changing. In past CppCon talks, I've described in abstract how Google manages this change by applying large-scale changes across our C++ codebase using clang's libTooling infrastructure.

In this talk, we'll put this previous work in practice by demonstrating how we use clang-tidy and clang's libTooling library to improve type safety of time types across Google's 250M lines of C++. Using tools currently open sourced as part of clang-tidy, we'll show how the underlying model of time types allow us to migrate from a collection of integers and floating point types to the much more strongly typed `absl::Time` and `absl::Duration` types representing time instants and intervals. Along the way, we'll discover how this process finds existing bugs and prevents new ones from creeping in.

This "gradual typing" technique is not limited to just Time types, and we'll explore how this can be used to improve pointer ownership deduction and other places where more constraining types eliminate classes of bugs.

avatar for Hyrum Wright

Hyrum Wright

Software Engineer, Google
@hyrumwright">Hyrum Wright hates C++ less than the rest of the programming languages he's worked with, and works on large-scale change infrastructure at Google. He writes programs to rewrite other programs, and will eventually put himself out of a job. In a former life, he was an... Read More →

Thursday September 19, 2019 09:00 - 10:00 MDT
Crest 3
  • Compilers/Tooling