art series 2.11

Previous series release notes
Next series release notes (art 3)
Next legacy series release notes (art 2)

New art suite package

The hep_concurrency package is now a UPS dependency, brought in by doing a UPS setup of art. The hep_concurrency package provides multi-threading utilities for concurrent processing of events in the art framework. Although concurrent processing of events is not supported by this version of art, the utilities provided by hep_concurrency are used in this suite, and they will be used extensively in art 3.00.00.

 New features

Simplifications to messagefacility configuration

The messagefacility configuration has been simplified for enabling debug messages. For more details, see the breaking changes.

Bash completions for art-provided executables

For users with Bash environments, setting up art via UPS will automatically enable bash completions for most of the art-provided executables. Providing this facility makes the specification of command-line options less cumbersome. In addition, anyone using cetbuildtools will be able to automatically generate bash completions for their own executables suing the cet_make_completions CMake function. The completions are basic--only a few of the command-line program options have more sophisticated completions usage:

art --print-description E<TAB>  # completes to any plugins that begin with 'E'
art --print-available <TAB>     # shows the allowed values for the argument to '--print-available'

--nthreads program option

In anticipation of art 3.00.00, we have provided the --nthreads program option. When used, this program option initializes the TBB scheduler with the number of threads equal to the value you provide. Note that if you do not use any TBB algorithms in your code, multiple threads will not be created. If --nthreads is not specified, the TBB scheduler is initialized with 1 thread. The FHiCL parameter services.scheduler.num_threads is now inserted into all art configurations.

Configuration validation/description for ResultsProducers

Configuration description and validation is now available for classes that inherit from art::ResultsProducer. Please see the documentation for information.

Other improvements

In addition to the features described above, other enhancements have been added, including:

  • Safer access when dereferencing art::Ptr<T>s (resolves issue #18849)
  • A facility to retrieve an art::InputTag given an art::ProductID (resolves issue #18979)
  • The ability to write to /dev/null via RootOutput (resolves issue #19009)

 Compiler support

e17 qualifier

The e17 qualifier is available, which uses GCC 7.3 with the C++17 standard enabled. Although the underlying art infrastructure does not yet use any C++17 features, it has been compiled with the -std=c++17 compiler flag, and users are able to use any C++17 features supported by GCC 7.3.

 Breaking changes

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

  art releases