-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Breaking: Use C++ 20 #1382
Breaking: Use C++ 20 #1382
Conversation
This pull request was exported from Phabricator. Differential Revision: D49261607 |
Summary: X-link: facebook/yoga#1382 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. If we wanted to use `std::bit_cast` we would need one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) For mobile this means: 1. NDK 26 (still in Beta 😭) 1. XCode 14.3.0 (~6 months old) https://en.cppreference.com/w/cpp/compiler_support/20 That isn't quite doable yet, but we can start taking advantage of language features in the meantime. More of these will be supported in older toolchains. Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Differential Revision: D49261607
Summary: X-link: facebook/yoga#1382 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. If we wanted to use `std::bit_cast` we would need one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) For mobile this means: 1. NDK 26 (still in Beta 😭) 1. XCode 14.3.0 (~6 months old) https://en.cppreference.com/w/cpp/compiler_support/20 That isn't quite doable yet, but we can start taking advantage of language features in the meantime. More of these will be supported in older toolchains. Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Differential Revision: D49261607
Summary: X-link: facebook/yoga#1382 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. If we wanted to use `std::bit_cast` we would need one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) For mobile this means: 1. NDK 26 (still in Beta 😭) 1. XCode 14.3.0 (~6 months old) https://en.cppreference.com/w/cpp/compiler_support/20 That isn't quite doable yet, but we can start taking advantage of language features in the meantime. More of these will be supported in older toolchains. Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Differential Revision: D49261607
Summary: X-link: facebook/react-native#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. If we wanted to use `std::bit_cast` we would need one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) For mobile this means: 1. NDK 26 (still in Beta 😭) 1. XCode 14.3.0 (~6 months old) https://en.cppreference.com/w/cpp/compiler_support/20 That isn't quite doable yet, but we can start taking advantage of language features in the meantime. More of these will be supported in older toolchains. Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Differential Revision: D49261607
ade44a5
to
d7d7570
Compare
This pull request was exported from Phabricator. Differential Revision: D49261607 |
Summary: X-link: facebook/yoga#1382 Pull Request resolved: facebook#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. Accounting for bundled STL, and using `bit_cast` as a reference feature, I think this means we require one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) On mobile, the Clang 14 requirement translates to needing one of: 1. NDK 25 (~1 year old) 1. XCode 14.2.0 (~1 year old) https://en.cppreference.com/w/cpp/compiler_support/20 I think it is likely everything will be buildable for a while under Clang 10 (released 3.5 years ago), GCC 11 (releaseed 3.5 years ago), and . Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Differential Revision: https://internalfb.com/D49261607 fbshipit-source-id: f6eddcfdc9e21ffaf76a72b61fff319388342ded
Summary: X-link: facebook/yoga#1382 Pull Request resolved: facebook#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. Accounting for bundled STL, and using `bit_cast` as a reference feature, I think this means we require one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) On mobile, the Clang 14 requirement translates to needing one of: 1. NDK 25 (~1 year old) 1. XCode 14.2.0 (~1 year old) https://en.cppreference.com/w/cpp/compiler_support/20 I think it is likely everything will be buildable for a while under Clang 10 (released 3.5 years ago), GCC 11 (releaseed 3.5 years ago), and . Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Differential Revision: https://internalfb.com/D49261607 fbshipit-source-id: f6bd52448286bd2b4fc9f64c5a421eba89c9c99b
Summary: X-link: facebook/yoga#1382 Pull Request resolved: facebook#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. Accounting for bundled STL, and using `bit_cast` as a reference feature, I think this means we require one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) On mobile, the Clang 14 requirement translates to needing one of: 1. NDK 25 (~1 year old) 1. XCode 14.2.0 (~1 year old) https://en.cppreference.com/w/cpp/compiler_support/20 I think it is likely everything will be buildable for a while under Clang 10 (released 3.5 years ago), GCC 11 (releaseed 3.5 years ago), and . Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Differential Revision: https://internalfb.com/D49261607 fbshipit-source-id: c212923ddcf3ca6bfe0d8e7f0534f1e60618dc2d
Summary: X-link: facebook/yoga#1382 Pull Request resolved: facebook#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. Accounting for bundled STL, and using `bit_cast` as a reference feature, I think this means we require one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) On mobile, the Clang 14 requirement translates to needing one of: 1. NDK 25 (~1 year old) 1. XCode 14.2.0 (~1 year old) https://en.cppreference.com/w/cpp/compiler_support/20 I think it is likely everything will be buildable for a while under Clang 10 (released 3.5 years ago), GCC 11 (releaseed 3.5 years ago), and . Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Differential Revision: https://internalfb.com/D49261607 fbshipit-source-id: 883e00e99417bd1cc666d1419ebaaf1d063f9368
Summary: X-link: facebook/yoga#1382 Pull Request resolved: facebook#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. Accounting for bundled STL, and using `bit_cast` as a reference feature, I think this means we require one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) On mobile, the Clang 14 requirement translates to needing one of: 1. NDK 25 (~1 year old) 1. XCode 14.2.0 (~1 year old) https://en.cppreference.com/w/cpp/compiler_support/20 I think it is likely everything will be buildable for a while under Clang 10 (released 3.5 years ago), GCC 11 (releaseed 3.5 years ago), and . Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Differential Revision: https://internalfb.com/D49261607 fbshipit-source-id: 2f9fe1c4d68754fc4a61661a759f1960dd3e7d0d
Summary: X-link: facebook/yoga#1382 Pull Request resolved: facebook#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. Accounting for bundled STL, and using `bit_cast` as a reference feature, I think this means we require one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) On mobile, the Clang 14 requirement translates to needing one of: 1. NDK 25 (~1 year old) 1. XCode 14.2.0 (~1 year old) https://en.cppreference.com/w/cpp/compiler_support/20 I think it is likely everything will be buildable for a while under Clang 10 (released 3.5 years ago), GCC 11 (releaseed 3.5 years ago), and . Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Differential Revision: https://internalfb.com/D49261607 fbshipit-source-id: acca21d531a8b494de3cde1fe7dd33fd1fedb367
Summary: X-link: facebook/yoga#1382 Pull Request resolved: facebook#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. Accounting for bundled STL, and using `bit_cast` as a reference feature, I think this means we require one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) On mobile, the Clang 14 requirement translates to needing one of: 1. NDK 25 (~1 year old) 1. XCode 14.2.0 (~1 year old) https://en.cppreference.com/w/cpp/compiler_support/20 I think it is likely everything will be buildable for a while under Clang 10 (released 3.5 years ago), GCC 11 (releaseed 3.5 years ago), and . Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Differential Revision: https://internalfb.com/D49261607 fbshipit-source-id: 6d0fd2478e2dcf38f8b96a5fae6e1f4ae3bbd18b
Summary: X-link: facebook/yoga#1382 Pull Request resolved: facebook#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. Accounting for bundled STL, and using `bit_cast` as a reference feature, I think this means we require one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) On mobile, the Clang 14 requirement translates to needing one of: 1. NDK 25 (~1 year old) 1. XCode 14.2.0 (~1 year old) https://en.cppreference.com/w/cpp/compiler_support/20 I think it is likely everything will be buildable for a while under Clang 10 (released 3.5 years ago), GCC 11 (releaseed 3.5 years ago), and . Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Differential Revision: https://internalfb.com/D49261607 fbshipit-source-id: 222cb335809d269b8fb1ca7eab82ce5f9975ac12
Summary: X-link: facebook/yoga#1382 Pull Request resolved: facebook#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. Accounting for bundled STL, and using `bit_cast` as a reference feature, I think this means we require one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) On mobile, the Clang 14 requirement translates to needing one of: 1. NDK 25 (~1 year old) 1. XCode 14.2.0 (~1 year old) https://en.cppreference.com/w/cpp/compiler_support/20 I think it is likely everything will be buildable for a while under Clang 10 (released 3.5 years ago), GCC 11 (releaseed 3.5 years ago), and . Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Differential Revision: https://internalfb.com/D49261607 fbshipit-source-id: 7c12bfafc67c2c3506f81f37c11ba06352a6ea7e
Summary: Pull Request resolved: facebook#1382 X-link: facebook/react-native#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. Accounting for bundled STL, and using `bit_cast` as a reference feature, I think this means we require one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) On mobile, the Clang 14 requirement translates to needing one of: 1. NDK 25 (~1 year old) 1. XCode 14.2.0 (~1 year old) https://en.cppreference.com/w/cpp/compiler_support/20 I think it is likely everything will be buildable for a while under Clang 10 (released 3.5 years ago), GCC 11 (releaseed 3.5 years ago), and . Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Differential Revision: https://internalfb.com/D49261607 fbshipit-source-id: 7d7a2c135424b45460f0ebed3004cd63e02e9faf
Summary: Pull Request resolved: facebook#1382 X-link: facebook/react-native#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. Accounting for bundled STL, and using `bit_cast` as a reference feature, I think this means we require one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) On mobile, the Clang 14 requirement translates to needing one of: 1. NDK 25 (~1 year old) 1. XCode 14.2.0 (~1 year old) https://en.cppreference.com/w/cpp/compiler_support/20 I think it is likely everything will be buildable for a while under Clang 10 (released 3.5 years ago), GCC 11 (releaseed 3.5 years ago), and . Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Differential Revision: https://internalfb.com/D49261607 fbshipit-source-id: 088f57a1fddb7eed32964454c76ce85e00a663ab
This pull request was exported from Phabricator. Differential Revision: D49261607 |
Summary: Pull Request resolved: facebook#1382 X-link: facebook/react-native#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. If we wanted to use `std::bit_cast` we would need one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) For mobile this means: 1. NDK 26 (still in Beta 😭) 1. XCode 14.3.0 (~6 months old) https://en.cppreference.com/w/cpp/compiler_support/20 That isn't quite doable yet, but we can start taking advantage of language features in the meantime. More of these will be supported in older toolchains. Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Changelog: [Internal] Differential Revision: D49261607 fbshipit-source-id: 7536c41ad732fd397e3dfbc06e9c16c1d37fd52d
d7d7570
to
6ce0728
Compare
Summary: X-link: facebook/yoga#1382 Pull Request resolved: facebook#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. If we wanted to use `std::bit_cast` we would need one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) For mobile this means: 1. NDK 26 (still in Beta 😭) 1. XCode 14.3.0 (~6 months old) https://en.cppreference.com/w/cpp/compiler_support/20 That isn't quite doable yet, but we can start taking advantage of language features in the meantime. More of these will be supported in older toolchains. Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Changelog: [Internal] Differential Revision: D49261607 fbshipit-source-id: ace8d1d19b7dc4a356dad5657084e70f47d5acb2
Summary: X-link: facebook/yoga#1382 Pull Request resolved: facebook#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. Accounting for bundled STL, and using `bit_cast` as a reference feature, I think this means we require one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) On mobile, the Clang 14 requirement translates to needing one of: 1. NDK 25 (~1 year old) 1. XCode 14.2.0 (~1 year old) https://en.cppreference.com/w/cpp/compiler_support/20 I think it is likely everything will be buildable for a while under Clang 10 (released 3.5 years ago), GCC 11 (releaseed 3.5 years ago), and . Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Differential Revision: https://internalfb.com/D49261607 fbshipit-source-id: dd6edd368f98a30245341990771e98586e394c87
Summary: Pull Request resolved: facebook#1382 X-link: facebook/react-native#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. Accounting for bundled STL, and using `bit_cast` as a reference feature, I think this means we require one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) On mobile, the Clang 14 requirement translates to needing one of: 1. NDK 25 (~1 year old) 1. XCode 14.2.0 (~1 year old) https://en.cppreference.com/w/cpp/compiler_support/20 I think it is likely everything will be buildable for a while under Clang 10 (released 3.5 years ago), GCC 11 (releaseed 3.5 years ago), and . Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Differential Revision: https://internalfb.com/D49261607 fbshipit-source-id: 0c13ec08a0b5890124a0f8fce69bd9c8e538f415
Summary: X-link: facebook/yoga#1382 Pull Request resolved: facebook#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. Accounting for bundled STL, and using `bit_cast` as a reference feature, I think this means we require one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) On mobile, the Clang 14 requirement translates to needing one of: 1. NDK 25 (~1 year old) 1. XCode 14.2.0 (~1 year old) https://en.cppreference.com/w/cpp/compiler_support/20 I think it is likely everything will be buildable for a while under Clang 10 (released 3.5 years ago), GCC 11 (releaseed 3.5 years ago), and . Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Differential Revision: https://internalfb.com/D49261607 fbshipit-source-id: 57842ff4a0bb218bba78d0cadc4fb5269b414c57
Summary: X-link: facebook/yoga#1382 Pull Request resolved: facebook#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. Accounting for bundled STL, and using `bit_cast` as a reference feature, I think this means we require one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) On mobile, the Clang 14 requirement translates to needing one of: 1. NDK 25 (~1 year old) 1. XCode 14.2.0 (~1 year old) https://en.cppreference.com/w/cpp/compiler_support/20 I think it is likely everything will be buildable for a while under Clang 10 (released 3.5 years ago), GCC 11 (releaseed 3.5 years ago), and . Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Differential Revision: https://internalfb.com/D49261607 fbshipit-source-id: ad7927b8cdc5770522f9398e930a90e628d81927
This pull request was exported from Phabricator. Differential Revision: D49261607 |
Summary: X-link: facebook/yoga#1382 Pull Request resolved: facebook#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. Accounting for bundled STL, and using `bit_cast` as a reference feature, I think this means we require one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) On mobile, the Clang 14 requirement translates to needing one of: 1. NDK 25 (~1 year old) 1. XCode 14.2.0 (~1 year old) https://en.cppreference.com/w/cpp/compiler_support/20 I think it is likely everything will be buildable for a while under Clang 10 (released 3.5 years ago), GCC 11 (releaseed 3.5 years ago), and . Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Differential Revision: https://internalfb.com/D49261607 fbshipit-source-id: 5acb96845be5f7ced9235ca79b6732ed13e901cb
Summary: Pull Request resolved: facebook#1382 X-link: facebook/react-native#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. If we wanted to use `std::bit_cast` we would need one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) For mobile this means: 1. NDK 26 (still in Beta 😭) 1. XCode 14.3.0 (~6 months old) https://en.cppreference.com/w/cpp/compiler_support/20 That isn't quite doable yet, but we can start taking advantage of language features in the meantime. More of these will be supported in older toolchains. Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Changelog: [Internal] Differential Revision: https://www.internalfb.com/diff/D49261607?entry_point=27 fbshipit-source-id: 6daab45bff10a3331f9e02736a55a403f9ca63a1
This pull request was exported from Phabricator. Differential Revision: D49261607 |
Summary: Pull Request resolved: facebook#1382 X-link: facebook/react-native#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. If we wanted to use `std::bit_cast` we would need one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) For mobile this means: 1. NDK 26 (still in Beta 😭) 1. XCode 14.3.0 (~6 months old) https://en.cppreference.com/w/cpp/compiler_support/20 That isn't quite doable yet, but we can start taking advantage of language features in the meantime. More of these will be supported in older toolchains. Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Changelog: [Internal] Reviewed By: cortinico Differential Revision: D49261607 fbshipit-source-id: acb5d8122dfd6b9e6701d897cfad7ffed270f4ab
00b29f5
to
65e7730
Compare
This pull request was exported from Phabricator. Differential Revision: D49261607 |
Summary: Pull Request resolved: facebook#1382 X-link: facebook/react-native#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. If we wanted to use `std::bit_cast` we would need one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) For mobile this means: 1. NDK 26 (still in Beta 😭) 1. XCode 14.3.0 (~6 months old) https://en.cppreference.com/w/cpp/compiler_support/20 That isn't quite doable yet, but we can start taking advantage of language features in the meantime. More of these will be supported in older toolchains. Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Changelog: [Internal] Reviewed By: cortinico Differential Revision: D49261607 fbshipit-source-id: a00302dfe80040890c5a12cd45d520a54ab6eb44
65e7730
to
da74de3
Compare
This pull request was exported from Phabricator. Differential Revision: D49261607 |
Summary: Pull Request resolved: facebook#1382 X-link: facebook/react-native#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. If we wanted to use `std::bit_cast` we would need one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) For mobile this means: 1. NDK 26 (still in Beta 😭) 1. XCode 14.3.0 (~6 months old) https://en.cppreference.com/w/cpp/compiler_support/20 That isn't quite doable yet, but we can start taking advantage of language features in the meantime. More of these will be supported in older toolchains. Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Changelog: [Internal] Reviewed By: cortinico Differential Revision: D49261607 fbshipit-source-id: eb877710264df13863d7244c10c71b89e9d0185f
da74de3
to
90bdaab
Compare
This pull request was exported from Phabricator. Differential Revision: D49261607 |
Summary: Pull Request resolved: facebook#1382 X-link: facebook/react-native#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. If we wanted to use `std::bit_cast` we would need one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) For mobile this means: 1. NDK 26 (still in Beta 😭) 1. XCode 14.3.0 (~6 months old) https://en.cppreference.com/w/cpp/compiler_support/20 That isn't quite doable yet, but we can start taking advantage of language features in the meantime. More of these will be supported in older toolchains. Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Changelog: [Internal] Reviewed By: cortinico Differential Revision: D49261607 fbshipit-source-id: cf0dbe92edb9886f39daeaf81158c940640bd542
90bdaab
to
fe0a00e
Compare
This pull request was exported from Phabricator. Differential Revision: D49261607 |
Summary: Pull Request resolved: facebook#1382 X-link: facebook/react-native#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. If we wanted to use `std::bit_cast` we would need one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) For mobile this means: 1. NDK 26 (still in Beta 😭) 1. XCode 14.3.0 (~6 months old) https://en.cppreference.com/w/cpp/compiler_support/20 That isn't quite doable yet, but we can start taking advantage of language features in the meantime. More of these will be supported in older toolchains. Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Changelog: [Internal] Reviewed By: cortinico Differential Revision: D49261607 fbshipit-source-id: db0d8ce113fe3c0411eb813d29de0decfa3bad45
fe0a00e
to
321ed72
Compare
Summary: Pull Request resolved: facebook#1382 X-link: facebook/react-native#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. If we wanted to use `std::bit_cast` we would need one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) For mobile this means: 1. NDK 26 (still in Beta 😭) 1. XCode 14.3.0 (~6 months old) https://en.cppreference.com/w/cpp/compiler_support/20 That isn't quite doable yet, but we can start taking advantage of language features in the meantime. More of these will be supported in older toolchains. Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Changelog: [Internal] Differential Revision: https://www.internalfb.com/diff/D49261607?entry_point=27 fbshipit-source-id: 861cf8850f5d10794fc0db33cdd1307fbb3852b3
This pull request was exported from Phabricator. Differential Revision: D49261607 |
Summary: Pull Request resolved: facebook#1382 X-link: facebook/react-native#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. If we wanted to use `std::bit_cast` we would need one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) For mobile this means: 1. NDK 26 (still in Beta 😭) 1. XCode 14.3.0 (~6 months old) https://en.cppreference.com/w/cpp/compiler_support/20 That isn't quite doable yet, but we can start taking advantage of language features in the meantime. More of these will be supported in older toolchains. Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. Changelog: [Internal] Reviewed By: cortinico Differential Revision: D49261607 fbshipit-source-id: 1dc1d58005074d7355c4ae03669e75f7832e1efd
321ed72
to
656329d
Compare
Summary: Pull Request resolved: facebook#1382 X-link: facebook/react-native#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. If we wanted to use `std::bit_cast` we would need one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) For mobile this means: 1. NDK 26 (still in Beta 😭) 1. XCode 14.3.0 (~6 months old) https://en.cppreference.com/w/cpp/compiler_support/20 That isn't quite doable yet, but we can start taking advantage of language features in the meantime. More of these will be supported in older toolchains. Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. bypass-github-export-checks Changelog: [Internal] Differential Revision: https://internalfb.com/D49261607 fbshipit-source-id: 660e510e884c89c0b12e5432dbb19bbb968928b4
Summary: Pull Request resolved: facebook#1382 X-link: facebook/react-native#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. If we wanted to use `std::bit_cast` we would need one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) For mobile this means: 1. NDK 26 (still in Beta 😭) 1. XCode 14.3.0 (~6 months old) https://en.cppreference.com/w/cpp/compiler_support/20 That isn't quite doable yet, but we can start taking advantage of language features in the meantime. More of these will be supported in older toolchains. Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. bypass-github-export-checks Changelog: [Internal] Reviewed By: cortinico Differential Revision: D49261607 fbshipit-source-id: 38301204d56b7bc8410c2dda9c291da1b8d61ec1
This pull request was exported from Phabricator. Differential Revision: D49261607 |
656329d
to
e5a4003
Compare
This pull request has been merged in 557d2a7. |
Summary: X-link: facebook/yoga#1382 Pull Request resolved: #39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. If we wanted to use `std::bit_cast` we would need one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) For mobile this means: 1. NDK 26 (still in Beta 😭) 1. XCode 14.3.0 (~6 months old) https://en.cppreference.com/w/cpp/compiler_support/20 That isn't quite doable yet, but we can start taking advantage of language features in the meantime. More of these will be supported in older toolchains. Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. bypass-github-export-checks Changelog: [Internal] Reviewed By: cortinico Differential Revision: D49261607 fbshipit-source-id: ceb06eac20dfe93352d7b796d6847a7314069cf3
Summary: X-link: facebook/yoga#1382 X-link: facebook/react-native#39437 Have been running into places where C++ 20 makes life easier for use like `std::bit_cast` (that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more. Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues. This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2. If we wanted to use `std::bit_cast` we would need one of: 1. GCC 11+ (~2.5 years old) 1. Clang 14 (~2.5 years old) 1. VS 16.11 (~2 years old) For mobile this means: 1. NDK 26 (still in Beta 😭) 1. XCode 14.3.0 (~6 months old) https://en.cppreference.com/w/cpp/compiler_support/20 That isn't quite doable yet, but we can start taking advantage of language features in the meantime. More of these will be supported in older toolchains. Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14. bypass-github-export-checks Changelog: [Internal] Reviewed By: cortinico Differential Revision: D49261607 fbshipit-source-id: ceb06eac20dfe93352d7b796d6847a7314069cf3
Summary:
X-link: facebook/react-native#39437
Have been running into places where C++ 20 makes life easier for use like
std::bit_cast
(that one is easy to polyfill), in-class member initializer support for bitfields, designated initializers, defaulted comparison operator, concepts instead of SFINAE, and probably more.Our other infra is in the process of making this jump, or already has. This tests it out everywhere, across the various reference builds, to see if we have any issues.
This is a bit more aggressive than I had previously communicated, but n - 1 is going to be a better long term place than n - 2.
If we wanted to use
std::bit_cast
we would need one of:For mobile this means:
https://en.cppreference.com/w/cpp/compiler_support/20
That isn't quite doable yet, but we can start taking advantage of language features in the meantime. More of these will be supported in older toolchains.
Anyone needing support for older C++ versions can lag behind on more recent changes. E.g. Yoga 2.0 supports C++ 14.
Differential Revision: D49261607