cmu-db / noisepage

Self-Driving Database Management System from Carnegie Mellon University
https://noise.page
MIT License
1.75k stars 502 forks source link

Toolchain Updates (primarily LLVM?) #879

Open mbutrovich opened 4 years ago

mbutrovich commented 4 years ago

We won't want to start moving on this for a couple more weeks, but this is an issue to track and discuss toolchain updates that we may want to explore this summer.

Feel free to suggest more or raise concerns with the existing items. When we're convinced of the list, we should make an overall project with issues for each item in the list to spread out the tasks and track progress.

mbutrovich commented 4 years ago

Just to add to this, we need to update both spdlog and the json library to get compilation working with newer releases of Clang. Since they're header only, their warnings/compilation errors become inherited by us and we can't compile on, for example, Clang 10.

crd477 commented 4 years ago

I'm sorry it's taken me so long to get back around to writing this up but I've got a branch with the start of support for Ubuntu 20.04 in CI: https://github.com/crd477/terrier/tree/focal a couple runs of it can be seen here: http://jenkins.db.cs.cmu.edu:8080/blue/organizations/jenkins/crd%2Fterrier-crd/activity?branch=focal

Currently, it still uses clang-8 and the doxygen check stage is faked out due to lots of new warnings with the newer version of doxygen. Possibly the most useful contribution related to this though is the addition of a terrier:focal docker image on the CI machines. Even if you didn't want to use any changes from my branch, you can still start trying out Ubuntu 20.04 in CI stages by specifying that image name in your Jenkinsfile (i.e., you'd use this in place of image 'ubuntu:bionic' in the current Jenkinsfile).

If you think there's any value in what's here already, let me know and I'll submit a PR. The docker images that are installed on the Jenkins workers will remain in either case.

gonzalezjo commented 4 years ago

Just leaving this as a note here since it's relevant, and it might be worth revisiting after this.

With the LLVM toolchain bump from moving to focal, we get a newer clang-tidy. This is nice because the codebase has a bunch of NOLINTs that were added to deal with clang-tidy-8 false positives. (They might all be from if constexprs but I'm not sure)

When we're done with this, it would be good to go back and revisit any decisions or code issues related to toolchain versions, and see if stuff can get cleaned up. I volunteer for the clang-tidy-8 stuff since it has affected some of my code.

gonzalezjo commented 4 years ago

So I've created #1192 to let us check off that last box. #1192 addresses the spdlog and json issues, among some others.

Regarding the first checkbox, "bump GCC support to 9.3," is there any reason we don't just bump to gcc-10? After #1192 is merged, we support both. Likewise, once we bump to Ubuntu 20.04 LTS, we'll also have support for both compilers at a package management level. Seems like there's no cost to using g++-10 now, while there might be a cost of moving to it in the future.

lmwnshn commented 4 years ago

Ubuntu, bumped. (thanks @crd477 @mbutrovich @gonzalezjo !) Third party, nuked.

Left with LLVM toolchain updates, I think? LLVM 10? LLVM 11?