The Gaudi Framework  v36r7 (7f57a304)
Changelog

All notable changes to this project will be documented in this file.

Project Coordinators: Marco Clemencic @clemenci, Charles Leggett @leggett

The format is based on Keep a Changelog.

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v36r7">v36r7</a> - 2022-07-29

Minor release needed by LHCb to pick up some fixes.

Note that the re-write of Gaudi::Monitoring::JSONSink is not backward compatible.

Changed

Fixed

  • Allow calling init() twice on a DataHandle (gaudi/Gaudi#221 gaudi/Gaudi!1366)
  • Add missing include of <utility> (gaudi/Gaudi#235 gaudi/Gaudi!1365)
  • Avoid floating point exception during printing in EventSelector (gaudi/Gaudi!1364)
  • Forward forgotten InhibitPathes property from HiveWhiteBoard to DataSvc (gaudi/Gaudi!1361)
  • Fix check for finding PkgConfig (gaudi/Gaudi!1363)
  • Replace std::result_of_t with std::invoke_result_t following its deprecation in C++17 (gaudi/Gaudi!1359)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v36r6">v36r6</a> - 2022-07-11

Same as v36r5, we have several small changes and fixes in this release, as well as the removal of some deprecated and unused code.

Changed

  • Modify FetchLeavesFromFile to use IDataManagerSvc::traverseSubTree (gaudi/Gaudi#232 gaudi/Gaudi!1357)
  • Accumulators: drop unused Boost includes (gaudi/Gaudi#228 gaudi/Gaudi!1349)
  • Use pkgconfig to find gperftools (gaudi/Gaudi#210 gaudi/Gaudi!1354)
  • Delete StatusCodeSvc and its interface (gaudi/Gaudi!1310)
  • EventIDRange c'tor: Don't reset UNDEF values to 0 (gaudi/Gaudi!1347)
  • Cleanup old, unsed and deprecated code in DataHandles (gaudi/Gaudi!1337)
  • Update version of Black used in pre-commit (gaudi/Gaudi!1334)

Added

  • Allow histograms to be saved in custom directories (gaudi/Gaudi!1353)
  • Support writing ROOT files with LZ4 and ZSTD compression (gaudi/Gaudi!1346)
  • Include GaudiException tag() strings in GaudiAlg functional warning/error messages when caught (gaudi/Gaudi!1345)
  • AvalancheSchedulerSvc: Print also event number if a stall is detected (gaudi/Gaudi!1339)
  • Add erase method to PluginSvc Registry class (gaudi/Gaudi!1338)
  • Provide diagnostic information instead of SEGV when a bound tool is disabled (gaudi/Gaudi!1330)

Fixed

  • Resolve race conditions in tests (gaudi/Gaudi#211 gaudi/Gaudi!1356)
  • Improve memory footprint of JobOptionsSvc (gaudi/Gaudi#194 gaudi/Gaudi!1304)
  • Do not use anonymous namespaces in Histograms headers (gaudi/Gaudi!1351)
  • Fix for allowing full customization of Histograms (gaudi/Gaudi!1352)
  • Prevent usage of histograms with wrong number of coordinates (gaudi/Gaudi#226 gaudi/Gaudi!1350)
  • Fix a possible uninitialized variable warning (gaudi/Gaudi!1344)
  • Fix invalid SUCCESS in [Ts]DataSvc::retrieveEntry (gaudi/Gaudi!1333)
  • Make Rndm::Numbers methods const (gaudi/Gaudi!1343)
  • Fix compilation with gcc12. (gaudi/Gaudi!1341)
  • Fix clang warning. (gaudi/Gaudi!1340)
  • Fix and deprecate histogram filling with operator+= (gaudi/Gaudi!1336)
  • Use ofstream from std (gaudi/Gaudi!1335)
  • Change AlgResourcePool to obey isReEntrant() (gaudi/Gaudi!1331)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v36r5">v36r5</a> - 2022-04-04

Several small changes and fixes in this release. It also features the removal of some deprecated and unused code.

Changed

  • Suppress Initialize/Finalize (mis)balance messages (gaudi/Gaudi#215 gaudi/Gaudi!1313)
  • GaudiKernel: remove deprecated setProperties methods (gaudi/Gaudi!1311)
  • StatusCode: remove deprecated checking code (gaudi/Gaudi!1309)
  • Changes for LHCb super project builds (gaudi/Gaudi!1308)
  • Dropped usage of (UN)LIKELY macro (gaudi/Gaudi!1307)

Added

  • Add Trait to write an OpaqueView to the TES which makes the underlying object inaccessible (gaudi/Gaudi!1318)
  • Message: cleanup and add accessors for event ID (gaudi/Gaudi!1325)
  • Extend IFileAccess interface with a read function (gaudi/Gaudi!1317)
  • Add another Gaudi::Functional transformer: SplittingMergingTransformer (gaudi/Gaudi!1315)

Fixed

  • Remove unused lambda captures (clang warning) (gaudi/Gaudi!1326)
  • Fix compilation with nlohman_json 3.10.5 (gaudi/Gaudi#220 gaudi/Gaudi!1324)
  • Fix PluginService segfault at initialize when LD_LIBRARY_PATH is not defined (gaudi/Gaudi!1316)
  • Add missing front() and back() to Functional::vector_of_const_ (gaudi/Gaudi!1323)
  • Fixed computation of "levels" in EvtStoreSvc (gaudi/Gaudi!1322)
  • Remove clearing of seed at initialization (gaudi/Gaudi!1321)
  • Improvements to the Configurable method merge (gaudi/Gaudi!1319)
  • Fix spurious / irrelevant data race in DataObjectHandle and remove unused state (gaudi/Gaudi!1314)
  • Remove redundant lines from Gaudi{Tuple,Histo}Alg definition (gaudi/Gaudi!1312)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v36r4">v36r4</a> - 2022-01-20

This minor release features a few bugfixes, some usability improvements and some small backward incompatible changes that could be as well classified as bugfixes.

Changed

  • Remove unused LinkManager::removeLink (gaudi/Gaudi!1294)
  • {Merging,Splitting}Transformer: replace vector<string> property with vector<DataObjID> (gaudi/Gaudi!1297)
  • ToolBinder: prefer function pointer in constructor over pure virtual inheritance (gaudi/Gaudi!1292)
  • GaudiConfig2: apply OrderedSetSemantics to std::[unordered_]set (gaudi/Gaudi!1298)
  • Change GaudiConfig2 default semantics to use deepcopy of the default (gaudi/Gaudi#114 gaudi/Gaudi!1296)

Added

  • Add example of consuming/producing std::shared_ptr with Gaudi::Functional (gaudi/Gaudi!1303)
  • Allow use of ConfigurableUser specializations in configuration functions (gaudi/Gaudi#213 gaudi/Gaudi!1302)
  • Record the source location of DECLARE_COMPONENT in Python configurables (gaudi/Gaudi#203 gaudi/Gaudi!1299)
  • Extend the gaudirun.py GaudiConfig2 file lookup to allow full path to modules (gaudi/Gaudi#192 gaudi/Gaudi!1301)
  • Add support for multiple input arguments to Merging{,Multi}Transformer (gaudi/Gaudi!1291)

Fixed

  • Fix spurious options mismatch between old and new configurables (gaudi/Gaudi#191 gaudi/Gaudi!1300)
  • IBinder::Box call destruct with the right pointer. (gaudi/Gaudi!1293)
  • Fixes for running tests with LHCb test class (gaudi/Gaudi!1289)
  • Correct conversion to Root histograms in RootHistogramSink (gaudi/Gaudi#212 gaudi/Gaudi!1290)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v36r3">v36r3</a> - 2021-12-09

This is a bugfix release with a couple of changes that technically are backward incompatible because they fix issues that might have gone unnoticed:

  • gaudi/Gaudi!1265 makes the property parser throw an exception in case of problems, instead of silently doing nothing (see gaudi/Gaudi#163)
  • Gaudi::Accumulators counters were copiable but not movable, which was not correct: they should be neither and we fixed it, but this means you cannot use them in vectors and the postfix ++ operator has been removed

An interesting addition in this release is also the support for getting AlgTools as arguments to the operator() of Gaudi::Functional algorithms. Although it might seem strange at first, it allows reducing boilerplate and opens the possibility of introducing tool wrappers that bind a tool with event or condition data, so that the fact that a tool needs some event data is both explicit (event data has to be passed to the tool methods) and hidden from the end user (as the wrapper takes care of the details of data passing).

After the introduction of pre-commit support (gaudi/Gaudi!1261) the merge request review became more difficult as the reformatting of changed files add too much noise, so in this release we reformatted the code with clang-format-11 for C++ and Black+isort for Python (see gaudi/Gaudi!1286).

Changed

  • Change default parsing error policy to Exception (gaudi/Gaudi#163 gaudi/Gaudi!1265)
  • Disable move and copy semantic for the counters (gaudi/Gaudi!1258)

Added

  • Support for binding tools to event and/or conditions data (gaudi/Gaudi!1270 gaudi/Gaudi!1285)
  • Add support to retrieve Tools through Gaudi::Functional's call operator (gaudi/Gaudi!1268)

Fixed

  • THistSvc: cache TObject types (gaudi/Gaudi!1284)
  • Re-organize struct THistID to avoid padding (gaudi/Gaudi!1284)
  • Do not link GaudiGoogleProfiling against tcmalloc and profiler (gaudi/Gaudi!1282)
  • Make sure WorkManager.pool is closed at exit (gaudi/Gaudi!1279)
  • Improve configurables db exclusion (gaudi/Gaudi#209 gaudi/Gaudi!1280)
  • Better (and working) implementation of non mergeable objects in Sinks (gaudi/Gaudi!1278)
  • genconf: remove NaN warning (gaudi/Gaudi!1281)
  • ConfigurableService: copy private tools of services (gaudi/Gaudi#208 gaudi/Gaudi!1277)
  • Fix confusing stray space in printout of HiveDataBroker (gaudi/Gaudi!1276)
  • Allow writing of Gaudi::Range and Gaudi::NamedRange in Gaudi::Functional (gaudi/Gaudi!1275)
  • More natural syntax for histogram constructor (gaudi/Gaudi!1273)
  • Fix tests for change in NetworkX 2.4 (gaudi/Gaudi!1274)
  • Avoid ConfigurableUser leak (gaudi/Gaudi!1269)
  • Allow entities with internal counters not implementing mergeAndRequest (gaudi/Gaudi!1267)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v36r2">v36r2</a> - 2021-10-18

This is a minor release with a bunch of bugfixes and improvements, mostly needed for LHCb test beam.

Changed

  • Use pre-commit to check C++ and Python formatting (gaudi/Gaudi!1261)
  • Faster alg states search (gaudi/Gaudi!1250)
  • Make Gaudi::Functional constructors more paranoid about # of inputs/outputs (gaudi/Gaudi!1249)

Added

  • Add support dumping and loading from JSON/YAML in gaudirun.py (gaudi/Gaudi#200 gaudi/Gaudi!1264)
  • Update Entity to expose mergeAndReset method of internal object (gaudi/Gaudi!1253)
  • Add sink service to dump counter info into a JSON file (gaudi/Gaudi!1248)

Fixed

  • Fix bug in bin indexing for >1D Histograms (gaudi/Gaudi!1266)
  • Do not use FeatureSummary to report found packages (gaudi/Gaudi#181 gaudi/Gaudi!1263)
  • Make BaseTest properly handle tests which return skipped return code (gaudi/Gaudi!1262)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v36r1">v36r1</a> - 2021-09-20

This is a minor release with a bunch of bugfixes and improvements.

Changed

  • Dropped Updater mode for DataHandles (gaudi/Gaudi!1239)
  • Truncate stall output on alg error (gaudi/Gaudi!1245)
  • Replaced last instances of boost::string_ref and boost::optional with std counterparts (gaudi/Gaudi#4, gaudi/Gaudi!1244)

Added

  • Add optional bin labels to Histogram accumulators axes (gaudi/Gaudi!1235)
  • Define some additional matrix types (gaudi/Gaudi!1232)
  • Added TH3 support to histo to/from string conversion (gaudi/Gaudi!1226)

Fixed

  • Fix: private tool used by public tool thinks it is public (gaudi/Gaudi!1251)
  • Type fixes related to -Wconversion (gaudi/Gaudi!1246)
  • Fixes number of entries in ROOT histograms created by RootSink (gaudi/Gaudi!1240)
  • Move computation of bin id from HistoInputType to Axis (gaudi/Gaudi!1236)
  • Fix scan_dict_deps.py to not use directories (gaudi/Gaudi!1241)
  • Fix clang11 warnings (gaudi/Gaudi!1247)
  • Fix memory leak in IncidentSvc and more (gaudi/Gaudi!1238)
  • Correctly group histograms in ROOT files (gaudi/Gaudi!1234)
  • Extend GaudiConfig2 configurable to match Configurables API (gaudi/Gaudi!1230)
  • Optimize TupleObj (gaudi/Gaudi!1228)
  • Use CTest fixtures and --repeat (gaudi/Gaudi!1192)
  • Fixed out of date documentation of the new Histograms (gaudi/Gaudi!1229)
  • Misc fixes and improvement (gaudi/Gaudi!1252, gaudi/Gaudi!1233, gaudi/Gaudi!1231)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v36r0">v36r0</a> - 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)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v35r4">v35r4</a> - 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)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v35r3">v35r3</a> - 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).

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)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v35r2">v35r2</a> - 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).

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)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v35r1">v35r1</a> - 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.

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)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v35r0">v35r0</a> - 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.

Changed

  • Complete rewrite of CMake configuration in modern CMake (gaudi/Gaudi!986, gaudi/Gaudi!922)

Fixed

  • 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)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v34r1">v34r1</a> - 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.

Changed

  • 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)

Added

  • 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)

Fixed

  • 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)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v34r0">v34r0</a> - 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

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)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v33r2">v33r2</a> - 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 (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 MergingTransformers (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)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v33r1">v33r1</a> - 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)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v33r0">v33r0</a> - 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:

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 ToolHandles 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)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v32r2">v32r2</a> - 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 IAsyncEventProcessorexperimental interface introduced in v32r0 (!878) has been replaced with IQueueingEventProcessor (!966)
  • it's now possible to get type information from Python version of DataHandles

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 DataHandles (!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)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v32r1">v32r1</a> - 2019-07-18

Bugfix release, with some backward compatible changes, mostly meant to pick up LCG 96 and ROOT 6.18/00.

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)
  • 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)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v32r0">v32r0</a> - 2019-05-18

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)
  • 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)

Changed

  • Update clang-format to 8 (!872)
  • Factor TES path related code out of GaudiCommon (!904)
  • 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)

Added

  • 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)
  • 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 DataHandles with AnyDataWrapper (!854)
  • Add support for std::chrono::duration in counters (!849)
  • Add the possibility to ask for Mode in python data handle property (!845)

Fixed

  • 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)
  • 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)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v29r5">v29r5</a> - 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.

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v31r0">v31r0</a> - 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)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v30r5">v30r5</a> - 2018-11-15

This release is mainly to revert !462 (Reimplemenation of DataHandle), which caused problems in ATLAS code.

Supersedes 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)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v30r4">v30r4</a> - 2018-11-02 [YANKED]

Improvements, modernization and fixes.

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)

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)

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)

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)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v30r3">v30r3</a> - 2018-08-01

Improvements, modernization and fixes.

Deprecated

Changed

  • 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)

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

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)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v28r2p1">v28r2p1</a> - 2018-06-15

Bugfix release

Fixed

  • Add test and fix of version propagation in KeyedContainer move (!665, #27)

Added

  • Gitlab-CI configuration (!665, backport from master)

<a href="https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v29r4">v29r4</a> - 2018-04-17

Bugfix release.

Fixed

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.