Time for C++20.
Vernon Mauery
vernon.mauery at linux.intel.com
Thu Apr 15 09:13:13 AEST 2021
On 14-Apr-2021 02:12 PM, Bills, Jason M wrote:
>
>
>On 4/14/2021 1:11 PM, Patrick Williams wrote:
>>Hello.
>>
>>Per [1], as a project we've generally committed to using the latest C++
>>standard. C++20 was released in early Sept. 2020 and already had pretty
>>decent compiler support at the time it was released. We're currently
>>using GCC10 and according to [2] it has support for nearly every C++20
>>feature I could see us regularly wanting to use(*). It seems like it
>>is a reasonable time for us to move on to it.
>>
>>* - Except I recall seeing some mention of std::source_location being
>> useful to fix some of the issues with phosphor-logging, but that
>> won't be available until GCC11.
I am excited for this... always having the logging header file's
location reported is less than useful.
>>In general the C++ standard is backwards compatible. This shouldn't
>>have any impact if you are writing C++17-only code. What it allows us
>>to do is to start using features out of C++20 like the spaceship
>>operator and ranges.
>>
>>I've put up some commits to start this process. So far the only hiccup
>>I've ran into is that you need Meson 0.57.0 or higher in order for it to
>>recognize the 'cpp_std=c++20' option. I am adding code to our unit-test
>>framework to ensure you have this specified in your `meson.build` if you
>>are requesting C++20.
>>
>> - https://gerrit.openbmc-project.xyz/c/openbmc/openbmc-build-scripts/+/42252
>> * Adds some checking to ensure you've specified a meson_version
>> in your meson.build that can handle C++20.
>>
>> - https://gerrit.openbmc-project.xyz/c/openbmc/docs/+/42255
>> * Update C++ style doc from C++17 to C++20.
>>
>> - https://gerrit.openbmc-project.xyz/c/openbmc/sdbusplus/+/42256
>> * Update sdbusplus to use C++20.
>>
>>Please let me know if you have any concerns with this upgrade; I'll be
>>surprised if this not a fairly low-contention move.
>+1
>
>I just discovered starts_with() will be available for std::string
>which I want to use. I turned it on locally and didn't have any
>issues.
>
>coroutines are also an interesting possibility for some of our async calls.
The c++ coroutines are implemented differently than the boost::asio
stuff that ipmid is currently using. It will require some rewriting. But
I would prefer to move on to the standard than using an older
implementation from boost.
--Vernon
More information about the openbmc
mailing list