Skip to content

Releases: AIDASoft/podio

v00-14-01

10 Mar 14:06
Compare
Choose a tag to compare

v00-14-01

  • 2022-03-04 Thomas Madlener (PR#261)

    • Make the datamodel validation accept arrays of fixed width integer types.
  • 2022-02-09 Placido Fernandez Declara (PR#259)

    • Filter files with regex based on file name, not complete path
  • 2022-02-08 Thomas Madlener (PR#238)

    • Extend the podioVersion.h header that is configured by cmake to hold some version utilities.
      • podio::version::Version class holding three uint16_ts for major, minor and patch version, plus constexpr comparison operators.
      • static const(expr) podio::version::build_version that holds the current (i.e. last tag) version of podio
      • Add preprocessor macros with similar functionality
        • PODIO_VERSION takes a major, minor and a patch version number and encodes it into a 64 bit version constant.
        • PODIO_[MAJOR|MINOR|PATCH]_VERSION macros can extracts these values again from a 64 bit encoded version.
        • PODIO_BUILD_VERSION holds the 64 bit encoded current (i.e. last tag) version of podio
    • Reorder the read tests slightly and make some sections version dependent
    • Add legacy file read test from #230
  • 2022-01-28 Thomas Madlener (PR#256)

    • Ignore the test introduced in #235 in sanitizer builds as it currently breaks.
  • 2022-01-24 Placido Fernandez Declara (PR#235)

    • Fix crashes that happen when reading collections that have related objects in collections that have not been persisted.
    • Fix similar crashes for subset collections where the original collection has not been persisted.
      • The expected behavior in both cases is that podio does not crash when reading such collections, but only once the user tries to actually access such a missing object. Each object has an isAvailable function to guard against such crashes if need be.
    • Add a test that makes sure that the expected behavior is the one that is observed.
    • Fix a somewhat related bug in setReferences which was mistakenly a no-op for collections of a type without relations. Since this is the mechanism we use for restoring subset collections it obviously has to be present for all types.
  • 2022-01-21 Thomas Madlener (PR#252)

    • Make the CollectionData classes use unique_ptr instead of raw pointers, wherever they actually own the pointer.
    • Implement move constructors and move assignment operators for collections. Thanks to the usage of unique_ptr for ownership management in the CollectionData, these can be defaulted in Collection and CollectionData.
    • Add a few tests to check that moving collections actually works.
  • 2022-01-20 Thomas Madlener (PR#251)

    • Make sure that collections of types without relations can still be used properly as subset collections. Previous to these changes, the necessary functionality was not generated if a datatype had no relations (i.e. not a single OneToOneRelation or OneToManyRelation).
    • Add a check of this functionality to the write/read tests.
  • 2022-01-20 Thomas Madlener (PR#249)

    • Add a USE_SANITIZER build option to more easily build podio with sanitizers for testing. Curently Address, Memory[WithOrigin], Undefined and Thread are available as options. Given the limitations of the sanitizers these are more or less mutually exlusive.
    • Label all the Catch2 test cases which makes it easier to run them selectively.
    • For builds with sanitizers enabled, by default ignore tests with known failures, but add a FORCE_RUN_ALL_TESTS cmake option that overrides this for local development.
    • Run CI workflows with a selection of sanitizers enabled (on a limited list of tests).
  • 2022-01-20 hegner (PR#209)

    • Remove mention of Python 2 compatibility
  • 2021-12-03 Thomas Madlener (PR#245)

    • Make it possible to call prepareForWrite multiple times on collections by rendering all but the first call no-ops. Fixes #241
      • Collections are marked as prepared, either if they are read from file or once prepareForWrite has been called on them.
  • 2021-12-03 Thomas Madlener (PR#205)

    • Make the default classes immutable and mark mutable classes explictly via their class name (e.g. Hit and MutableHit). See a brief discussion in #204 for more details on the reasons for this breaking change.
    • After these changes collections return mutable objects via their create functionality, and will only give access to the default (immutable) objects when they are const (e.g. when they are read from file).
    • In general these changes should make it easier for users to write interface that behave as expected, and also make it very obvious where objects are actually mutated already from looking at an interface definition.
  • 2021-10-22 Thomas Madlener (PR#239)

    • Fix a typo in the cmake config for finding the correct python version when cmake is used in downstream packages.
  • 2021-10-21 Thomas Madlener (PR#237)

    • Mistakenly dropped colon in #236
  • 2021-10-14 Thomas Madlener (PR#236)

    • Fix problem in python tests that appears in spack builds

v00-14

13 Oct 09:00
Compare
Choose a tag to compare

v00-14

  • 2021-10-13 Thomas Madlener (PR#234)

    • Make sure that #include <cstdint> is present when using fixed with integers in datatypes
  • 2021-10-12 Thomas Madlener (PR#232)

    • Make it possible to read "old" podio data files that have been written with podio < 0.13.1 (i.e. before #197) was merged.
      • For ROOT: Reconstruct the "CollectionInfoType" branch that as introduced there via other means and simply assume that all collections are proper collections (since subset collections didn't exist prior).
      • For SIO: Bump the version of the SIOCollectionIDTableBlock to 0.2 and only read the subset collection bits when they are available.
  • 2021-10-12 Valentin Volkl (PR#231)

    • Add regression test for mutable clones of const objects
  • 2021-10-11 Thomas Madlener (PR#223)

    • Add brief documentation for the newly added UserDataCollection added in #213

v00-13-02

08 Oct 12:08
Compare
Choose a tag to compare

v00-13-02

v00-13-02-pre

08 Oct 12:07
Compare
Choose a tag to compare
v00-13-02-pre Pre-release
Pre-release

v00-13-02

  • 2021-10-08 Thomas Madlener (PR#224)

    • Make the clone function always return a mutable object, also when called on an immutable object (Fixes #219)
  • 2021-09-22 Thomas Madlener (PR#214)

    • Make the CMake datamodel generation macro use the python interpreter that is also found by CMake to avoid accidentally picking up an unsuitable system provided version that might be on PATH.
  • 2021-09-21 Frank Gaede (PR#213)

    • add possibility to store additional user data as collections of fundamental types in PODIO files
      • uses std::vector<basic_type>
      • stored in simple branch in root (and simple block in SIO)
      • all fundamental types supported in PODIO (except bool) can be written
    • example code:
      auto& usrInts = store.create<podio::UserDataCollection<uint64_t> >("userInts");
      auto& usrDoubles = store.create<podio::UserDataCollection<double> >("userDoubles");
      // ...
    
      // add some unsigned ints
      usrInts.resize( i + 1 ) ;
      int myInt = 0 ;
      for( auto& iu : usrInts ){
        iu = myInt++  ;
      }
      // and some user double values
      unsigned nd = 100 ;
      usrDoubles.resize( nd ) ;
      for(unsigned id=0 ; id<nd ; ++id){
        usrDoubles[id] = 42. ;
      }
  • 2021-09-21 tmadlener (PR#143)

    • Generate an additional podio_generated_files.cmake file containing all generated source files as a header and sources list and make the code generation macro include this file to get the headers and source files.
      • Now only the files generated for the current settings are picked up by cmake
      • Makes it possible to have additional files in the folders where the generated files are placed, since these are no longer globbed over.
  • 2021-09-10 Thomas Madlener (PR#217)

    • Make the Obj destructors = default where possible, i.e. if a datatype has no relations to handle
    • Make the assignment operators of the user facing classes use the "copy-and-swap" idiom
    • Fix the problem where OneToOneRelations needed to be from the same namespace as the datatype they are used in (#216)
  • 2021-09-06 Thomas Madlener (PR#211)

    • Fix test dependencies to allow running tests in parallel via ctest -jN
  • 2021-08-18 Thomas Madlener (PR#210)

    • Fix a few small issues in the datamodel yaml file validation. These do not change the behavior of code generation, they just try to catch problems earlier
      • Make sure that OneToManyRelations and OneToOneRelations have the same restrictions
      • Only allow components, builtins and arrays of those as Members
    • Make the API of validate slightly more generic by taking a dict instead of multiple arguments.
    • Make the generator exit with an easier to read error message in case of a validation problem instead of printing a full backtrace.
  • 2021-08-18 Thomas Madlener (PR#197)

    • Introduce a podio::CollectionBuffers class that contains everything that is necessary for I/O of a given collection. This is a breaking change in the collection interface
    • Introduce and generate a CollectionData class for each datatype that only manages the storage of a given collection.
      • Exposes only the Obj entries of each collection as well as the necessary functionality to add a new object (and its relations) to the collection.
    • Implement "subset" collections that behave exactly the same as normal collections apart from an additional function call when creating them.
  • 2021-08-13 Thomas Madlener (PR#206)

    • Switch to Catch2 v3 test library and by default assume that it is available. Use the 'USE_EXTERNAL_CATCH2` cmake option to control whether podio should use an external installation or if it should fetch and build it internally instead.
    • Remove catch.hpp header that was previously shipped, since it is no longer needed.
  • 2021-08-13 Thomas Madlener (PR#201)

    • Make assignment operator increase the reference count to avoid possible heap-after-free usage. (Fixes #200)

v00-13-01

15 Jun 12:22
Compare
Choose a tag to compare

v00-13-01

  • 2021-06-03 Thomas Madlener (PR#195)

    • Fix possible circular and self-includes in generated header files.
  • 2021-06-03 Thomas Madlener (PR#194)

    • Make it possible to do indexed access on a RelationRange, making the interface more akin to a const std::vector
  • 2021-05-31 tmadlener (PR#193)

    • Make collection element access const correct.
  • 2021-05-31 Thomas Madlener (PR#192)

    • Fix const-correctness problems of meta data access via EventStore.
  • 2021-05-28 Benedikt Hegner (PR#191)

    • Fix bug in validity check so that transient and persistent collections are treated the same
  • 2021-05-28 Thomas Madlener (PR#186)

    • Add support for fixed width integer type members in components and datatypes.
      • Now possible to use int16_t, int32_t, int64_t, uint16_t, uint32_t and uint64_t as members. Other fixed width integer types that are potentially defined in <cstdint> are not considered valid as the intended use case is really only fixed width integers for now. These are rejected at the datamodel validation step.
      • Fixed width integers are considered to be "builtin" types for podio.
  • 2021-05-04 Valentin Volkl (PR#189)

    • [cmake] fix test dependencies: read_and_write.cpp reads the file example.root that is created by the write test. If the dependency is not declared, running the tests concurrently can lead to spurious test failures.
  • 2021-04-28 tmadlener (PR#180)

    • Improve the branch look-up logic in ROOTReader and ROOTWriter. Triggered by a performance degradation in v6.22/06, where this logic was changed inside ROOT and our use case was affected badly. All ROOT versions profit from these changes as it is in general more efficient than the previous implementation.
  • 2021-03-30 tmadlener (PR#182)

    • Use run-lcg-view github action and switch to more recent LCG releases to run CI.
    • Update README to include status of CI
  • 2021-03-23 Valentin Volkl (PR#185)

    • extended .gitignore
  • 2021-03-23 Valentin Volkl (PR#184)

    • Clean up AsciiWriter comments
  • 2021-03-23 tmadlener (PR#183)

    • Use SIO targets in cmake, which are exported starting with v00-01 (iLCSoft/SIO#15)
  • 2021-02-23 Marko Petric (PR#181)

    • Add coverity nightly scan based on run-lcg-view action
  • 2021-02-23 tmadlener (PR#175)

    • Fully qualify return types for OneToOneRelation getters in generated .cc file for objects and Const objects. This fixes a bug described in #168 (comment) and now allows to mix different namespaces in the generated code. This allows to more easily extend already existing datamodels by compiling and linking against them.
  • 2021-02-23 Dmitry Romanov (PR#173)

    • Added IO Handler argument to schema generation example in README
  • 2021-02-23 tmadlener (PR#171)

    • Fix compiler warnings, that were uncovered by #153 and described in #170. Fix them in the core classes and also in the generated ones.
    • Enforce no new warnings with Werror in the CI builds.
  • 2021-02-15 Joseph C Wang (PR#156)

    • Readers/writers are now noncopyable
  • 2021-02-02 Joseph C Wang (PR#154)

    • Disable operator = for collections so that it maintains one copy of collections, fixes #111
  • 2021-01-26 tmadlener (PR#172)

    • Fix deprecated brew install commands in mac workflow
  • 2020-12-18 tmadlener (PR#165)

    • Add a convenience RelationRange::emtpy function for easily checking whether a range is empty.
  • 2020-12-18 tmadlener (PR#162)

    • Fix cmake problem #161 on Ubuntu
  • 2020-12-18 tmadlener (PR#155)

    • Add some benchmarking tools, including TimedReader and TimedWriter decorators that allow to wrap (interface conforming) readers and writers and record the times different operations take. The times are recorded on two levels: setup times, like constructing a reader or "one-time" calls and per event times, for things that happen each event (e.g. writeEvent or readCollection). Additionally the BenchmarkRecorder in principle also allows to track additional things outside of these decorators.

v00-13

03 Dec 18:21
Compare
Choose a tag to compare

v00-13

  • 2020-12-03 Marko Petric (PR#153)

    • Set rpath for macOS and externalize compiler and linker flags
    • Search for the same version of python as was used for building ROOT
  • 2020-12-03 Joseph C Wang (PR#152)

    • Make EventStore non-copyable
  • 2020-12-03 tmadlener (PR#144)

    • Decouple the writers and the EventStore to allow to write collections that have previously been read from a file.
  • 2020-11-24 Valentin Volkl (PR#149)

    • [cmake] add find_package_handle_standard_args() to podio config
  • 2020-11-18 Frank Gaede (PR#147)

    • fix for MacOs when using SIO I/O with podio
      - need to link edm-core library to edm-sioBlocks library
  • 2020-11-10 Thomas Madlener (PR#130)

    • Add SIO as a second I/O backend (as alternative to ROOT) that can be enabled with ENABLE_SIO. If enabled, a separate podioSioIO library is built that allows reading and writing sio files. For serializing the different datatypes, additional code is generated to build an SioBlocks library that is loaded at runtime (if found somewhere on LD_LIBRARY_PATH). To facilitate the whole process at the cmake level, new cmake functions are provided to generate the core datamodel library PODIO_ADD_DATAMODEL_CORE_LIBRARY, to (conditionally) define the ROOT dictionary target PODIO_ADD_ROOT_IO_DICT and to (conditionally) define the Sio Blocks library target PODIO_ADD_SIO_IO_BLOCKS. The I/O backends that are supported by podio are exported via the PODIO_IO_HANDLERS list variable.
    • podio_generate_datamodel.py now additionally takes the I/O handlers that should be generated as arguments. This is also reflected in an additional argument to PODIO_GENERATE_DATAMODEL. To have backwards compatibility, this additional argument defaults to ROOT in both cases and downstream packages should work as usual without changes.
  • 2020-10-06 tmadlener (PR#133)

    • Make ROOTReader handle file switches properly for meta data reading.
  • 2020-09-29 tmadlener (PR#141)

    • Update CI actions to use LCG 96, 97, 98 for mac, centos7 and ubuntu1804
    • Make python bindings work with root 6.22 (and onwards)
    • Make sure that root has been built with c++17 at the cmake stage
    • Require at least CMake 3.12
  • 2020-09-18 tmadlener (PR#134)

    • Make the EventStore actually take ownership of the metadata passed to it by the readers. (see #139)
    • Make the collections properly clean up data of VectorMembers (see #139)
    • Fix small memory leak in the EventStore for the CollectionIDTable.
  • 2020-09-04 tmadlener (PR#128)

    • Fix a possible nullptr access in the Writers and make registerForWrite return a boolean to make it easier to check from the calling site.
  • 2020-09-04 tmadlener (PR#127)

    • cleanup of GenericParameters for meta data
      - remove mutable from internal maps
  • 2020-09-04 tmadlener (PR#126)

    • No longer install python unittest files
  • 2020-09-04 tmadlener (PR#125)

    • improve CollectionIDTable
      - previously used a std::recursive_mutex which is unnecessary in this case
      - made whatever can be made const const and now use std::distance to calculate the index.
  • 2020-08-28 tmadlener (PR#129)

    • Reduce memory footprint by clearing intermediately used I/O buffers.

v00-12

19 Aug 14:44
Compare
Choose a tag to compare

v00-12

  • 2020-08-11 Frank Gaede (PR#124)

    • minor bug fix for macos:
      - add <sstream> to write.cpp
      - fixes #123
  • 2020-08-11 tmadlener (PR#122)

    • Update README to reflect the new requirements (i.e. jinja2)
  • 2020-08-11 tmadlener (PR#121)

    • Update Ubuntu CI script to install the python requirements via pip.
  • 2020-08-11 tmadlener (PR#120)

    • Use jinja2 template engine to generate c++ code. This makes it possible to more cleanly separate the generation of the c++ code and all the necessary pre-processing. Now only the pre-processing is done in python, while the complete generation is done using jinja2. This should make it much easier to make changes to the generated c++ code.
  • 2020-08-05 tmadlener (PR#117)

    • Refactoring of the podio class generator to improve its readability. This refactoring is mainly focusing on reducing the size of some methods to make them easier to grasp as well as trying to more cleanly separate the validation of the inputs and the c++ code generation. The validation is stricter than the current version and will potentially break things. Specifically, the handling of ExtraCode and ConstExtraCode is now implemented according to the documentation. In the previous version this has somewhat diverged from there. The yaml declaration of components has been made equivalent to the ones of the datatypes but "old-style" definitions are still handled properly. In the latter case a deprecation warning is emitted. The generated c++ code is functionally equivalent, but not equal character by character. The differences are mainly whitespace, but at some places also some of the generated code has been updated to more recent c++ capabilities. Additionally, some tests for the validation are added. They are not really exhaustive and should be considered to serve mainly documenting purposes for the moment.
  • 2020-08-03 tmadlener (PR#107)

    • Introduce range wrapper for OneToManyRelations and VectorMembers to allow range-based for loops
  • 2020-08-03 tmadlener (PR#106)

    • Fix the possibility of running into infinite loops in the ostream operator with cyclical references
  • 2020-08-03 Frank Gaede (PR#102)

    • add test example read_and_write.cpp
      • simple use case for reading in an event an writing (parts of it) to another file
      • currently fails with segmentation fault (to be fixed)
  • 2020-08-03 Valentin Volkl (PR#98)

    • add ubuntu ci build

v00-11

22 Jul 08:12
Compare
Choose a tag to compare

v00-11

  • 2020-07-21 tmadlener (PR#101)

    • Fix bug where ConstObject with empty OneToManyRelations give an invalid iterator range, #100
  • 2020-06-23 Andre Sailer (PR#99)

    • Point to libpodioDict.so instead of libpodio.so in rootmap file
  • 2020-06-03 Frank Gaede (PR#92)

    • implement reading/writing of meta data for runs, events and collections
      • based on GenericParameters that hold named parameters of type int, float, string or vectors if these (copied from lcio::LCParameters)
      • meta data for the three types is always written
      • it is read only on request
    • example for writing:
       auto& evtMD = store.getEventMetaData() ;
        evtMD.setValue( "UserEventWeight" , (float) 100.*i ) ;
    
    • example for reading:
      auto& evtMD = store.getEventMetaData() ;
      float evtWeight = evtMD.getFloatVal( "UserEventWeight" ) ;
    
    
    • addresses #49
  • 2020-05-26 Andre Sailer (PR#91)

    • Ensure podioRootIO is linked against podioDict even when linker uses as-needed by default, fixes #90
  • 2020-05-26 Thomas Madlener (PR#89)

    • Updated README and env.sh to reflect changes in install process
  • 2020-05-12 Valentin Volkl (PR#88)

    • change add relation naming addXxxx -> addToXxxxs
  • 2020-05-12 Valentin Volkl (PR#87)

    • update minimum required CMake version to 3.8
    • remove obsolete Jenkinsfile
    • make CPack config optional: cmake variable ENABLE_CPACK defaults to OFF
    • update Readme with Spack instructions
  • 2020-04-14 Frank Gaede (PR#83)

    • allow automatic change of version in CMakeLists.txt

v00-10

03 Apr 16:24
Compare
Choose a tag to compare

v00-10

  • 2020-04-03 Frank Gaede (PR#81)

    • make compatible with macos and clang
      • use -Wl,-undefined,dynamic_lookup w/ AppleClang
        • make the same, default behavior on linux explicit w/ -Wl,--allow-shlib-undefined
      • add ROOT::Core to TestDataModel library
  • 2020-04-03 Marko Petric (PR#80)

    • add a macOS test to GitHub actions
  • 2020-04-03 Valentin Volkl (PR#75)

    • Fixes in python code for 2-3 compatibility
  • 2020-03-23 Andre Sailer (PR#74)

    • Fix exception when podio_class_generator is called with -q/--quiet
    • Printout about includes only in verbose mode
    • Do not print warnings in quiet mode
    • Print each warning only once
  • 2020-03-23 Andre Sailer (PR#73)

    • Added PODIO_GENERATE_DATAMODEL Cmake macro to call the class generator at the right time. see podioMacros for the signature
  • 2020-03-11 Marko Petric (PR#72)

    • Update CI to use GitHub actions
    • Add test against a Python 3 LCG view
    • Remove travis
    • Add tests for Python 3 compatibility and flake8
  • 2020-03-11 Andre Sailer (PR#70)

    • ClassGenerator: add option "includeSubfolder", to always use `#include "<packagename>/<object>.h" etc. if set to "True"
    • Added sorting and "uniquing" of include lists. Some duplicates still occur because two different lists are used on occasion
    • Added $PACKAGE_NAME_ to include guards
  • 2020-03-11 Andre Sailer (PR#69)

    • Move all Root dependencies (RootReader, RootWriter) of the podio Library into podioRootIO, rename podioDict to podioDict
  • 2020-02-17 Andre Sailer (PR#68)

    • Add podioMacros.cmake to contain PODIO_GENERATE_DICTIONARY
  • 2020-02-17 Andre Sailer (PR#67)

    • Change Yaml loader to preserve order of members as given in the yaml
  • 2020-02-17 Andre Sailer (PR#65)

    • podio_class_generator: only write files if their content changed
  • 2019-10-15 Valentin Volkl (PR#64)

    • Add BUILD_TESTS CMake option for building tests
  • 2019-10-15 Pere Mato (PR#63)

    • Fix to avoid deprecated STL classes in C++17

v00-09-02

01 Oct 08:12
Compare
Choose a tag to compare

v00-09-02

  • 2019-09-27 Frank Gaede (PR#60)

    • fixed the code generation for members with multi word types (long long, unsigned long,...)
      - add example to ExampleHit:
      - unsigned long long cellID // cellID
  • 2019-09-27 Ben Morgan (PR#59)

    • move templates inside the python directory when installing
      - fixes: #58
  • 2019-09-27 Ben Morgan (PR#59)
    /

  • 2019-09-27 Frank Gaede (PR#57)

    • allow for numbers in namespace and class names
      - generate type name string for CollectionBase::getValueTypeName()
      - fixes #56
  • 2019-09-26 Frank Gaede (PR#55)

    • cache collection pointers for fast access in EventStore::get()
      • added EventStore::getFast(int id)
      • considerably speeds up XXCollection::setReferences()
        when reading back collections
  • 2019-09-26 Ben Morgan (PR#54)

    • improve the CMake
      1. Consistent use of CMake usage requirements to propagate include and link dependencies
      2. Full use of the CMakePackageConfigHelpers module to generate the podioConfig.cmake file and associated podioTargets.cmake
      3. Automatically refind the ROOT dependency
      4. Standardize install paths for CMake and template files
        A podio client can, in CMake, do
    find_package(podio REQUIRED)
    add_executable(foo foo.cc)
    target_link_libraries(foo podio::podio)

    and all include/link paths will be set correctly.

  • 2019-08-21 Javier Cervantes Villanueva (PR#51)
    Do not install tests

    • Allow tests to run after the build phase
    • Paths have been modified to point to binary or source directories
    • Before, tests had to be run only after running make install
    • Test are not installed anymore
    • Fail tests if any error is reported (ROOT Interpreter error may not be considered by CMake)
  • 2019-05-10 Frank Gaede (PR#45)

    • updated documentation
      • add guidelines for contributing
    • reverted some name changes in tests/examples (fixes #44)
      • read-one now again called read
    • enamble dryrun again for generate-edm test
  • 2019-04-09 Marko Petric (PR#43)

    • Implementation of CI based on LCG views, as suggested in #42
  • 2019-04-09 Graeme A Stewart (PR#41)

    • Improve convenience setup scripts and build instructions
      - remove FCC specific code from init.sh
      - factorise environment setup to env.sh
      - updated README.md
  • 2019-03-24 Javier Cervantes (PR#40)

    • ROOTReader now supports multiple inputs thanks to new implementation based on TChain
    • ROOTReader now supports opening files via xrootd (root:///eospublic.cern.ch//eos... for example)
    • Improved CMake and CPack configuration, sticking more closely to HSF template