On 8/12/22 09:39, kefu chai wrote:
hi Mark,
On Thu, Aug 11, 2022 at 3:06 AM Mark Nelson <mnelson@xxxxxxxxxx> wrote:
Hi Kefu,
Thank you for providing the links! In the future, I think we should
pick target compiler versions at the beginning of a release cycle, set
the CI/CD to use them, then update our documentation and build checks to
make sure that it's being used even before we need it. Right now we are
sort of in this weird state where we adopted c++20, but there does not
appear to be working cmake checks for the compiler version and at least
on centos, install-deps.sh doesn't appear to do the right thing. This
results in build failures that are difficult to diagnose if you don't
know what to look for (ie that '<=>' isn't one of the supported features
in gcc8 despite gcc8 supporting most of the C++20 feature set).
It's really disruptive when main breaks without a clear indication of
what's going on. I'm all for c++20. There are a lot of useful
features! I would very much appreciate it if we could just make some
tweaks to the process so that we aren't making decisions about distros /
compilers / major dependencies half way through the release cycle.
thanks for your insights and suggestions. sorry again. i tried my best anyway.
Yes, and thank you very much for the hard work! I know it's really
difficult to keep everything working right with these kinds of
project-wide changes. Over the last couple of years the build has
become more and more complex and breakage is becoming a more common
problem (I'm sorry if I was too harsh here, I've been frustrated with
build breakage for a while now). I think we are going to have to be
more disciplined than we used to be about how we plan dependencies if we
want to stick with the monorepo design. I'm afraid it's going to get
even worse if we don't figure out how to tackle it now.
Mark
Thanks,
Mark
On 8/10/22 07:34, kefu chai wrote:
hi folks,
as you might have already noticed, we've made the switch to C++20. see
Casey's mail sent to this mailing list a couple days ago.
another thing you need to pay attention to is, we now need to use at
least gcc-11 or clang-12 for compiling the tree.
if your working flows depend on the stock C++ compiler in your distro,
you might need to check the version to make sure that its C++20
support. see also
https://en.cppreference.com/w/cpp/compiler_support#cpp20 . for
instance, if you are using ubuntu focal, you could use the ppa repo at
https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test or
prebuilt clang-12 or up at https://apt.llvm.org. if you are using
centos/RHEL 8, you might want to use gcc-toolset-11 or gcc-toolset-12
or llvm-toolset-12 .
apparently, we are not using all the C++20 features, but we are
starting exploring some of them. as some of us have noticed, we have
started using https://wg21.link/P1185R2 in the main branch. because we
are now using both gcc-11 and clang-12 in our CI/CD workflows, we can
assure you that these two compilers should be able to compile the main
branch.
i apologise for any inconvenience caused.
cheers,
_______________________________________________
Dev mailing list -- dev@xxxxxxx
To unsubscribe send an email to dev-leave@xxxxxxx
_______________________________________________
Dev mailing list -- dev@xxxxxxx
To unsubscribe send an email to dev-leave@xxxxxxx