YouTube home Comedy Week on YouTube
Upload

Clang MapReduce -- Automatic C++ Refactoring at Google Scale

LLVMProject LLVMProject·14 videos
311
10,580
Like     Dislike 0

Sign in to YouTube

Sign in with your Google Account (YouTube, Google+, Gmail, Orkut, Picasa, or Chrome) to like LLVMProject's video.

Sign in to YouTube

Sign in with your Google Account (YouTube, Google+, Gmail, Orkut, Picasa, or Chrome) to dislike LLVMProject's video.

Sign in to YouTube

Sign in with your Google Account (YouTube, Google+, Gmail, Orkut, Picasa, or Chrome) to add LLVMProject's video to your playlist.

Uploaded on Dec 14, 2011

Google has over 100 million lines of code, and our biggest programming language is C++. We have a single, shared codebase developed primarily on mainline. We build every binary and all of its libraries from scratch every time, allowing us to incrementally evolve APIs and libraries over time. The entire development process is extremely incremental in nature, and even API-breaking changes are a regular occurrence. However, for core libraries used throughout the codebase, this development model is a huge challenge: how do we incrementally evolve an API in use by tens of thousands of other libraries? The answer is to use Clang to automatically refactor APIs and their users across the codebase. How do we scale Clang up to possibly the single largest unified codebase in the world? The same way Google scales anything else: MapReduce. By coupling Clang's library design and architecture to existing Google infrastructure we can automatically compile, analyze, and refactor the entire Google codebase in minutes. In this talk, I will dive into the challenges of refactoring C++ code, how we're using Clang and making it even better at solving them, and how we scale these solutions to the size of our codebase.

Loading icon Loading...

Loading icon Loading...

Loading icon Loading...

The interactive transcript could not be loaded.

Loading icon Loading...

Loading icon Loading...

Ratings have been disabled for this video.
Rating is available when the video has been rented.
This feature is not available right now. Please try again later.

All Comments (11)

Sign in now to post a comment!
  • MrPointless

    Thanks!

    ·

    Sign in to YouTube

    Sign in with your YouTube Account (YouTube, Google+, Gmail, Orkut, Picasa, or Chrome) to rate MrPointless's comment.

    Sign in to YouTube

    Sign in with your YouTube Account (YouTube, Google+, Gmail, Orkut, Picasa, or Chrome) to rate MrPointless's comment.
    in reply to AsianBorat (Show the comment)
  • AsianBorat

    Check BadVoidShip's comment. He didn't click "reply", so you probably didn't get a notification.

    ·

    Sign in to YouTube

    Sign in with your YouTube Account (YouTube, Google+, Gmail, Orkut, Picasa, or Chrome) to rate AsianBorat's comment.

    Sign in to YouTube

    Sign in with your YouTube Account (YouTube, Google+, Gmail, Orkut, Picasa, or Chrome) to rate AsianBorat's comment.
    in reply to MrPointless (Show the comment)
  • BadVoidShip

    It's already out. There's another newer talk from May 2012 video id: yuIOGfcOH0k at 36min in he gives a link to the svn branch (although by now it might be merged into clang's main).

    ·

    Sign in to YouTube

    Sign in with your YouTube Account (YouTube, Google+, Gmail, Orkut, Picasa, or Chrome) to rate BadVoidShip's comment.

    Sign in to YouTube

    Sign in with your YouTube Account (YouTube, Google+, Gmail, Orkut, Picasa, or Chrome) to rate BadVoidShip's comment.
  • MrPointless

    So... did it ever release?

    ·

    Sign in to YouTube

    Sign in with your YouTube Account (YouTube, Google+, Gmail, Orkut, Picasa, or Chrome) to rate MrPointless's comment.

    Sign in to YouTube

    Sign in with your YouTube Account (YouTube, Google+, Gmail, Orkut, Picasa, or Chrome) to rate MrPointless's comment.
  • alim80

    Great talk, can't wait to see if a tool like that is ever released!

    ·

    Sign in to YouTube

    Sign in with your YouTube Account (YouTube, Google+, Gmail, Orkut, Picasa, or Chrome) to rate alim80's comment.

    Sign in to YouTube

    Sign in with your YouTube Account (YouTube, Google+, Gmail, Orkut, Picasa, or Chrome) to rate alim80's comment.
  • otherwiseguy

    Is there any place that we can watch for when this tool is released?

    ·

    Sign in to YouTube

    Sign in with your YouTube Account (YouTube, Google+, Gmail, Orkut, Picasa, or Chrome) to rate otherwiseguy's comment.

    Sign in to YouTube

    Sign in with your YouTube Account (YouTube, Google+, Gmail, Orkut, Picasa, or Chrome) to rate otherwiseguy's comment.
  • PixelAliensWorld

    Really interesting :)

    ·

    Sign in to YouTube

    Sign in with your YouTube Account (YouTube, Google+, Gmail, Orkut, Picasa, or Chrome) to rate PixelAliensWorld's comment.

    Sign in to YouTube

    Sign in with your YouTube Account (YouTube, Google+, Gmail, Orkut, Picasa, or Chrome) to rate PixelAliensWorld's comment.
  • Manuel Klimek

    JuliaLLawall: we actually looked at Coccinelle before implementing the language, and found that it was not sufficient nor easy enough to extend for what we wanted to do in C++. Unfortunately C++ is a completely different beast from C - there are a lot more corner cases and little hidden things that are really important to match on.

    ·

    Sign in to YouTube

    Sign in with your YouTube Account (YouTube, Google+, Gmail, Orkut, Picasa, or Chrome) to rate Manuel Klimek's comment.

    Sign in to YouTube

    Sign in with your YouTube Account (YouTube, Google+, Gmail, Orkut, Picasa, or Chrome) to rate Manuel Klimek's comment.
  • JuliaLLawall

    It looks similar to what Coccinelle does, although Coccinelle provides pattern matching on the concrete syntax and allows the transformation specification to be integrated directly into the pattern specification, using a patch-like notation. It doesn't seem possible to provide an example on the youtube comment page, but there are examples on the web site. Currently, however, Coccinelle only supports C code, with a very minimal treatment of C++.

    ·

    Sign in to YouTube

    Sign in with your YouTube Account (YouTube, Google+, Gmail, Orkut, Picasa, or Chrome) to rate JuliaLLawall's comment.

    Sign in to YouTube

    Sign in with your YouTube Account (YouTube, Google+, Gmail, Orkut, Picasa, or Chrome) to rate JuliaLLawall's comment.
  • Loading comment...
Loading...
Loading...
Working...
Sign in to add this to Watch Later