ROOT 6 support and technology previews of enhanced usability features
Art Suite Release Notes 1.18.00 (2015/10/27).¶
- Previous version's release notes.
External package changes.¶
- ROOT v5_34_32 -> v6_04_06.
- We would characterize this release as a, "technology proving" release. We would not recommend an immediate move to using this release for production, but we do need experiments to start working with this release to help us identify any problems that might be a function of the particular way they operate.
cpp0xpackage has been retired. Going forward, any compiler used will be assumed by art to be fully compliant with the standard(s) used, to within the features we rely upon.
- This release is the first one featuring ROOT 6. Apart from this, 1.18.00 is feature-identical with 1.17.03.
- For experiments with a cetbuildtools / MRB-based build system, cetbuildtools >= 4.17.00 is required going forward for all packages built against art >= 1.18.00.
- For experiments with other build systems, there are some important changes to how "dictionaries" and related files required by ROOT 6 are generated relative to those for ROOT 5, and your build system will need to incorporate these changes:
genreflexis still the appropriate tool for generating introspection information, despite the misleading name. Recommended invocation:
genreflex <path>/classes.h -s <path>/classes_def.xml -I... \ --fail_on_warnings -l <libdir>/libXXX_dict.<shared-lib-suffix> \ --rootmap-lib=libXXX_dict.<shared-lib-suffix> --root-map=<libdir>libXXX_dict.rootmap
genreflexwill also produce a file
<libdir>/libXXX_dict_rdict.pcm.Other options previously recommended for use such as
--gccxmlopt. The slate of
-Ddefinitions previously recommended are also no longer required.
- If you wish to take advantage of the art-provided
checkClassVersiontool for maintaining and updating class versions and checksums in selection XML files, you should ensure that no checkClassVersion invocation occurs until all dictionary shared libraries have been built, otherwise in a parallel build it is possible that
pyROOTwill attempt to read a
.rootmapfile or dictionary library that is in the process of being re-written by a different dictionary target. If you need advice on how to achieve this with your build tools, please let us know.
- As a result of ROOT6's new "autoparse" technology, header files corresponding to the running code must be available at runtime.
- We believe that files produced by previous versions of art with ROOT 5 are readable by those using ROOT 6. If you have a counter-example, please file a bug at https://cdcvs.fnal.gov/redmine/projects/art/issues and we will investigate.
- With the arrival of ROOT 6, dictionary information is autoloaded as necessary rather than being loaded unconditionally. This is accomplished via the
.rootmapfiles produced as part of the new recommended
- There is a significant memory increase relative to 1.17.03 due to ROOT 6's autoparse facility. The exact amount will vary with experiment's configurations and data product use, but could be over 200MiB. We are confident we will be able to address this significantly in a future art release by taking steps to avoid triggering the autoparse behavior.
- There is an increase in start-up time with ROOT 6 with respect to ROOT 5. Some of this may be ameliorated with the anticipated reduction in autoparsing, but some of the initialization time increase relative to ROOT 5 is expected to be permanent.