Clang MapReduce -- Automatic C++ Refactoring at Google Scale
Sign in to YouTube
Sign in to YouTube
Sign in to YouTube
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.
-
Category
-
License
Standard YouTube License
Loading...
Loading...
Loading...
Loading...
Loading...
-
1:06:39
Keynote: Architecture the Lost Years by Robert Martinby ConfreaksFeatured
25,591
-
1:00:54
GoingNative 2012 - Day 2 - Clangby Paulo Portela
315 views
-
55:16
Google I/O 2009 - The Myth of the Genius Programmerby GoogleDevelopers
219,460 views
-
1:13:37
Scott Meyers @ NWCPP: Red Code/Green Code - Generalizing Constby Kevin Frei
1,320 views
-
37:57
The Clean Code Talks - Don't Look For Things!by GoogleTechTalks
74,574 views
-
51:58
Life of a C++ Standardby GoogleTechTalks
10,535 views
-
3:25:35
Google I/O 2013: Keynoteby GoogleDevelopers
521,439 views
-
59:41
An Overview of the Coming C++ (C++0x) Standardby GoogleTechTalks
47,821 views
-
1:20:30
7 Habits For Effective Text Editing 2.0by GoogleTalksArchive
17,401 views
-
54:57
C++ Stylisticsby GoogleTechTalks
53,668 views
-
55:03
How To Approach Refactoring by Venkat Subramaniamby Agile India
3,937 views
-
38:48
Integrating LLVM into FreeBSDby LLVMProject
4,103 views
-
38:24
MapReduceby GoogleIsrael
41,728 views
-
33:01
Using clang in the Chromium projectby LLVMProject
1,861 views
-
16:32
Code Refactoringby Derek Banas
8,783 views
-
4:48
Bjarne Stroustrup: Why I Created C++by bigthink
176,470 views
-
2:39
What is MapReduce?by ibmbigdata
13,249 views
-
4:55:28
Google I/O 2013 Keynoteby CNETTV
40,517 views
-
39:34
PTX Back-End: GPU Programming With LLVMby LLVMProject
1,594 views
-
6:15
Hadoop Map/Reduce Wordcount exampleby phsinger1
13,750 views
- Loading more suggestions...
All Comments (11)
MrPointless 9 months ago
Thanks!
Sign in to YouTube
Sign in to YouTube
AsianBorat 9 months ago
Check BadVoidShip's comment. He didn't click "reply", so you probably didn't get a notification.
Sign in to YouTube
Sign in to YouTube
BadVoidShip 10 months ago
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 to YouTube
MrPointless 10 months ago
So... did it ever release?
Sign in to YouTube
Sign in to YouTube
alim80 1 year ago
Great talk, can't wait to see if a tool like that is ever released!
Sign in to YouTube
Sign in to YouTube
otherwiseguy 1 year ago
Is there any place that we can watch for when this tool is released?
Sign in to YouTube
Sign in to YouTube
PixelAliensWorld 1 year ago
Really interesting :)
Sign in to YouTube
Sign in to YouTube
Manuel Klimek 1 year ago
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 to YouTube
JuliaLLawall 1 year ago
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 to YouTube