Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: site/dev/contrib/c++11.md

Issue 901053007: Document my current understanding of C++11 in Skia. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: revise Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 C++11 in Skia
2 =============
3
4 Skia is exploring the use of C++11. As a library, we are technically limited
5 by what our clients support and what our build bots support.
6
7 Skia may also be limited by restrictions we choose put on ourselves. This
8 document is not concerned with C++11 policy in Skia, only its technical
9 feasibility. This is about what we can use, a superset of what we may use.
10
11 The gist:
12 - C++11 the language as supported by GCC 4.4 or later is probably usable.
13 - If you break a bot, that feature is not usable.
14 - The C++11 standard library can't generally be used.
15 - Local statics are not thread safe.
16
17
18 Clients
19 -------
20
21 The clients we pay most attention to are Chrome, Android, Mozilla, and a few
22 internal Google projects.
23
24 Chrome builds with a recent Clang on Mac and Linux and with a recent MSVC on
25 Windows. These toolchains are new enough to not be the weak link to use any
26 C++11 language feature. But Chrome still supports Mac OS X 10.6, which does
27 not ship with a C++11 standard library. So [Chrome has banned the use of the
28 C++11 standard library](http://chromium-cpp.appspot.com/). Some header-only
29 features are probably technically fine, but the Mac toolchain will prevent us
30 from even trying at compile time as long as we target 10.6 as our minimum API
31 level.
32
33 Chrome intentionally disables thread-safe initialization of static variables,
34 and MSVC doesn't support it at all, so we cannot rely on that.
35
36 Android builds with either a recent GCC or a recent Clang. They're generally
37 not a weak link for C++11 language features. Android's C++ standard library
38 has always been a pain, but since we can't use it anyway (see Chrome), don't
39 worry about it.
40
41 Mozilla's current weak link is a minimum requirement of GCC 4.6. Most features
42 marked in red on Mozilla's C++11 [feature
43 matrix](https://developer.mozilla.org/en-US/docs/Using_CXX_in_Mozilla_code) are
44 marked that way because they arrived in GCC 4.7 or GCC 4.8. Their
45 minimum-supported Clang and MSVC toolchains are great. They also appear to ban
46 the C++ standard library.
47
48 Internal Google projects tend to support C++11 completely, including the
49 full C++11 standard library.
50
51
52 Bots
53 ----
54
55 Most of our bots are pretty up-to-date: the Windows bots use MSVC 2013, the Mac
56 bots a recent Clang, and the Linux bots GCC 4.8 or a recent Clang. Our Android
57 bots use a recent toolchain from Android (see above), and our Chrome bots use
58 Chrome's toolchains (see above). I'm not exactly sure what our Chrome OS bots
59 are using, but they've never been a problem.
60
61 A few miscellaneous compile-only bots are actually our current overall weak link :
62 - Our NaCl builds use an old non-PNaCl toolchain, which is based on GCC
63 4.4. GCC 4.4 has some support for C++11, but it's not nearly complete.
64 There is no upgrade path except PNaCl; even the very latest NaCl toolchain
65 is GCC 4.4, while PNaCl is based on Clang 3.4 (with complete C++11 support ).
66 - Our iOS builds are driven from a Mac 10.7 machine using some unknown old C lang.
67 Who knows how old that is or what it supports? It's probably due for an u pdate.
68
69 If we were to eliminate the problems of the NaCl and iOS bots, our ability to
70 use C++11 would match Mozilla's list nearly identically.
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698