OLD | NEW |
1 C++11 in Skia | 1 C++11 in Skia |
2 ============= | 2 ============= |
3 | 3 |
4 Skia is exploring the use of C++11. As a library, we are technically limited | 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. | 5 by what our clients support and what our build bots support. |
6 | 6 |
7 Skia may also be limited by restrictions we choose put on ourselves. This | 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 | 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. | 9 feasibility. This is about what we can use, a superset of what we may use. |
10 | 10 |
11 The gist: | 11 The gist: |
| 12 |
12 - C++11 the language as supported by GCC 4.4 or later is probably usable. | 13 - 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 - If you break a bot, that feature is not usable. |
14 - The C++11 standard library can't generally be used. | 15 - The C++11 standard library can't generally be used. |
15 - Local statics are not thread safe. | 16 - Local statics are not thread safe. |
16 | 17 |
17 | 18 |
18 Clients | 19 Clients |
19 ------- | 20 ------- |
20 | 21 |
21 The clients we pay most attention to are Chrome, Android, Mozilla, and a few | 22 The clients we pay most attention to are Chrome, Android, Mozilla, and a few |
(...skipping 30 matching lines...) Expand all Loading... |
52 Bots | 53 Bots |
53 ---- | 54 ---- |
54 | 55 |
55 Most of our bots are pretty up-to-date: the Windows bots use MSVC 2013, the Mac | 56 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 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 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 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 are using, but they've never been a problem. |
60 | 61 |
61 A few miscellaneous compile-only bots are actually our current overall weak link
: | 62 A few miscellaneous compile-only bots are actually our current overall weak link
: |
| 63 |
62 - Our NaCl builds use an old non-PNaCl toolchain, which is based on GCC | 64 - 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. | 65 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 | 66 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). | 67 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 Cla
ng. | 68 - Our iOS builds are driven from a Mac 10.7 machine using some unknown old Cla
ng. |
67 Who knows how old that is or what it supports? It's probably due for an upd
ate. | 69 Who knows how old that is or what it supports? It's probably due for an upd
ate. |
68 | 70 |
69 If we were to eliminate the problems of the NaCl and iOS bots, our ability to | 71 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. | 72 use C++11 would match Mozilla's list nearly identically. |
OLD | NEW |