Extending ROOT through Modules

12/07/2018
by   Oksana Shadura, et al.
0

The ROOT software framework is foundational for the HEP ecosystem, providing capabilities such as IO, a C++ interpreter, GUI, and math libraries. It uses object-oriented concepts and build-time components to layer between them. We believe additional layering formalisms will benefit ROOT and its users. We present the modularization strategy for ROOT which aims to formalize the description of existing source components, making available the dependencies and other metadata externally from the build system, and allow post-install additions of functionality in the runtime environment. components can then be grouped into packages, installable from external repositories to deliver post-install step of missing packages. This provides a mechanism for the wider software ecosystem to interact with a minimalistic install. Reducing intra-component dependencies improves maintainability and code hygiene. We believe helping maintain the smallest "base install" possible will help embedding use cases. The modularization effort draws inspiration from the Java, Python, and Swift ecosystems. Keeping aligned with the modern C++, this strategy relies on forthcoming features such as C++ modules. We hope formalizing the component layer will provide simpler ROOT installs, improve extensibility, and decrease the complexity of embedding in other ecosystems

READ FULL TEXT
research
06/11/2019

Evolution of ROOT package management

ROOT is a large code base with a complex set of build-time dependencies;...
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
06/12/2019

Migrating large codebases to C++ Modules

ROOT has several features which interact with libraries and require impl...
research
08/24/2023

npm-follower: A Complete Dataset Tracking the NPM Ecosystem

Software developers typically rely upon a large network of dependencies ...
research
04/30/2023

Drinfeld modules in SageMath

We present the first implementation of Drinfeld modules fully integrated...
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
06/11/2019

ROOT I/O compression algorithms and their performance impact within Run 3

The LHCs Run3 will push the envelope on data-intensive workflows and, si...

Please sign up or login with your details

Forgot password? Click here to reset