Biweekly meeting: C++ Modules in ROOT

Europe/Zurich
Oksana Shadura (University of Nebraska Lincoln (US)), Vasil Georgiev Vasilev (Institute for Advanced Physical Studies (BG))

Attendance: Arpitha, Oksana, Yuka, Vassil, Guilherme, Axel, Mircho (late).

Oksana: Helped Shahzad to rebase to recent changes. Shahzad managed to modularize 115 libraries of CMSSW.

Yuka: Helping Arpitha and Shahzad. Shahzad wants to split a modulemap per library. This way they can make C++ modules distributable. We can enable the extensive modulemap search in subdirectories in rootcling. This may fix some of the issues for them. Shahzad's preparing the area for their summer student who will likely work on the boost modulemap.

Axel: I am worried if we traversing too many folders (in particular cvmfs). Vassil: we should link extern module in the outer modulemap.

Arpitha: Made progress understanding the initial global module index implementation (slides here: https://docs.google.com/presentation/d/1rRKZCQUQaTgeWzC6tfJa3ygofeys7MrooY3WXM2-qoA/edit).

Yuka: Arpitha, could you start looking this week at the test failures for the global module index.

Vassil: I've been busy landing some of the longstanding PRs. Now we are less dependent on rootmap files. We saw small memory footprint improvement, however, the Haswell benchmarking machine seems to fluctuate. Oksana is investigating. I am working on teaching ACLiC to support modules and also embedding the rdict files as extensions to the C++ module files. For the latter I need the change in the TMemFile (PR3891) where we can say that a (mmap-ed) blob in memory is a ROOT file.

Mircho: Shahzad worked for a modulemap per package as we discussed. He hit a problem in boost, we should modularize boost. He fixed a package checkout part (where there is a duplicate for the release and development) to remove the modulemap duplication.

Vassil: We just discussed an approach where we have a global modulemap file which forwards to dedicated modulemap with syntax like: https://github.com/llvm-mirror/clang/blob/master/test/Modules/Inputs/modular_maps/modulea-cwd.map#L6 Essentially, the idea is to declare all modules 'external' and specify the defining modulemap file. Eg: extern module "FWCore" "./FWCore/interfaces/module.modulemap"

There are minutes attached to this event. Show them.
    • 14:00 14:30
      Updates 30m
      Speakers: Oksana Shadura (University of Nebraska Lincoln (US)), Vasil Georgiev Vasilev (Institute for Advanced Physical Studies (BG))
    • 14:30 15:00
      Round table 30m