-
Notifications
You must be signed in to change notification settings - Fork 6.2k
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
Dropping some compiler support in 7.0 #9388
Comments
Summary: Drop support for some old compilers by requiring C++17 standard (or higher). See facebook#9388 Test Plan: CI config updated TODO: finish sanitizing CircleCI config
Hi @pdillinger I see that GCC 5 was the first to offer C++ 17 features, however if I understand your message above, I think you are saying that GCC 7.0.0 will be considered the minimum compiler required for RocksDB? Is that correct? At the moment for RocksJava we are using the below compilers for the binary releases. I don't see an issue with getting a newer compiler for CentOS 7 through SCL or similar. However, I will need to look around to find something suitable for CentOS Linux x86 (i.e. 32 bit). I will come back to you shortly with information about what I can do to get these updated for C++ 17 support too
|
I was working from this: https://gcc.gnu.org/projects/cxx-status.html A good number of features require GCC 7, and at a minimum 'constexpr if' is one I foresee using.
Thanks for the update! |
@pdillinger For RocksJava I have now upgraded the following:
I will do the Windows Cloud VM in the next day or so... |
Summary: Drop support for some old compilers by requiring C++17 standard (or higher). See #9388 First modification based on this is to remove some conditional compilation in slice.h (also better for ODR) Also in this PR: * Fix some Makefile formatting that seems to affect ASSERT_STATUS_CHECKED config in some cases * Add c_test to NON_PARALLEL_TEST in Makefile * Fix a clang-analyze reported "potential leak" in lru_cache_test * Better "compatibility" definition of DEFINE_uint32 for old versions of gflags * Fix a linking problem with shared libraries in Makefile (`./random_test: error while loading shared libraries: librocksdb.so.6.29: cannot open shared object file: No such file or directory`) * Always set ROCKSDB_SUPPORT_THREAD_LOCAL and use thread_local (from C++11) * TODO in later PR: clean up that obsolete flag * Fix a cosmetic typo in c.h (#9488) Pull Request resolved: #9481 Test Plan: CircleCI config substantially updated. * Upgrade to latest Ubuntu images for each release * Generally prefer Ubuntu 20, but keep a couple Ubuntu 16 builds with oldest supported compilers, to ensure compatibility * Remove .circleci/cat_ignore_eagain except for Ubuntu 16 builds, because this is to work around a kernel bug that should not affect anything but Ubuntu 16. * Remove designated gcc-9 build, because the default linux build now uses GCC 9 from Ubuntu 20. * Add some `apt-key add` to fix some apt "couldn't be verified" errors * Generally drop SKIP_LINK=1; work-around no longer needed * Generally `add-apt-repository` before `apt-get update` as manual testing indicated the reverse might not work. Travis: * Use gcc-7 by default (remove specific gcc-7 and gcc-4.8 builds) * TODO in later PR: fix s390x "Assembler messages: Error: invalid switch -march=z14" failure AppVeyor: * Completely dropped because we are dropping VS2015 support and CircleCI covers VS >= 2017 Also local testing with old gflags (out of necessity when using ROCKSDB_NO_FBCODE=1). Reviewed By: mrambacher Differential Revision: D33946377 Pulled By: pdillinger fbshipit-source-id: ae077c823905b45370a26c0103ada119459da6c1
Summary: Due to some unexplained errors with gcc-7 ``` Assembler messages: Error: invalid switch -march=z14 Error: unrecognized option -march=z14 ``` Relevant to #9388 Pull Request resolved: #9512 Test Plan: CI Reviewed By: hx235 Differential Revision: D34044989 Pulled By: pdillinger fbshipit-source-id: a5406e8f30b2b187949f75c8cee4e2a0eb976670
Summary: See #9388 (comment) Pull Request resolved: #9500 Reviewed By: pdillinger Differential Revision: D34114687 Pulled By: jay-zhuang fbshipit-source-id: 22129d99ccd0dba7e8f1b263ddc5520d939641bf
@pdillinger, @adamretter I started looking at the s390x assembler error reported in #9512. What's happening is that the travis build machine is a z14 model (the cpu generation) running ubuntu 16.04. The The easiest fix for s390x would be to update the travis builds to ubuntu 18.04 which has 16.04 is out of standard support now and I don't think the assembler would ever be updated to a newer version so I would have to find a way of updating the assembler as part of the s390x build. I can work on a PR to update the build to a 18.04 environment but wanted to check if 16.04 was still required for any reason or if 20.04 would be preferred. |
Actually, I found a fix for the s390x build on 16.04. I had put a check in build_tools/build_detect_platform to check if I've run into problems with |
Planned minimum compiler support for RocksDB 7.0 (based on "Stop Supporting Older GCC versions" in https://www.facebook.com/groups/rocksdb.dev/):
C++17 standard (from C++11)
GCC 7.x (from 4.8.x)
Visual Studio 2017 (from 2015)
Clang 5 (from 3.3?)
Please let us know in comments here if you have concerns
The text was updated successfully, but these errors were encountered: