Replies: 4 comments 3 replies
-
cc: @pedroerp , @majetideepak , @aditi-pandit , @wanweiqiangintel , @mbasmanova , @assignUser |
Beta Was this translation helpful? Give feedback.
-
+1 on using clang for the *san builds. Could you clarify what job you want to move to clang/add? |
Beta Was this translation helpful? Give feedback.
-
+1 as long as
The GCC build scope should include tests and benchmarks as well. |
Beta Was this translation helpful? Give feedback.
-
+1. I remember trying this locally in the past but bumping into something weird inside folly. Thanks for digging into the root cause. Out of curiosity, do we have a sense of how clang and gcc build times compare for Velox? |
Beta Was this translation helpful? Give feedback.
-
Hi Velox Community,
I am hoping to gather feedback on potential concerns , problems you might have if we migrate our builds and tests to use Clang instead of GCC on linux machines as it is now.
Why ?
This is so that we can have better reliability by enabling Address, Memory, Thread and Undefined behaviour sanitizers.
The advantages of adding sanitizers that is that :
Why move to Clang
Currently Velox depends on Folly which unfortunately at the moment doesnt work that well with GCC Sanitizers. This is mostly because implementations of sanitizers in LLVM were ahead of implementations in GCC (This is true at least as of GCC 12). For example folly has perfectly sensible cases of atomic-compare-exchange operations with success-relaxed and failure-acquire memory orders, including in Baton and SaturatingSemaphore. But such pairs of memory orders are not permitted until C++17 and are permitted since C++17. But various implementations have not yet caught up, including the gcc sanitizers.
Next Steps
Should there be no major concerns, I propose to setup another CCI build which uses clang as the compiler for tests and fuzzer runs and then we only have GCC builds to ensure we maintain compatibility.
Beta Was this translation helpful? Give feedback.
All reactions