diff options
Diffstat (limited to 'site')
-rw-r--r-- | site/dev/contrib/c++11.md | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/site/dev/contrib/c++11.md b/site/dev/contrib/c++11.md index a8fc11dabf..1854feb3b6 100644 --- a/site/dev/contrib/c++11.md +++ b/site/dev/contrib/c++11.md @@ -10,9 +10,9 @@ feasibility. This is about what we can use, a superset of what we may use. The gist: -- C++11 the language as supported by GCC 4.7 or later is probably usable. +- C++11 the language as supported by GCC 4.7 or later is pretty usable. +- The C++11 standard library can generally be used, with some teething. - If you break a bot, that feature is not usable. -- The C++11 standard library can't generally be used. - Local statics are not thread safe. @@ -24,27 +24,20 @@ internal Google projects. Chrome builds with a recent Clang on Mac and Linux and with a recent MSVC on Windows. These toolchains are new enough to not be the weak link to use any -C++11 language feature. But Chrome still supports Mac OS X 10.6, which does -not ship with a C++11 standard library. So [Chrome has banned the use of the -C++11 standard library](http://chromium-cpp.appspot.com/). Some header-only -features are probably technically fine, but the Mac toolchain will prevent us -from even trying at compile time as long as we target 10.6 as our minimum API -level. +C++11 language feature. Chrome intentionally disables thread-safe initialization of static variables, -and MSVC doesn't support it at all, so we cannot rely on that. +so we cannot rely on that. Our bots disable this too, so keep an eye on TSAN. -Android builds with either a recent GCC or a recent Clang. They're generally -not a weak link for C++11 language features. Android's C++ standard library -has always been a pain, but since we can't use it anyway (see Chrome), don't -worry about it. +Android builds with either a somewhat aged GCC or a recent Clang. They're +generally not a weak link for C++11 language features. Android's C++ standard +library had historically been a pain, but seems to work fine these days. Mozilla's current weak link is a minimum requirement of GCC 4.7. Most features marked in red on Mozilla's C++11 [feature matrix](https://developer.mozilla.org/en-US/docs/Using_CXX_in_Mozilla_code) are marked that way because they arrived in GCC 4.8. Their minimum-supported Clang -and MSVC toolchains are great. They also appear to ban the C++ standard -library. +and MSVC toolchains are pretty good, but MSVC 2013 will become the weak link soon. Internal Google projects tend to support C++11 completely, including the full C++11 standard library. @@ -57,6 +50,6 @@ Most of our bots are pretty up-to-date: the Windows bots use MSVC 2013, the Mac bots a recent Clang, and the Linux bots GCC 4.8 or a recent Clang. Our Android bots use a recent toolchain from Android (see above), and our Chrome bots use Chrome's toolchains (see above). I'm not exactly sure what our Chrome OS bots -are using, but they've never been a problem. +are using. They're probably our weak link right now, though problems are rare. I believe our bots' ability to use C++11 matches Mozilla's list nearly identically. |