art series 2.10

Previous series release notes
Next series release notes

 New features

Producing services

art now provides services that can insert products into an event, subrun, or run in a context that is guaranteed to be thread-safe. This facility has been introduced to allow information from external databases to be accessed in a thread-safe manner. See here for more information.

Non-persistable products

Products can now be declared that are intended to be in-memory only. This is done by providing a second argument to the 'produces' function template:

produces<MyProduct>("myInstance", art::Persistable::No);

Non-persistable products do not participate in the 'keep' and 'drop' commands for output modules. Please see here for more information. Resolves feature #18058.

File-switching for TFileService

File-switching has been implemented for TFileService, providing similar functionality to that available for RootOutput modules. For more information please consult the documentation. Resolves feature #18058.

Other features

  • The --validate-config program option has been introduced to run full configuration validation, where possible, on an input file. Using this option fully constructs all configured plugins and then shuts the program down. If a valid configuration has been presented by the user, the post-processed configuration is written to a user-specified output file. Resolves feature #17716.
  • The output file-renaming facilities have been made more user-friendly when file-switching has been enabled (resolves feature #18319).
  • Additional minor enhancements.

 Platform/compiler support and library changes


The art 2.10 series is the first set of releases to support a non-native Clang compiler. The c2 qualifier has been introduced to allow users to specify Clang 5.0.1 as the C++ compiler, with the -std=c++17 flag enabled. Although none of the art packages use C++17 features, the user is allowed to use them when building against a c2-qualified build of art. Please see here for more information about primary qualifiers. Resolves feature #8011.

macOS support

There are several significant changes for Apple Mac support:

  • Because art now supports Clang, the art 2.10 series is the first to support macOS High Sierra (SIP disabled) through the c2 qualifier.
  • Starting with art 2.10.00, there will no longer be any GCC-built distributions of the art suite for Macs.
  • art 2.10.00 marks a return to the policy of supporting the current Apple Mac operating system and one previous. There will therefore no longer be any more El Capitan builds of the art suite.

GCC 6.3 discontinued

The e14 qualifier has been removed in favor of e15 (GCC 6.4).

Removal of the nu qualifier

The muon experiments at Fermilab have agreed to subsume the extra library dependencies that have been introduced by the nu-qualified builds of ROOT in the past. For that reason, the nu qualifier is no longer necessary and has been removed; there will be only one build of ROOT. See the art 2.10.00 release notes below to see the changes in external-product dependencies.

 Breaking changes

Please consult the list of breaking changes to determine if/how your code should be modified.

  art releases