Release Notes

These notes are intended to serve as a guide to the user-visible features in a particular art suite release. As such, only versions included in art suite releases, or those with substantive changes, are included.

canvas 3.09.01 (2020/03/02)

canvas 3.09.00 (2019/11/12)

This version includes the following new features:

  • The ability to create associative containers using the art::InputTag key type (resolves issue #23320).
  • The art::Assns::addMany overload set, which can be used for easily creating one-to-many associations.

This version only supports qualifiers e19 and c7. In addition, Python 3 is enabled by default. To use Python 2, the 'py2' qualifier must be specified when setting up the canvas UPS product.

canvas 3.08.00 (2019/06/21)

Smart-query objects constructed with an art::ProductToken now ensure C++ type consistency (resolves issue #20579).

canvas 3.07.04 (2019/05/29)

The setPtr and getElementAddresses customization points for art::Ptr were unintentionally disabled for art 3. These have been restored with this version of canvas (resolves issue #22643).

canvas 3.07.03 (2019/03/07)

canvas 3.07.02 (2019/03/05)

canvas 3.07.01 (2019/02/07)

canvas 3.07.00 (2019/01/30)

canvas 3.05.01, 2019/01/29 (art suite 3.01.01, art suite 3.01.02)

canvas 3.05.00, 2018/09/25 (art suite 3.01.00)

  • C++17 only

canvas 3.04.00, 2018/06/05 (art suite 3.00.00)

canvas 3.06.01, 2019/06/07 (art suite 2.13.00)

canvas 3.06.00, 2019/01/22 (art suite 2.12.00, art suite 2.12.01)

canvas 3.03.04, 2018/11/19 (art suite 2.11.05)

canvas 3.03.03, 2018/07/16 (art suite 2.11.03, art suite 2.11.04)

canvas 3.03.02, 2018/05/04 (art suite 2.11.02)

canvas 3.03.01, 2018/04/02 (art suite 2.11.01)

canvas 3.03.00, 2018/03/30 (art suite 2.11.00)

  • This version supports GCC 7.3 with C++17 enabled.
  • In past versions of canvas, RangeSet representations for a full run, and for a completely empty run have been the same under the assumption that it is not possible to create a completely empty run. Although this assumption is correct for all newly created products/runs in versions of art that support the concept of a RangeSet, it is incorrect when reading files that do not have RangeSet information. To be able to disambiguate between empty range sets and full-run range sets, we have changed the representation of the full-run RangeSet (resolves bug #18996).
  • During the dereferencing of an art::Ptr<T>, a check is made that the art::Ptr index is valid. This happens during the first dereference of the product for a given event (or subrun/run). Subsequent dereferences incur no additional run-time overhead. (Resolves issue #18849.)

To support the above changes, two breaking changes were added:

  • art::Ptr<T>s can now be made only to elements in collections that have a const-qualified size() member function. This extra restriction is unlikely to affect anyone.
  • For two identical art::RangeSet objects rs1 and rs2, calling art::overlapping_ranges(rs1, rs2) now returns true instead of false.

canvas 3.02.03, 2018/03/16 (art suite 2.10.04)

canvas 3.02.02, 2018/02/15 (art suite 2.10.02, art suite 2.10.03)

  • Change the fluffing of the wrappedName_ transient data member of BranchDescription to the BranchDescription constructor (resolves bug #18925).

canvas 3.02.01, 2018/01/23 (art suite 2.10.01)

canvas 3.02.00, 2018/01/22 (art suite 2.10.00)

  • Add AssnsAlgorithms.h, which provides means of grouping Assns elements based on the "left" element values of an Assns<L,R(,D)> object.
  • Support Clang 5.0.1; involves introducing a dependency on ROOT for c2 builds.
  • Introduce dependency on the header-only range library.
  • Provide specialization for std::hash<art::Ptr<T>> (resolves issue #18655).

canvas 3.01.03, 2017/12/06 (art suite 2.09.03, art suite 2.09.04, art suite 2.09.05, art suite 2.09.06)
canvas 1.05.02, 2017/12/04 (art suite 2.05.01)

  • Fix empty RangeSet handling

canvas 3.01.01, 2017/11/07 (art suite 2.09.02)

canvas 3.01.00, 2017/10/17 (art suite 2.09.00, art suite 2.09.01).

canvas 3.00.03, 2017/10/20 (art suite 2.08.04).

  • Fix schema evolution rules implemented in ProductIDStreamer (resolves bug #17898).

canvas 3.00.02, 2017/08/30 (art suite 2.08.03).

  • Fix stale reference error in IPRHelper, introduced by using art::detail::input_tag (resolves bug #17609).

canvas 3.00.01, 2017/08/04 (art suite 2.08.02).

  • Upgrade to ROOT 6.10.04d.

canvas 3.00.00, 2017/08/01 (art suite 2.08.00, art suite 2.08.01).

  • art::BranchID is no longer used in art, except for ensuring backwards compatibility.
  • art::ProductID schema has changed--we guarantee the ability to read files with the older schema.
  • art::PassID has been removed--this affects the schema of the ProcessConfiguration class.
  • Please make the following substitutions where necessary:
    - art::BranchDescription::branchID()
    + art::BranchDescription::productID()
  • The art::Parentage schema has changed from std::vector<art::BranchID> to std::vector<art::ProductID>.
  • The TestHelper facility has been removed--not used by anyone.
  • The BranchDescription::MatchMode enumeration has been removed.

canvas 2.00.02, 2017/05/26 (art suite 2.07.03).

canvas 2.00.01, 2017/05/25 (art suite 2.07.01, art suite 2.07.02).

  • Added the art::EventIDMatcher class, which allows for selection of EventIDs based on a set of patterns.
  • Added a forward iterator to the art::Assns<A,B,D> class template to allow iteration over the collection.
  • art::thread_safe_registry_via_id container added to support concurrent insertion of elements.
  • Improved exception message in the case of a failure to merge RangeSet.
  • Significant compile-time improvements to art::Timestamp.
  • C++ changes to accommodate compilation with Clang.
  • Breaking changes:
    • Removed art::BranchType from art::TypeLabel class to avoid duplication downstream.
    • Removed art::DoNotRecordParents base class.

canvas 1.06.04, 2017/03/22 (art suite 2.06.03).

canvas 1.06.03, 2017/02/27 (art suite 2.06.02).

  • Depends on patched version of ROOT that supports gPad->WaitForPrimitive (resolves issue #15665).

canvas 1.06.02, 2017/02/08 (art suite 2.06.01).

canvas 1.06.01, 2017/02/07 (art suite 2.06.00).

  • Merge libraries into one canvas library (resolves issue #12995).
  • Replace ambiguous error code with two more descriptive codes (resolves issue #14664).
  • Further develop art::Level enumeration infrastructure to support non-state-machine art (related to issue #15398).
  • Enhance art::Assns functionality (issues #10539).
  • Improve consistency of art::Ptr handling (resolves issue #14763).
  • Allow for const qualification of the `size()` member function during type introspection, which art::Wrapper relies on for Assns products (resolves issue #14378).

canvas 1.05.01, 2016/10/19 (art suite 2.05.00).

  • Minor bug fixes.

canvas 1.05.00, 2016/09/14 (art suite 2.04.00, art suite 2.04.01).

  • Substantially improve RangeSet merging efficiency (resolves issue #13765).
  • Move canvas/Utilities/detail/metaprogramming.h to cetlib/detail/metaprogramming.h.
  • Update to CLHEP and ROOT 6.06.08.

canvas 1.04.06, 2016/08/17 (art suite 2.03.00).

  • Remove link-time dependency of aggregate.h on TH1.

canvas 1.04.05, 2016/08/08 (art suite 2.02.02).

  • Remove dependency on rapidjson, which is not used in canvas (resolves issue #12990).
  • Fix exception message whenever a dictionary is not found (resolves issue #13459).

canvas 1.04.04, 2016/08/02 (art suite 2.02.01).

  • Upgrade to ROOT 6.06.04b, which includes fixes to some memory leaks.

canvas 1.04.03, 2016/08/02 (art suite 2.02.00).

  • Remove explicit template instantiations in classes.h files.

canvas 1.04.02, 2016/06/08 (art suite 2.01.02).

  • Fix comparison of unsigned and signed integers in aggregation test suite.

canvas 1.04.01, 2016/06/07 (art suite 2.01.01).

canvas 1.04.00, 2016/06/06 (art suite 2.01.00).

  • art::Wrapper<T> includes an additional datum called rangeSetID that corresponds to the rowid of the appropriate SQLite range-set table.
  • Product aggregation supported for art::Wrapper<T>.

canvas 1.03.02, 2016/05/24 (art suite 2.00.02).

canvas 1.03.01, 2016/05/16 (art suite 2.00.01).