Skip to content
Snippets Groups Projects
CHANGELOG.md 37.5 KiB
Newer Older
# Changelog
All notable changes to this project will be documented in this file.

Marco Clemencic's avatar
Marco Clemencic committed
Project Coordinators: Marco Clemencic @clemenci, Charles Leggett @leggett, Stefan Roiser @roiser

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).


## [v36r0][] - 2021-06-21
This is a major release of Gaudi that introduces some backward incompatible changes (mostly clean up).

### Changed
- More use of `std::string_view` (gaudi/Gaudi!1039)
- Removed unused properties in `GaudiCommon` (gaudi/Gaudi#143, gaudi/Gaudi!1138)
- Remove obsolete `IJobOptionsSvc` (gaudi/Gaudi#140, gaudi/Gaudi!1217)
- Drop `StatusCode` checking via `StatusCodeSvc` (gaudi/Gaudi!989)
- Remove unused public interface methods from `GaudiCommon` (gaudi/Gaudi!1140, gaudi/Gaudi#186, gaudi/Gaudi!1220)
- `JobOptionSvc`: remove case insensitivity (gaudi/Gaudi#155, gaudi/Gaudi!1179)
- Use TBB task_arena to replace deprecated components (gaudi/Gaudi!1067, gaudi/Gaudi!1193)
- `IClassIDSvc`: remove set/get package information (gaudi/Gaudi!1200)

### Added
- Improve unused options report from `JobOptionsSvc` (gaudi/Gaudi!1222)
- Introduced `DeprecatedDynamicDataObjectHandle` (gaudi/Gaudi!1202)
- Added `removeEntity` interface to `MonitoringHub` (gaudi/Gaudi!1208)

### Fixed
- `gaudirun.py`: Correctly handle `--all-opts` when mixing `GaudiConfig2` with old Configurables (gaudi/Gaudi#188, gaudi/Gaudi!1224)
- Doc: Add Sphinx-based Documentation (gaudi/Gaudi!1152, gaudi/Gaudi#190, gaudi/Gaudi!1223)
- Avoid double delete in `THistSvc::finalize` (gaudi/Gaudi!1221)
- Fix spurious clang warning (gaudi/Gaudi!1219)
- `has_fetch_add_v` should take a value type, not an `atomic<>`. (gaudi/Gaudi!1167)
- Fix semantics of `Gaudi::Accumulators::Counter` (gaudi/Gaudi#144, gaudi/Gaudi!1136)
- Remove newlines within fatal message for easier log grepping (gaudi/Gaudi!1215)
- Fixes for LCG 100 (gaudi/Gaudi!1214)
- `THistSvc` threading improvement (gaudi/Gaudi#179, gaudi/Gaudi!1212)
- `IncidentSvc`: handle rethrow for asychronous incidents (gaudi/Gaudi!1198)
- Fix StatusCodeFail tests when using GNU Make instead of Ninja (gaudi/Gaudi!1213)


## [v35r4][] - 2021-05-25
Minor release including gaudi/Gaudi!1210, needed for an LHCb release.

### Added
- Add a `MultiMergingTransformerFilter` (gaudi/Gaudi!1210)

### Fixed
- Fix CMake 3.20 warnigns (gaudi/Gaudi!1211)
- Replace `sys_siglist` (deprecated) with `strsignal` to allow build with newer glibc (> 2.32) (gaudi/Gaudi!1207)
- Always set TBB_LIBRARIES when TBB_FOUND (gaudi/Gaudi!1209)
- Simplify `StatusCode` compilation failure test (gaudi/Gaudi!1206, gaudi/Gaudi!1211)
Marco Clemencic's avatar
Marco Clemencic committed

## [v35r3][] - 2021-04-20
Another minor bugfix release with more fixes for ROOT 6.22 and improvements to the CMake configuration.

Here is a summary of the changes (see the [full list of changes](https://gitlab.cern.ch/gaudi/Gaudi/compare/v35r2...v35r3)).

### Changed
- Change how optional dependencies are handled in downstream projects (gaudi/Gaudi!1194)
- Remove serial task queue (gaudi/Gaudi!1195)
- Switch to latest ATLAS task precedence scenario in a test (gaudi/Gaudi!1190)
- Change `DevBuildType` to also enable `-Wsuggest-override` on clang if version >= 11 (gaudi/Gaudi!1191)

### Added
- Test algorithm with internal multithreading (gaudi/Gaudi!1196)
- Added a cardinality setting for `AtlasMCRecoScenario` (gaudi/Gaudi!1201)
- Extend the task precedence tracer for dumping dynamic graphs (gaudi/Gaudi!1189)
- Allow use of local targets instead of imported ones (gaudi/Gaudi!1186)

### Fixed
- Allow returning void in a `MergingTransformer` (gaudi/Gaudi!1199)
- Add small test and fix for GaudiPython.Bindings.iDataSvc traversal (gaudi/Gaudi!1178)
- Fix handling of properties for tuples and arrays of size 1 (gaudi/Gaudi#21, gaudi/Gaudi!1197)
- Add dynamic dependencies scan for `genreflex` dictionaries (gaudi/Gaudi#152  gaudi/Gaudi!1183)
- Improvements on Monitoring::Hub::Entity and accumulators (gaudi/Gaudi!1185)
- Suppress warnings about `nodiscard` in dictionary generation with ROOT 6.22 (gaudi/Gaudi!1182)
- Add custom pythonization callback to SmartRefVector (gaudi/Gaudi!1180)
- Fixed bug in Histogram filling (gaudi/Gaudi!1176)
- Improve support for new style CMake projects (gaudi/Gaudi!1177)


Marco Clemencic's avatar
Marco Clemencic committed
## [v35r2][] - 2021-03-10
Just a minor bugfix release with changes required for
- ROOT 6.22 (updated PyROOT/cppyy)
- modernization of CMake configuration of LHCb projects
- use of new monitoring interfaces in LHCb Online system

Here is a summary of the changes (see the [full list of changes](https://gitlab.cern.ch/gaudi/Gaudi/compare/v35r1...v35r2)).

### Changed
- Allow use of local targets instead of imported ones (gaudi/Gaudi!1186)
- Improvements on `Monitoring::Hub::Entity` and accumulators (gaudi/Gaudi!1185)
- Improve support for new style `CMake` downstream projects (gaudi/Gaudi!1177)

### Fixed
- Add dynamic dependencies scan for `genreflex` dictionaries (gaudi/Gaudi#152, gaudi/Gaudi!1183)
- Supress warnings about `__nodiscard__` attribute in dictionary generation with ROOT 6.22 (gaudi/Gaudi!1182)
- Add custom pythonization callback to `SmartRefVector` (gaudi/Gaudi!1180)
- Fixed bug in Histogram filling (gaudi/Gaudi!1176)


## [v35r1][] - 2021-01-28
This is mostly a bugfix release, with a couple of backward incompatible changes in
Python `DataHandle` class (gaudi/Gaudi!1144, gaudi/Gaudi!1159) and deprecation warnings
from `IJobOptionsSvc`, which will be dropped in v36r0 (gaudi/Gaudi#140).
Here is a summary of the [full list of changes](https://gitlab.cern.ch/gaudi/Gaudi/compare/v35r0...v35r1).

### Changed
- DataHandle: use all members for `==` and improve unit test (gaudi/Gaudi!1159)
- Deprecate use of `IJobOptionsSvc` (gaudi/Gaudi#139, gaudi/Gaudi!1156)
- DataHandle: Remove `__add__` operators (gaudi/Gaudi#146, gaudi/Gaudi!1144)

### Added
- Add support to `DataWriteHandle` for writing (partially type erased) 'views' into the TES (gaudi/Gaudi!1151)

### Fixed
- Adapt tests to a change in TFile "file not found" error message (gaudi/Gaudi!1174)
- ARM Fixes (gaudi/Gaudi!1153)
- IncidentSvc: fix ever-growing incident map (gaudi/Gaudi!1164)
- Fix CF bug arising from empty sequence (gaudi/Gaudi#135, gaudi/Gaudi!1106)
- Re-enabled the installation of the `PartPropSvc` auxiliary files (gaudi/Gaudi!1172)
- Make iteration ordering predictable (gaudi/Gaudi!1169)
- StatusCode tweaks (gaudi/Gaudi!1171)
- GaudiToolbox: Fix generated `__init__` files to handle symlinks (gaudi/Gaudi!1170)
- Check result of `dynamic_cast<>` for null before dereferencing (gaudi/Gaudi!1168)
- Fix build instructions (gaudi/Gaudi#159, gaudi/Gaudi#161, gaudi/Gaudi!1162)
- Resolve "GAUDI_GENCONF_NO_FAIL option not working" (gaudi/Gaudi#160, gaudi/Gaudi!1161)
- Fix clang 10 warnings (gaudi/Gaudi!1166)
- Fix MacOS compilation (gaudi/Gaudi!1158)
- Do not set `Python_FIND_STRATEGY` (gaudi/Gaudi#157, gaudi/Gaudi!1157)
- Property: Catch all parsing errors (gaudi/Gaudi!1165)
- simplify `iid_cast` implementation (gaudi/Gaudi!1154)
- Monitor Algorithm instance misses (gaudi/Gaudi!1148)
- Fix GaudiPython classes (follows up gaudi/Gaudi!1116) (gaudi/Gaudi!1155)
- Fix py-formatting of exec (gaudi/Gaudi!1160)
- Fix Algorithm destructor invocation in multithreading applications (gaudi/Gaudi#150, gaudi/Gaudi!1149)
Marco Clemencic's avatar
Marco Clemencic committed

## [v35r0][] - 2020-11-10
This version features a complete rewrite of the CMake configuration. See gaudi/Gaudi!986 and gaudi/Gaudi!922 for details.
Here is a summary of the [full list of changes](https://gitlab.cern.ch/gaudi/Gaudi/compare/v34r1...v35r0).
Marco Clemencic's avatar
Marco Clemencic committed

### Changed
Marco Clemencic's avatar
Marco Clemencic committed
- Complete rewrite of CMake configuration in *modern* CMake (gaudi/Gaudi!986, gaudi/Gaudi!922)
Marco Clemencic's avatar
Marco Clemencic committed

### Fixed
Marco Clemencic's avatar
Marco Clemencic committed
- Restore use of `GENREFLEX_JOB_POOL` (gaudi/Gaudi#151, gaudi/Gaudi!1150)
- Improve resilience of CI build jobs (gaudi/Gaudi#149, gaudi/Gaudi!1146)
- Fix test checking the wrong thing (gaudi/Gaudi!1142)
- Resolve "test wrapper report logic is the wrong way around" (gaudi/Gaudi#3, gaudi/Gaudi!1132)
- Ignore relative paths when generating the run script (gaudi/Gaudi#147, gaudi/Gaudi!1145)
- Fix QMTest reference filename lookup (gaudi/Gaudi!1143)
Marco Clemencic's avatar
Marco Clemencic committed

## [v34r1][] - 2020-10-16
This is mostly a bugfix release meant as a checkpoint before the tag of [v35r0][]
(which will introduce the refactoring of the CMake configuration, gaudi/Gaudi!986, gaudi/Gaudi!922).

We anyway have some important changes:
- update of physics constants to match the current release of CLHEP (gaudi/Gaudi!1101)
- a new way of dealing with monitorable quantities like counters and histograms (gaudi/Gaudi!1112, gaudi/Gaudi!1113, gaudi/Gaudi!1129)
- `DataObjectHandleProperty` renamed to `DataHandleProperty` (gaudi/Gaudi!1091)
- allow services to *autoretrieve* tool handles (gaudi/Gaudi!1124)
- new helper class to recursively renounce inputs from all tools of an algorithm or tool (gaudi/Gaudi!1118, gaudi/Gaudi!1130, gaudi/Gaudi!1135)

Here is a summary of the [full list of changes](https://gitlab.cern.ch/gaudi/Gaudi/compare/v34r0...v34r1).

Marco Clemencic's avatar
Marco Clemencic committed
### Changed
Marco Clemencic's avatar
Marco Clemencic committed
- Autoretrieve `AlgTools` in `Services`, check for data deps (gaudi/Gaudi!1124)
- Change `DataObjectHandleProperty` to `DataHandleProperty` (gaudi/Gaudi!1091)
- Update units and constants (gaudi/Gaudi!1101)
- Deprecate `put` with a plain pointer as argument (gaudi/Gaudi!1086)
Marco Clemencic's avatar
Marco Clemencic committed

### Added
Marco Clemencic's avatar
Marco Clemencic committed
- Add helper class to renounce recursively inputs from all tools of an algorithm or tool (gaudi/Gaudi!1118, gaudi/Gaudi!1130, gaudi/Gaudi!1135)
- New monitoring facility for counters and histograms (gaudi/Gaudi!1112, gaudi/Gaudi!1113, gaudi/Gaudi!1129)
- Messages: Refine source field truncation (gaudi/Gaudi!1125)
- DataObjID: Add accessor for class name (gaudi/Gaudi!1126)
Marco Clemencic's avatar
Marco Clemencic committed

### Fixed
Marco Clemencic's avatar
Marco Clemencic committed
- Fixes for new ROOT/cppyy (gaudi/Gaudi!1116)
- Resolve "Use of (private) `ToolHandles` may trigger the configuration of spurious public tools" (#141, !1131)
- Fixes for clang builds (gaudi/Gaudi!1121)
- Add test reference files for AVX2/AVX512 builds (gaudi/Gaudi!1122)
- Avoid output file conflict in `MetaDataSvc` test (gaudi/Gaudi!1123)
- Use Boost filesystem instead of std::fs with clang 10 (gaudi/Gaudi!1120)
- Tweak leak sanitizer suppressions for Cling, XrootD and TStreamerInfo with LCG97a (gaudi/Gaudi!1104)
- IUpdateManagerSvc: do not specify unnecessary template arguments (gaudi/Gaudi!1090)
- Update some python examples to python 3 syntax (gaudi/Gaudi!1088)
- Test for the scheduler hang on alg exceptions (gaudi/Gaudi!979, gaudi/Gaudi!1078, gaudi/Gaudi!1107)
- Check build warnings in GitLab CI  (gaudi/Gaudi!1109)
- Remove deprecation warnings on old `IJobOptionsSvc` (gaudi/Gaudi!1114)
- Explicitly flush standard output in `MessageSvc::finalize()` (gaudi/Gaudi!1117)
- Use `Gaudi/Property.h` instead of `GaudiKernel/Property` (gaudi/Gaudi!1105)
- Algorithm state profiling (gaudi/Gaudi!1072)
Marco Clemencic's avatar
Marco Clemencic committed
## [v34r0][] - 2020-08-04
This is a release meant to introduce a major rewrite of the *Job Options Service*, as described in the merge request gaudi/Gaudi!577, plus, of course, some fixes.

### Changed
- Bump version to v34r0 (gaudi/Gaudi!1096)
- Redesign of job options management (gaudi/Gaudi!577, gaudi/Gaudi#105)
- Re-apply gaudi/Gaudi!1064: Isolate sub-slot data from the parent slot (gaudi/Gaudi!1095)

### Added
- Add CopyInputStream (gaudi/Gaudi!1077, gaudi/Gaudi#102)

### Fixed
- FMT Library Usage Improvement (gaudi/Gaudi!1103)
- Minor fixes for Clang 10 build, adapt BinaryTagUtils to allow compiler version >10 (gaudi/Gaudi!1097)
- Do not tinker with output file names in GaudiMP (gaudi/Gaudi!1098)
- Add support for special LCG versions (gaudi/Gaudi!1099)
- Fix Python 3 compatibility issues (gaudi/Gaudi!1102, b87519600879cde3be7694d9fd7567c6efd8db1c)
- Protect messages in event loop (gaudi/Gaudi!1100)

Marco Clemencic's avatar
Marco Clemencic committed
## [v33r2][] - 2020-06-19
This is a bugfix release with just a couple of minor backward compatible improvements.

We also updated the LCG baseline version to [LCG 97a](http://lcginfo.cern.ch/release/97a/) (ROOT 6.20/06).

This is the last release with the legacy CMake configuration. From the next release (v34r0)
we will use a modern CMake configuration (see gaudi/Gaudi!922 and gaudi/Gaudi!986 for details).

### Added
- Improve event context extension management (gaudi/Gaudi!1080)
- Introducing Set-semantics (gaudi/Gaudi!1066)
- Make gitlab use cpp syntax highlighting for icpp files (gaudi/Gaudi!1057)

### Fixed
- Fixes for ROOT master (gaudi/Gaudi!1071)
- Use fmtlib instead of `boost::format` (where possible) (gaudi/Gaudi!1046, gaudi/Gaudi#112)
- Conditions alg test, with stall debug info (gaudi/Gaudi!1092)
- Make sure the TES is cleaned by `EventLoopMgr` before finalize (gaudi/Gaudi!1082, LHCBPS-1850)
- Fix race condition between tests (gaudi/Gaudi!1074)
- Fix propagation of `StopIteration` exception (gaudi/Gaudi!1093, gaudi/Gaudi#129)
- Update HiveDataBroker to use C++20 ranges if available. (gaudi/Gaudi!1089)
- Fixes for C++20 (gaudi/Gaudi!1085)
- Fix thread-safety problem in GaudiHandle (gaudi/Gaudi!1084)
- Misc. sanitiser improvements (gaudi/Gaudi!1081)
- Make `GaudiHandleArray.__str__` consistent with `GaudiHandle.__str__` (gaudi/Gaudi!1070)
- Fix trivial typo in message (gaudi/Gaudi!1087)
- `GaudiConfig2`: fix unpickling of derived Configurables (gaudi/Gaudi!1076, gaudi/Gaudi#124)
- Remove data flow dumps or make them configurable (gaudi/Gaudi!1075)
- Change `StatusCode::orThrow` so that the return value can be ignored (gaudi/Gaudi!1073, gaudi/Gaudi#118)
- Fix bugs in `ThreadPoolSvc` (gaudi/Gaudi!1068)
- Sequence semantics update (gaudi/Gaudi!1069)
- Remove now unused `ATLAS_GAUDI_V21` and `HAVE_GAUDI_PLUGINSVC` definitions (gaudi/Gaudi!1062)
- Few fixes to `GaudiConfig2` (gaudi/Gaudi!1061)
- Fix compatibility with C++ GSL 3 (gaudi/Gaudi!1063, gaudi/Gaudi#121)
- Consolidate and optimize scheduling of blocking tasks (gaudi/Gaudi!1051)
- Do not run public headers build test on generated headers (gaudi/Gaudi!974)
- Add array `operator<<` into `SerializeSTL.h` (gaudi/Gaudi!1049)
- Dereference instead of `operator*` in `get_from_handle` to enable `Gaudi::Ranges` in `MergingTransformer`s (gaudi/Gaudi!1047)
- Fixes for `GetHostBinaryTag` (gaudi/Gaudi!1058)
- Remove unused capture of `this` in `MultiTransformerFilter` (gaudi/Gaudi!1059)
- Fix deprecated copy constructor warning in `StreamBuffer::ContainedLink` (gaudi/Gaudi!1060)
- `AlgExecStateSvc`: require minimum state size to be 1 (gaudi/Gaudi!1055)
- `IncidentSvc`: improve error reporting (gaudi/Gaudi!1054)
- Remove mention of deprecated `tbb::recursive_mutex` (gaudi/Gaudi!1053)

Marco Clemencic's avatar
Marco Clemencic committed
## [v33r1][] - 2020-03-23
This release contains multiple fixes and some ABI changes, in particular:
- `StatusCode` values not checked now produce a compile time warning.
- some interfaces have been changed to accept `std::string_view` instead of `const std::string&`

By default, Gaudi now uses LCG 97 (ROOT 6.20/02).

### Changed
- Removed `FindXercesC.cmake` now that new versions of Xerces are integrated with CMake (!1048)
- Add `[[nodiscard]]` attribute to `StatusCode` (!763)
- Use local memory pool in EvtStoreSvc (!1026)
- Deprecate use of `AnyDataHandle` (!1029)
- Cleanup some string handling & remove long deprecated functions (!1016)
- confDB2: Use 'PublicToolHandle', 'PrivateToolHandle' and 'ServiceHandle' instead of GaudiHandleBase as cpp_type (!1034)

### Added
- Add options to EvtStoreSvc to restrict registering addresses (#84, !1032)

### Fixed
- Make formatting check more stable and fast (!1050)
- Fix propagation of `GaudiSequencer` `RootInTES` (#94, !990)
- Fix handling of const vector in `DataObjectHandle` for `MergingTransformer` (!1045)
- Minor fixes to build on MacOS (!1044)
- Avoid explicit call to `EnableAutoLoading` for ROOT > 6.18 (!1036)
- Use PyROOT nullptr instead of None (1035)
- Support `DataObjectHandle<Gaudi::NamedRange_<T>>` (!1043)
- AlgExecStateSvc: Remove a fatal message and minor cleanups (!1037)
- Improve memory management in `ParticlePropertySvc` (!1040)
- JobOptionSvc: Fix DUMPFILE option (!1041)
- Resolve "GaudiConfigDB2: Fragile handling of templated components" (#115, !1042)
- Prefer `std::scoped_lock` over `lock_guard` (!1030, !1038)
- Reduce dynamic allocation in `GaudiKernel/Time.h` (!1033)
- Allow legacy algorithms to work with LHCb condition handles (!1031)
- Fix Cling warnings when using `GaudiPython::Helper` struct (!1028)
- Define a module `__spec__` for Configurables (!1027)
- clang requires -ffp-contract=fast with -mfma to actually enable FMA instructions (!1022)
- genconf: Fixing the handling of NAN (!1025)

## [v33r0][] - 2019-12-16
This major release of Gaudi contains additions, improvements and fixes, but most of all it adds
the agreed on copyright statement and license:

> © 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations,
> Apache version 2 license

Among the new features I'd like to highlight:
- new Python Configurables implementation (!721)
- experimental `Gaudi::Accumulators::Histogram<...>` (!1020)
- `StatusCode::{andThen|orElse|orThrow}` chaining functions (!988)

### Changed
- Enable sse 4.2 by default for clang >= 6.0 (!1019)
- Use gcc9 in Gilab-CI builds (!1013)
- Remove begin/endRun methods (!1008)
- Make `HistogramPersistencySvc` a little quieter (!992)
- Reorganization of Counters headers (!1006)
- Add new `StatusCode` category to return *filter passed* states from functional algorithms (!981)
- Use `xenv` 1.0.0 if not available from the system (!984)
- Remove const-incorrect `ToolHandle`s exception for ATLAS (!978)

### Added
- Set Gaudi copyright and license (!1018)
- Add experimental support for histograms as counters (!1020)
- Add detection of strongly connected components in the data flow precedence rules (!998)
- Debug output for a stall expecting conditions data (!994)
- Add PRG validators for detection of unconditional "editing" of data objects (!980)
- Prototype for a renewed Python Configurables implementation (!721)
- Add helpers to chain `StatusCode` dependent executions (!988)
- Update `THistSvc` to support `TEfficiency` (!1011)
- Support bulk increment of `BinomialAccumulator` (!999)

### Fixed
- `genconf`: fix quoting of strings containing quotes (!1023)
- Ignore unicode decode errors in test stdout (!1021)
- Do not use `xenv` from LCG (!1005)
- Properly escape strings with embedded quotes in `Gaudi::Utils::toStream` (!1012)
- Detect ROOT C++ standard from `ROOTConfig.cmake` (!985)
- Adjust clang warning suppression pragmas in `Transformer.h` (!1014)
- Improve scheduler performance with fewer calls to updateState (!870)
- `Gaudi::Functional`: Add possibility to query input/output location by type (!1009, !1015)
- Enable `Gaudi::Functional::Transformer<Result(const EventContext&)>` (!1007)
- More precise message for multiple algorithms having the same output in `HiveDataBroker` (!1003)
- Add flag to turn on/off use of `std::filesystem` (!987)
- `IoComponentMgr`: Only release components during finalize (!1004)
- Allow calling `f(std::string_view)` with a `Gaudi::Property<std::string>` (!1002)
- Specify file encoding when reading (!1000)
- Suppress printout of unused `MsgCounter` instances (!996)
- Do not print `SequencerTimerTool` header in finalize if there are no timing results (!997)
- Support for latest TBB and fixes for C++GSL and Range-v3 (!982)
- Fixes for "defects" detected by Coverity (!939)

Marco Clemencic's avatar
Marco Clemencic committed
## [v32r2][] - 2019-09-27
This is mostly a bugfix release, but there are nonetheless a couple of
important changes:
- now Gaudi can be used with Python 3 (#56)
- the `IAsyncEventProcessor`experimental interface introduced in v32r0 (!878)
  has been replaced with `IQueueingEventProcessor` (!966)
- it's now possible to get type information from Python version of `DataHandle`s

### Changed
- Replace `IAsyncEventProcessor` with `IQueueingEventProcessor` (!966)

### Added
- GaudiKernel `instructionsetLevel`: Add additional AVX512 levels (!954)
- Add Python 3 support (#56, !875, !975, #88, !976)
- Add vecwid256 microarchitecture option to enable `-mprefer-vector-width=256` (!965)
- Add type information to Python representation of `DataHandle`s (!951)

### Fixed
- Backward compatible interface of `IAlgorithm` for `GaudiPython` (#75, !977)
- Misc fixes for `GaudiMP` (#87, #75, !973)
- Remove unneeded change in refactoring of TES handling (#70, !971)
- Various ToolHandleArray bug fixes (!960)
- Functional ranges v3 0.9.x warning suppression (!968)
- Fix clang `-Wpotentially-evaluated-expression` warning (!970)
- Switch from Boost test minimal (deprecated) to single header variant (!948)
- Fixes for MacOS (!956)
- Make `ContainedObject` assignment consistent with copy construction (!967)
- `THistSvc::io_reinit`: Handle case of empty new filename (!959)
- `EventSelector` - Always set context ptr to null on release (!961)
- Minor improvements to sanitizers (!955)
- `ChronoStatSvc` - Clear maps in finalize (!958)
- Minor updates to `Gaudi::Functional` implementation (!952)
- `THistSvc`: Fix crash in MP if root file already exists (!949)
- Fix gcc9 warnings (!962)
Marco Clemencic's avatar
Marco Clemencic committed
## [v32r1][] - 2019-07-18
Bugfix release, with some backward compatible changes, mostly meant to pick up
[LCG 96](http://lcginfo.cern.ch/release/96/) and [ROOT 6.18/00](https://root.cern.ch/content/release-61800).

**Note**: Because of the updated version of Boost in LCG 96, you should use a recent version of CMake (>= 3.14).

### Changed
- Add algorithm name to warning in `HiveDataBroker` (!923)
- Make `Configurable.getGaudiType` a `classmethod` (!929)
- Prefer `xyz_v<T>` over `xyz<T>::value`, and `xyz_t<T>` over `typename xyz<T>::type` (!925)
- Prefer `std::{variant,optional}` over `boost::{variant,optional}` (!926)

### Added
- Specify `JOB_POOL` for `genreflex` custom commands (!933)
- Add an example `MergingTransformer` algorithm (!934)
- Add loop unroll hint macros to `GaudiKernel/Kernel.h` (!931)
- Add `MsgCounter` (!921)
- Introduce a `MergingMultiTransformer` (!901)

### Fixed
- Removed a few unused `.cpp` files (!945)
Marco Clemencic's avatar
Marco Clemencic committed
- Print counters in Gaudi::Algorithm::finalize (!943, !946, !947)
- Make asynceventprocessor tests more stable (!940)
- Small fixes to toolchain (!938)
- Use the `AlgContext` guard constructor without `EventContext` for single thread (!973, #72, #73)
- Hide spurious warning from `clang-8` (!941)
- Check that the `clang-format` command found can be executed (!935)
- Improve scheduler stall debug output (!930)
- Fix `CMake` modules test on special architectures (!927)
- Fix handling of strings with quotes in properties (!919)
- Remove reference to removed `gaudimain.runSerialOld` (!918)
- Restore backward compatibility after !878 (!917)
- Revert !869: *Create a queue for all schedule-able algorithms* (!924)
- Add `GaudiKernel` linkage to Counters unit test (!920)
- Misc. sanitizer fixes (!916)
- Fix `distcc`/`icecc` support (!911)
- Made the `LibLZMA` dependency in `GaudiKernel` optional (!909)
- `GaudiKernel`: check *likely* macros before defining them (!912)
- Fix `IOpaqueAddress` lifetime in `EvtStoreSvc` (!914)

## [v32r0][] - 2019-05-18
Marco Clemencic's avatar
Marco Clemencic committed
This release features many fixes and improvements, but also a few backward incompatible changes:
- removed  `GaudiGSL` package (in preparation for the licensing under Apache 2) (!879)
- change of `IEventProcessor` interface (!877)
- change (const correctness) of custom containers interfaces (!896)
- removed a few unused components: `HLTEventLoopMgr` (!876), `AlgErrorAuditor` (!874)
Marco Clemencic's avatar
Marco Clemencic committed
- drop support for Python *custom event loop* in `gaudirun.py` (!878)

Among the various additions you can find:
- `Counter`-based timers (!787)
- example of an interface for accessing conditions, which require experiment specific implementation (!838)
- a new interface (`Gaudi::Interfaces::IAsyncEventProcessor`) to allow decoupling of
  the main thread from the event processing thread(s) (!878)
- a simplified application steering class (`Gaudi::Application`) (!878)
Marco Clemencic's avatar
Marco Clemencic committed

### Changed
Marco Clemencic's avatar
Marco Clemencic committed
- Update `clang-format` to 8 (!872)
- Factor TES path related code out of `GaudiCommon` (!904)
Marco Clemencic's avatar
Marco Clemencic committed
- More explicit management of `EventContext` in `IEventProcessor` (!877)
- Small clean up in `EventLoopMgr` implementations (!876)
- Remove `GaudiGSL` (!879)
- Do not return non-const pointers to elements of const containers (!896)
- Drop backwards compatibility code (!883, !900)
- `HiveDataBroker`: throw exception in case of same output locations in two different algorithms (!858)
- Delete `AlgErrorAuditor` (!874)
- `PrecedenceSvc`: demote 'Verifying rules' message to debug (!873)
- Replace `boost::string_ref` with `std::string_view` (!859)
Marco Clemencic's avatar
Marco Clemencic committed
### Added
Marco Clemencic's avatar
Marco Clemencic committed
- Add optional extension of `EventProcessor` for asynchronous processing (!878)
- Add example of `ConditionAccessorHolder` implementation for integration in Functional (!838)
- Bits for the cross-experiment study on heterogeneous workflows (!828)
Marco Clemencic's avatar
Marco Clemencic committed
- Generalize `Gaudi::Functional` to support LHCb-style conditions handles (!899)
- Add a synthetic performance stress test for the scheduler (!865)
- New Minimal Event Store: `EvtStoreSvc` (!882)
- Add Counter-based timers (!787)
- Add support for `Gaudi::Algorithm` as base class of `Functional` algorithms (!897)
- Create a queue for all schedule-able algorithms (!869)
- Add support for specific architectures in BINARY_TAG (!853)
- Add `getIfExits` for `DataHandle`s with `AnyDataWrapper` (!854)
- Add support for `std::chrono::duration` in counters (!849)
Marco Clemencic's avatar
Marco Clemencic committed
- Add the possibility to ask for Mode in python data handle property (!845)

Marco Clemencic's avatar
Marco Clemencic committed
### Fixed
Marco Clemencic's avatar
Marco Clemencic committed
- Tweaks to `Gaudi::Functional` (!903)
- `HiveDataBroker`: Improve error message when unknown requested input (!906)
- Avoid copy of `EventContext` in `Gaudi::Utils::AlgContext` (!902)
- Reverse order of tbb `task_scheduler_init` and `global_control` (!895)
Marco Clemencic's avatar
Marco Clemencic committed
- Make `StatusCodeSvc` thread-safe (!885)
- `ThreadPoolSvc`: prefer `std::unique_ptr` (!889)
- Ensure thread termination tools only run in initialized threads (!887)
- Updates for MacOS and clang (!888, !894, !893)
- Enable `std::iterator_traits<vector_of_const_<T>::iterator>` (!855)
- Fix `MessageSvc::reinitialize` (!871)
- Fixes to `EventIDRange` (!860)
- `ApplicationMgr`: Call all state transition for `MessageSvc` and `JobOptionsSvc` (!866)
- Fix tunneling of CF decisions to inactive graph regions in multi-parent configurations (!863)
- Use `[[fallthrough]]` attribute instead of the _fallthrough_ comment (!862)
- Restructure PRG sources and add visitor for Concurrent/Prompt CF inconsistency detection (!861)
- Sort data dependencies in `HiveDataBroker` debug printout (!868)
- Avoid displaying unused Binomial counters (!830)
- Python 2 & 3 compatibility (!832, !852)
Marco Clemencic's avatar
Marco Clemencic committed

## [v29r5][] - 2019-03-06
This is a bugfix release only to fix a warning with the most recent version of
CMake (3.13), see the changes on
[Gitlab](https://gitlab.cern.ch/gaudi/Gaudi/compare/v29r4...v29r5).

## [v31r0][] - 2019-02-11
The main reason for this major release is to the change of the `Algorithm` base
class with a re-entrant `execute` method (#47, !703). For backward compatibility the
base class for algorithms is `Gaudi::Algorithm`, while the name `Algorithm` in
the top level namespace is used for a backward compatible implementation. This
change also required a backward incompatible change in the `IAlgorithm`
interface, so some code may require adaptation.

We also took the occasion to update the version of `clang-format` we use from
3.9 to 7, and to switch Python formatting from `autopep8` to `yapf` (!788).
Because of the differences (fixes and new features) in the versions of
`clang-format`, we also updated the style rules.

As of this version, Gaudi requires C++17 compatible compiler.
C++14 compatibility is not required in merge requests, nor guaranteed on the
_master_ branch.

On top of that, we have the usual collection of minor fixes and improvements.

### Changed
- Use gcc 8 instead of gcc 7, and drop gcc 6.2 in CI jobs (!836)
- Make new counters work with Gaudi::Algorithm (#57, !834, !839)
- Update clang-format version and style rules (!788)
- Make `DataObjectHandle::{put,getOrCreate}` const (!833)
- Simplify IAlgExecStateSvc interface (!775)
- Simplify Algorithm constructor (!766)
- Improve the scheduler's execution flow simulator and fix the intra-event occupancy logger (!819)
- Reentrant Algorithm base class (#47, !703)

### Added
- Introduced `CPUCrunchSvc` (!840)
- Added a boolean parameter to turn on verbose view algorithm status (!835)
- Added `MsgStream` support for counters (!826)
- Message: Add option to print full event ID (!824)
- IoComponentMgr: Add interface to retrieve all filenames of component (!823)
- Add example for `Consumer<void()>` (!797)

### Fixed
- Fix lookup/use of `nosetests` for LCG 95 (!842)
- Check coding conventions in _build_ stage of Gitlab-CI (!848)
- Make `gaudi_add_compile_test` also work for succeeding compilations (!844)
- Fix build of Gaudi with LCG 95rc1 in ATLAS context (!847)
- Explicitly define `StatusCode` constants (!841)
- Fix handling of `EventContext` in `Gaudi::Functional::Transformer` arguments (!837)
- `Extensions` to allow `EventIDRanges` limited by both time-stamps and run/LB pairs (!831)
- Improve ROOT dictionary dependency computation (!825)
- Fix issues in preparation for LCG 95 (!820)
- Improve QMT test wrapper (!812)
- Improvements for tests (!812, !817)
- Fixes/workrounds for thread-safety (!815, !829)
- Code clean up (!808, !811, !814, !809, !827, !843)
- Fixes to thread local initialization (!816, !807)


## [v30r5][] - 2018-11-15
This release is mainly to revert !462 (Reimplemenation of `DataHandle`), which
caused problems in ATLAS code.
**Supersedes [v30r4](https://gitlab.cern.ch/gaudi/Gaudi/tags/v30r4)**

### Changed
- refer error in databroker when multiple algorithms declare the same output
  and remove some error messages (!799)
- Remove redundant code from `GaudiKernel/StdArrayAsProperty.h` (!790)
- Use generic `boost::callable_traits` over hand-rolled solution (!785)
- Revert "Reimplementation of `DataHandle` (!462)" (!794)

### Added
- Added printing of Inputs/Outputs for `HiveDataBroker` in debug mode (!801)
- Support Boost >= 1.67 Python library name convention (!743)

### Fixed
- Reduce dependency on LHCb env tools in CI jobs (!805)
- Make sure algorithms managed by `AlgorithmManager` are correctly initialized and started (!804)
- `test_LBCORE_716`: Use the default linker and not the system linker (!783)
- `CountersUnitTest`: Fix C++14 compiler warning (!795)


## [v30r4][] - 2018-11-02 [YANKED]
Marco Clemencic's avatar
Marco Clemencic committed
Improvements, modernization and fixes.

Marco Clemencic's avatar
Marco Clemencic committed
### Changed
- Reorganization of Gaudi::Parsers code (!759)
- Update LCG to 94 and Gaudi version to v30r4 (!776)
- Update minimum required CMake version to 3.6 (!789)
- Remove m_event_context from `Algorithm` (!784)
- Reimplementation of `DataHandle` (!462)
- Improve extension API in `EventContext` (!770)
- Change return type of interger counters operations, like _mean_, to float (!786, #50)
- Clean up `IDataProviderSvc` and `IDataManagerSvc` interfaces (!674)
- Avoid printing empty counters (!777)
- Use `unique_ptr` for `EventContexts` (!732, #37)
- `ConcurrencyFlags`: move setting from `AvalancheScheduler` to `HiveWhiteBoard` (!726)
- Introduce a generic `IDataStoreAgent` implementation (!661)
- `MetaDataSvc`: save data for all clients of the `JobOptionsSvc` (!720)
- Adding actual type of object in data store to error messages (!715)
Marco Clemencic's avatar
Marco Clemencic committed

### Added
- Add `Gaudi::Property` constructors which accept an update handler (!769)
- Optionally capture and print exception backtrace (!653)
- Add build and runtime support for gcc/clang sanitizers (!744)
- Add debug builds to Gitlab-CI and other improvements to CI configuration (!756)
- Introduce `IDataBroker` interface, and `HiveDataBroker` implementation (!685, !739)
- Added an accumulate helper function to new counters (!717)
Marco Clemencic's avatar
Marco Clemencic committed

### Fixed
- `HiveWhiteBoard::freeStore`: check whether slot was already free (!779, #49)
- Fix segfault when scheduling `EventViews` (!781)
- Fixed bug in `BinomialCounter` when using buffer (!764)
- Clarify scalar `operator()` signature in `MultiScalarTransform` (!755)
- Fix potential race condition in `TimelineSvc` (!750)
- Implicitly convert `DataObjectHandleBase` to `str` properties (!773)
- Filter out install and build files from `make apply-formatting` (!747, )
- Fixed issues reported by gcc/clang sanitizers (!749, !757, !758, !752, !751, !746, !772, !753)
- Make sure a test fails if its reference file is not found (!734)
- Fix Floating Point Exception in `counters.h` (!760)
- Make the CMake tests more resilient to symlinks (!742)
- Add support for versioned ROOT libraries (!737)
- Make event views bookkeeping thread-safe (!729, #36)
- Avoid using a (possibly invalid) `EventContext` pointer (!727)
- Mark dependencies as required when the build requires them (!731)
- Use std::filesystem only with C++17 (!738)
- Fixed indentation of new counters to be backward compatible (!717)
- Fixed error handling of `qmt` parsing errors (!714)
- Stop profiling on finalize if needed (!713)
- `THistSvc`: fix memory corruption in `deReg(string)` (!728)
- Avoid possible memory corruption in `PluginService` (!733)
- Added correct `vector_of_const_::operator[]` and ::at (!710)
Marco Clemencic's avatar
Marco Clemencic committed

### Clean up
- Make `VectorMap` `nothrow_move_constructible` (!791)
- Fix some gcc 8 warnings (!782)
- Remove unused mutex member in `Algorithm` (!767)
- Replaced invalid `std::forward` with `std::move` in `PluginService` (!745)
- Counters: improve doxygen (!754)
- Minor code clean up (!408, !740, !774)
Marco Clemencic's avatar
Marco Clemencic committed
## [v30r3][] - 2018-08-01
Improvements, modernization and fixes.

### Deprecated
- Print warning if begin/endRun are used in serial jobs (!666)
- Fully deprecate `DeclareFactoryEntries.h` (!648)
- Implement error detection for Hive scheduler/eventloopmgr (!706)
- Modernize memory management in `PrecedenceRulesGraph` (!684)
- Simplify `HLTEventLoopMgr` (!686)
- Rewrite of `PluginService` in modern C++ (!709)
- Sort uids map before printing the content at finalize (in DEBUG) (!702)
- Remove `NTUPLEINFO` (!688)
- Revert `IRegsitry` modification from !604 (!704)
- Move to event-wise stall detection (!690)
- Avoid superfluous visitor-to-scheduler handovers of in-view DR algorithms (!689)
- Add set-to-set lookups for faster `AlgsExecutionStates` matching (!687)
- `FileMgr`: replace integer with bitset (!667)
- Enable top-level 3T dumps for event views (!675)
- Add support for multiple CF parents to 3T (!672)
- Applied new formatting (see !651, !448)
- Remove `DataHandle::commit()` (!625)
- Modernize Registry usage in (Ts)DataSvc (!604, #5)
- Improve Gitlab-CI configuration (!651, !448)
- Implemented a new property for IoComponentMgr to hold search patterns for
  direct I/O input file names (!646)
- Allow retrieval of const services, lost with !526 (!647)
- Add renamePFN and deletePFN methods to FileCatalog (!645)
- Do string conversion in stream operator for `AlgsExecutionStates::State`
  (!643)
- Use `apply` in `Gaudi::Functional` (!622)
Marco Clemencic's avatar
Marco Clemencic committed
### Fixed
- Fixes for clang build (!724)
- Fix dependency of generated PCM files (!705)
- Fix tests in special configurations (!701)
- Fix asynchronous task scheduling (!697)
- Make sure we do not use `ninja` from LCG (!695)
- Increase timeout for event view tests (!696)
- Fix message service format in `GaudiMP` (!694)
- `CommonAuditor`: only print `CustomEventType` deprecation warning if the property is used (!691)
- Fix for crash when events are deleted while view algorithms are still running (!670)
- Fix environment for Gitlab-CI
- Unset `GIT_DIR`/`GIT_WORK_TREE` before cloning `xenv` (!669)
- Add test and fix of version propagation in KeyedContainer move (!663, #27)
- Fixed the list of files used for formatting check in Gitlab-CI (!664)
- Avoid (false positive) clang warning (!656)
- Handle incompatible values for DataObjectHandleBase props (!650)
- Fixed bug in THistSvc introduced with !594 (!652)
### Added
- Add support for `EventContext` as input to `Gaudi::Functional` algorithms (!671)
- Add `operator()` to `Property` (!679)
- Add producer for `KeyedContainer` and vector to `GaudiExamples` (!673)
- Implementation of new counters classes (!629, !676, !677)
- [Change log](CHANGELOG.md) (!649)
Marco Clemencic's avatar
Marco Clemencic committed
### Clean up
- Simplify `Property` forwarding functions (!683)
- Simplify counter implementation (!682)
- Update C++17 / lib fundamentals v2 implementations (!681)
- Modernize `GaudiPython` (!680)
- Modernize `RootCnv` (!660)
- Modernize `RootHistCnv` (!659)
- Protect logging and clean up headers in HiveSlimEventLoopMgr (!692)
- Remove unused variables in Algorithm (!668)
- Remove unreferenced code (!658)
## [v28r2p1][] - 2018-06-15
Bugfix release

### Fixed
- Add test and fix of version propagation in KeyedContainer move (!665, #27)
- Gitlab-CI configuration (!665, backport from master)
## [v29r4][] - 2018-04-17
Bugfix release.

### Fixed
- Add test and fix of version propagation in KeyedContainer move (!662, #27)
- Handle incompatible values for DataObjectHandleBase props (!654)

### Changed
- Improve Gitlab-CI configuration (!655, backport of !651)
## Old versions
Details about old versions of the project can be found in the
[ReleaseNotes](ReleaseNotes) folder and in the `release.notes` files in
[GaudiRelease/doc](GaudiRelease/doc).

[v36r0]: https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v36r0
[v35r4]: https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v35r4
Marco Clemencic's avatar
Marco Clemencic committed
[v35r3]: https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v35r3
Marco Clemencic's avatar
Marco Clemencic committed
[v35r2]: https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v35r2
[v35r1]: https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v35r1
Marco Clemencic's avatar
Marco Clemencic committed
[v35r0]: https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v35r0
Marco Clemencic's avatar
Marco Clemencic committed
[v34r1]: https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v34r1
[v34r0]: https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v34r0
[v33r2]: https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v33r2
[v33r1]: https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v33r1
[v33r0]: https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v33r0
[v32r2]: https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v32r2
[v32r1]: https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v32r1
[v32r0]: https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v32r0
[v31r0]: https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v31r0
[v30r5]: https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v30r5
[v30r4]: https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v30r4
[v30r3]: https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v30r3
[v29r5]: https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v29r5
[v29r4]: https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v29r4
[v28r2p1]: https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v28r2p1