Migrating large codebases to C++ Modules

06/12/2019
by   Yuka Takahashi, et al.
0

ROOT has several features which interact with libraries and require implicit header inclusion. This can be triggered by reading or writing data on disk, or user actions at the prompt. Often, the headers are immutable, and reparsing is redundant. C++ Modules are designed to minimize the reparsing of the same header content by providing an efficient on-disk representation of C++ Code. ROOT has released a C++ Modules-aware technology preview which intends to become the default for the next release. In this paper, we will summarize our experience with migrating C++ Modules to LHC experiment's software code bases. We outline the challenges in C++ Modules migration of the CMS software, including the integration of C++ Modules support in CMS build system. We also evaluate the performance benefits that experiments are expected to achieve.

READ FULL TEXT
research
04/11/2020

C++ Modules in ROOT and Beyond

C++ Modules come in C++20 to fix the long-standing build scalability pro...
research
12/10/2018

Optimizing Frameworks Performance Using C++ Modules Aware ROOT

ROOT is a core HEP framework which is used broadly in and outside HEP. A...
research
04/30/2023

Drinfeld modules in SageMath

We present the first implementation of Drinfeld modules fully integrated...
research
12/07/2018

Continuous Performance Benchmarking Framework for ROOT

Foundational software libraries such as ROOT are under intense pressure ...
research
12/07/2018

Extending ROOT through Modules

The ROOT software framework is foundational for the HEP ecosystem, provi...
research
06/11/2019

Evolution of ROOT package management

ROOT is a large code base with a complex set of build-time dependencies;...
research
07/17/2023

regulAS: A Bioinformatics Tool for the Integrative Analysis of Alternative Splicing Regulome using RNA-Seq data

The regulAS software package is a bioinformatics tool designed to suppor...

Please sign up or login with your details

Forgot password? Click here to reset