Biweekly meeting: C++ Modules in ROOT
Attendance: Axel, Guilherme, Oksana, Vassil
Axel: Sergei's PR could be seen as an improvement to going for -I to concrete source folders and not the $ROOTSYS/include. Would that be problematic to modules.
[Answer: we currently do not see any issues with that. Maybe we will need to patch the ASTReader but that's not major].
Guilherme: What happens if I install ROOT and update my system. Currently it triggers an assertion that some pcm file is out of date. Some changes may be ABI safe and this assert/diagnostic will be a false positive. This might be problematic for some systems such as Gentoo.
[Answer: if we see major usability issues we may disable the diagnostic. In short term, we can provide a env variable to turn that off at the risk of the user.].
Oksana: We got a report from Pere that on dev4, root.exe built with cuda fails to find the cuda.pcm. I spent time working on this. I have enabled 35 more modules for cmssw and let's hope the tomorrow IB is green. There is issue with boost that we have not yet managed to build a module.
Vassil: Mostly busy with writing the CHEP papers on modules and clad. During the last two weeks I worked on three items:
- Debugging why the boost module is not built by cmssw -- the patch to cling is fine, the modulemap is found and correctly mounted. Since, rootcling is not building modules on demand anymore we need to inject a call to `LoadModule("boost") somewhere when starting up rootcling for a dictionary that requires boost. That cannot be hard-coded but we should be thinking on inventing a new flag or alternatively, try to load the module if there is a -Iboost located.
- Performance stats for modules -- thanks to Alexander we have a trusted measurement numbers for ROOT preloading all modules, PCH, GMI, and smart GMI. See the gdoc for more details. In any way, we are making progress in understanding what's going on. In the meanwhile Richard replied to my performance-related email with some hints which we are about to try.
- Upgrading LLVM -- Currently I am working on upgrading LLVM from 5.0 to 9.0. Things are going well, except for the yet another reimplementation of the JIT. One of the biggest issues is the llvm::Module ownership which is taken over by the LazyCompilationLayer and the cling::Transaction is left with a dangling pointer. This blocks all cling getSymbol* interfaces. I can currently build cling standalone but most of the tests fail (presumably due to this reason).
Priorities: Fixing the cuda.pcm issue
AOB: Next meeting in two weeks.