Skip to content
Snippets Groups Projects
CHANGELOG.md 79.8 KiB
Newer Older
# 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](http://keepachangelog.com/en/1.0.0/).

Marco Clemencic's avatar
Marco Clemencic committed
## [v39r2](https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v39r2) - 2024-12-19
Marco Clemencic's avatar
Marco Clemencic committed
This is a minor update just to wrap up 2024. We have some clean up, but mostly
bug fixes.

A special thanks to all the people that contributed to this release:
@bstanisl,
@dabacher,
@fwinkl,
@jcarcell,
@jonrob,
@sailer,
@sponce.

### Changed
- New AsynchronousAlgorithms API (gaudi/Gaudi!1680)
- Histograming/Sink/Utils.h: Use double as type for internal histogram stats calculations (gaudi/Gaudi!1682)
- THistSvc: abort job in case file size is too large (gaudi/Gaudi!1681)
- CompressionSetting: replace deprecated and removed enums (gaudi/Gaudi!1678)

### Added
- Add parser for `std::map<std::string, std::pair<int, int>>` properties (!1676)

### Fixed
Marco Clemencic's avatar
Marco Clemencic committed
- `Histograming/Sink/Utils.h`: Fix calculation of stats for (profile) histograms (gaudi/Gaudi#351, gaudi/Gaudi!1684)
Marco Clemencic's avatar
Marco Clemencic committed
- Cleanup headers and imports (gaudi/Gaudi!1645)
- Fixed ROOT Sink for Profile histograms 1D (gaudi/Gaudi#347, gaudi/Gaudi!1675)
- Improve pytest coverage report modules selection (gaudi/Gaudi!1679)
- Polishing of GaudiHistoArray and its test based on #346 (gaudi/Gaudi#346, gaudi/Gaudi!1674)
- Fixes for various cppcheck defects (gaudi/Gaudi!1670, gaudi/Gaudi!1672, gaudi/Gaudi!1673)
- Fix potential overflow in sscanf usage (gaudi/Gaudi!1669)
- SmartDataObjectPtr: fix assignment operator (gaudi/Gaudi!1668)


## [v39r1](https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v39r1) - 2024-10-31
Today we have a minor release collecting a number of bugfixes and improvements.
In particular there are several fixes and usability improvements for
`Accumulators::Histogram` (gaudi/Gaudi!1643, gaudi/Gaudi!1639, gaudi/Gaudi!1646,
gaudi/Gaudi!1641, gaudi/Gaudi!1652, gaudi/Gaudi!1651) and in the new `pytest`
based tests (gaudi/Gaudi!1631, gaudi/Gaudi!1659, gaudi/Gaudi!1644, gaudi/Gaudi!1660).

We have a couple of important changes worth mentioning:
- an improvement that was added to [v38r1p1](https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v39r0) (gaudi/Gaudi!1648)
- a fix for the new asynchronous algorithms (gaudi/Gaudi!1653)

Please, note that a few old (deprecated) APIs noe issue deprecation warnings and
will be removes in v40r0 (gaudi/Gaudi!1637).

A special thanks to all the people that contributed to this release:
@bstanisl,
@dmagdali,
@fwinkl,
@jonrob,
@rquaglia,
@sponce,
@staider,
@jcarcell.

### Changed
- Improved usability of HistogramArray (lhcb/Lbcom#12, gaudi/Gaudi!1643)
- Print more informations about histograms in the MessageSvc (gaudi/Gaudi!1639)
- Deprecate obsolete ISvcLocator APIs (Gaudi < v22) (gaudi/Gaudi!1637)
- Use pytest_runtest_logreport instead of pytest_runtest_makereport (gaudi/Gaudi!1631)
- Make NTupleName a property of the NTupleWriter (gaudi/Gaudi!1650)
- Improvements to pytest helpers (gaudi/Gaudi!1659)
- Remove compatibility with Python 2 in genconf.cpp (gaudi/Gaudi!1642)
- Convert existing pytest tests using run_gaudi to GaudiExeTest (gaudi/Gaudi#335, gaudi/Gaudi!1644)

### Added
- Add default 'count messages' test in GaudiExeTest (gaudi/Gaudi!1660)
- Port changes in v38r1-patches to master (gaudi/Gaudi!1655)
  - Add `NTupleSvc.BasketSize` property and forward in RCWNTupleCnv Branch creation (gaudi/Gaudi!1648)
- Expose buffer type via histogram (gaudi/Gaudi!1646)
- Expose axis in the new Histogram API (gaudi/Gaudi!1641)
- Added testing for std::optional functionality of Gaudi::NamedRange (gaudi/Gaudi#340, gaudi/Gaudi!1640)

### Fixed
- Restore fix for #233 (gaudi/Gaudi!1665)
- Fix handling of env variables in options arguments (gaudi/Gaudi#343, gaudi/Gaudi!1661)
- Fixed definition of StaticWeightedProfileHistogram. The InputTransform was not correct (gaudi/Gaudi!1652)
- Fix handling of 'path/to/file:some_suffix' in test arguments (gaudi/Gaudi!1658, gaudi/Gaudi!1666)
- Add missing std::move in Buffer move constructor and add unit test for moving a histogram buffer (gaudi/Gaudi!1651)
- Asynchronous algorithm fixes (gaudi/Gaudi!1653)
- Prevent spurious failures from pre-commit in MRs from forks (gaudi/Gaudi!1662)


Marco Clemencic's avatar
Marco Clemencic committed
## [v39r0](https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v39r0) - 2024-09-23
This major release of Gaudi features a number of backward incompatible changes that have been waiting
for a chance of being integrated, like

- remove the deprecated GaudiAlg (gaudi/Gaudi#322)
- replace *blocking* algorithms with *asynchronous* algorithms (gaudi/Gaudi!1553)
- allow delayed initialization of counter based histograms and configure them via properties (gaudi/Gaudi!1586)
  - note: `Gaudi::Accumulators::Histogram` etc. is now constructed at initialization time
    and implies the declaration of a property to be able to set axes properties. The old behaviour
    is available through `Gaudi::Accumulators::StaticHistogram` etc.
- update baseline version of dependencies to LCG 104 (gaudi/Gaudi#289)
  - the code is tested against, for example, Boost >= 1.82, ROOT >= 6.28/04, Python >= 3.9.12, fmtlib >= 10
  - compilation requires gcc >= 13, C++ >= 20, CMake >= 3.19
- deprecate some old APIs and headers (gaudi/Gaudi!1634, gaudi/Gaudi!761)
  - to be removed in gaudi/Gaudi%v40r0

I also want to mention that as of this release we are enforcing the convention that
the form `#include "some_header.h"` is only used for actual relative paths while for all other
includes we must use `#include <some_header.h>`. See gaudi/Gaudi#300 for the details.

Note that the fact that we do not run test builds with C++17 means that we do not
require anymore merge requests to be C++17 compatible.

These big backward incompatible changes are accompanied by some backward compatible new features

- `AvalancheSchedulerSvc` now can dump the data dependencies in a graph file (`.dot` or `.md`) (gaudi/Gaudi!1561)
- QMTest (`.qmt`) tests have been migrated to pytest thanks to new helper classes and plugins (gaudi/Gaudi!1605)

Of course, we also have a fair collection of fixes (listed below).

A special thanks to all the people that contributed to this release:
@bstanisl,
@cvarni,
@dmagdali,
@elmsheus,
@fwinkl,
@graven,
@jcarcell,
@sponce,
@staider.

### Changed
- Deprecate hacks needed to support Gaudi v20 API (gaudi/Gaudi!1634)
- Use include with quotes only for relative paths (gaudi/Gaudi#300, gaudi/Gaudi!1572)
- Remove GaudiAlg and all references to it (gaudi/Gaudi#322, gaudi/Gaudi!1628)
- Make Histograms configurable via properties (gaudi/Gaudi#206, gaudi/Gaudi!1586)
- Deprecate old parsers headers (gaudi/Gaudi!761)
- Replace the copyright check in gitlab-ci with with a pre-commit hook (gaudi/Gaudi!1635)
- Drop compatibility with fmtlib < 8 (gaudi/Gaudi#268, gaudi/Gaudi!1630)
- Reduce the visibility of operator<< and several others (gaudi/Gaudi!1623)
- HiveDataBroker: make dependency resolution deterministic (lhcb/DaVinci#215, lhcb/DaVinci#216, gaudi/Gaudi!1617)
- Delete deprecated `DataObjIDProperty.h` header (gaudi/Gaudi!1614)
- Drop `StalledEventMonitor` and `WatchdogThread` (gaudi/Gaudi#312, gaudi/Gaudi!1592)
- Remove comparison of `SmartRef` to integer (gaudi/Gaudi!1554)
- ToolSvc: replace two separate members which _must_ be in sync with a single dedicated type (gaudi/Gaudi!1547)
- ITHistSvc: remove one deprecated regHist interface (gaudi/Gaudi#319, gaudi/Gaudi!1610)
- Introduce asynchronous algorithms (gaudi/Gaudi!1553)
- Update versions of LCG (gaudi/Gaudi#289, gaudi/Gaudi!1606)
- Remove the requirement of having an `__init__.py` in every Python directory (gaudi/Gaudi#307, gaudi/Gaudi!1607)

### Added
- Added `std::optional` functionality to Gaudi::NamedRange (gaudi/Gaudi!1624)
- Parsers: instantiate property parser for vector<vector<int>> (gaudi/Gaudi!1633)
- Extend `gaudi_add_pytest` with coverage support (gaudi/Gaudi#274, gaudi/Gaudi!1551)
- Implement `GaudiExeTest` base test class and migrate QMTest tests to pytest (gaudi/Gaudi!1605)
- Declare parsers for `std::[unordered_]set` properties (gaudi/Gaudi!1613)
- Implementation of the File Service (gaudi/Gaudi!1599, gaudi/Gaudi!1615)
- Add option to dump data dependencies as `.dot` or `.md` files (gaudi/Gaudi!1561)
- genconf: add command line option to select configurable types to generate (gaudi/Gaudi!1601)
- Added callback feature in Gaudi Algorithms (gaudi/Gaudi!1585)

### Fixed
- MessageSvcSink: fix entities filter to correctly include histograms (gaudi/Gaudi!1638)
- Use report_error for newer versions of fmt (gaudi/Gaudi!1627, gaudi/Gaudi#328, gaudi/Gaudi!1622)
- Fix use of `gaudirun.py path/to/file.py:func` in case the module uses `__file__` (gaudi/Gaudi#336, gaudi/Gaudi!1629)
- Fix tests when `CMAKE_BUILD_TYPE` is not set (gaudi/Gaudi#326, gaudi/Gaudi!1626)
- Fix the `NTupleWriter` algorithm to handle `DataObject*` and `AnyDataWrapperBase*` correctly in `BranchWrapper` (gaudi/Gaudi!1625)
- THistSvc: fix object types on read-back (gaudi/Gaudi!1620)
- Fixed `nEntries` for weighted histograms (gaudi/Gaudi#325, gaudi/Gaudi!1619)
- Improvements to `gaudi_add_pytest` (gaudi/Gaudi!1621)
- Add missing fstream includes triggered by using boost 1.86 (gaudi/Gaudi!1618)
- Add missing include for clang19 (gaudi/Gaudi!1616)
- Set Service semantics to ApplicationMgr Runable and EventLoopMgr properties (gaudi/Gaudi#309, gaudi/Gaudi!1611)
- Add fmtlib support to EventContext (gaudi/Gaudi#311, gaudi/Gaudi!1597)
- Improve compiler detection for pragma directives (gaudi/Gaudi!1565)
- Fix clang warning introduced with gaudi/Gaudi!1553 (gaudi/Gaudi!1612)
- cppcheck fixes (code quality) (gaudi/Gaudi!1609)


Marco Clemencic's avatar
Marco Clemencic committed
## [v38r3p1](https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v38r3p1) - 2024-10-22
This release is integrating the changes from [v38r1p1](https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v38r1p1)
into v38r3.

### Added
- Add `NTupleSvc.BasketSize` property and forward in RCWNTupleCnv Branch creation (gaudi/Gaudi!1648)


## [v38r3](https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v38r3) - 2024-06-28
This is a minor release to collect all pending backward compatible changes and fixes
before integrating the backward incompatible changes scheduled for v39r0.

### Changed
- Use `string_view` consistently in parse methods (gaudi/Gaudi!1594)
- Add hard limit on test stdout/err size (gaudi/Gaudi#313, gaudi/Gaudi!1595)
- Introduce a new way to check timeout on events (gaudi/Gaudi#287, gaudi/Gaudi!1589)
- Use Ruff for Python linting and formatting (gaudi/Gaudi#298, gaudi/Gaudi!1591)

### Fixed
- `listcomponents`: skip factories from other libraries (gaudi/Gaudi!1603)
- Fix building with Catch2 v3 (gaudi/Gaudi!1600)
- `GaudiTestSuite`: pre-commit fixes (gaudi/Gaudi!1602)
- Fix race condition in `PersistencySvc::addCnvService` (gaudi/Gaudi#314, gaudi/Gaudi!1598)
- Improve `BranchWrapper` implementation (gaudi/Gaudi!1596)


Marco Clemencic's avatar
Marco Clemencic committed
## [v38r2](https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v38r2) - 2024-05-16
A minor release with a number of fixes and some new features.

In particular I want to highlight the addition of a new algorithm that allows
thread-safe writing of NTuples (gaudi/Gaudi!1577). For the moment it uses TTree as
backend but we plan to add RNTuple support soon. A minor issue is that it cannot
share the output file with the `HistogramSvc` or `Gaudi::Histograming::Sink::Root`,
but there are plans to address it.

Also worth noticing that we started to populate the GaudiExample directory.
It will require some structure and polishing, but it's a start.

### Added
- Implement the `NTuple::Writer` and `NTuple::GenericWriter` algorithms for thread-safe NTuple writing (gaudi/Gaudi!1577, gaudi/Gaudi!1588)
- `AvalancheSchedulerSvc`: include eventID in scheduler dump (gaudi/Gaudi!1579)
- Added a first example in GaudiExample featuring a tiny experiment code (gaudi/Gaudi!1575)
- Add `RootCnvSvc` option to write ROOT files in 'forward compatibility' mode (gaudi/Gaudi#303, gaudi/Gaudi!1573)
- Introduced extra parameter to `ThreadPoolSvc` initPool to allow increase the max allowed parallelism of TBB. (gaudi/Gaudi!1567)

### Fixed
- Fix a couple of weird method signatures in `AlgorithmNode` (gaudi/Gaudi!1590)
- Fix the `HiveSlimEventLoopMgr` exit code when there is a failure in the algorithms (gaudi/Gaudi!1576)
- Fix some includes to build against boost v1.85.0 with gcc12.3 (gaudi/Gaudi!1587)
- Resolve "`AlgContextSvc` may dereference a `nullptr`" (gaudi/Gaudi#304, gaudi/Gaudi!1583)
- Don't use the deprecated `PySys_SetArgv` (gaudi/Gaudi!1578)
- Use the value of `m_scheduledStop` instead of simply ignoring it in `HiveSlimEventLoopMgr` (gaudi/Gaudi#288, gaudi/Gaudi!1545)
- Improved performance of conversion of profile histograms to ROOT (gaudi/Gaudi#305, gaudi/Gaudi!1574)
- Add missing includes for gcc14 (gaudi/Gaudi!1580, gaudi/Gaudi!1581)
- Correctly detect and report a special case of corrupted ROOT file (gaudi/Gaudi#301, gaudi/Gaudi!1571)
- Use Boost IO State Saver to restore initial ostream flags (gaudi/Gaudi#295, gaudi/Gaudi!1570)
- Avoid implicit conversion from float to double (gaudi/Gaudi#299, gaudi/Gaudi!1569)


## [v38r1p1](https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v38r1p1) - 2024-10-18
This patch release is needed by LHCb to pick up a small extension to `NTupleSvc`
so that we can fine tune the basket size of the `TTree`s we produce.

### Added
- Add `NTupleSvc.BasketSize` property and forward in RCWNTupleCnv Branch creation (gaudi/Gaudi!1648)


Marco Clemencic's avatar
Marco Clemencic committed
## [v38r1](https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v38r1) - 2024-03-15
This backward compatible release of Gaudi features a few fixes and improvements, and a
major step towards some proper polishing an refreshing of the examples.

The `GaudiExamples` directory started as a place to host examples, but evolved in a
collection of tests. Examples should be tested, of course, but we ended up keeping
there tests for backward compatibility with legacy code that were not meant to be
used as examples (see gaudi/Gaudi#254). With this release `GaudiExamples` becomes
`GaudiTestSuite`, leaving the room for development of proper examples. For backward
compatibility we kept some of the exported classes, which are considered deprecated
and will be removed in v39r0 (see gaudi/Gaudi#293).

### Changed
- Rename (Gaudi)Examples to (Gaudi)TestSuite (gaudi/Gaudi!1557)
- Fix node properties in `PrecedenceGraph`, update precedence related scripts (gaudi/Gaudi!1560)
- GaudiPython: sort `set` properties before storing in catalogue (gaudi/Gaudi!1549)

### Added
- Add the possibility to have variable bin size in Monitoring histograms (gaudi/Gaudi!1564)
- Add a `.git-blame-ignore-revs` file with a few formatting commits (gaudi/Gaudi!1558)

### Fixed
- More reliable handling of `\n` in test stdout diff (gaudi/Gaudi#291, gaudi/Gaudi!1563)
- Reset `std::hex` immediately (gaudi/Gaudi!1555)
- Use `fmt::runtime` when compiling with GCC 11 (gaudi/Gaudi!1559)
- Make reproducible_write test work when `GAUDIAPPNAME` is set (gaudi/Gaudi#290, gaudi/Gaudi!1562)
- Fixed behavior of `reset` in Monitoring Hub (gaudi/Gaudi!1552)


## [v38r0](https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v38r0) - 2024-01-25
This new major release includes a number of small/technical backward incompatible changes
(meaning that you may or may not be affected by them depending of which parts of Gaudi you use),
but also a couple of more visible changes:

- GaudiAlg is not built anymore by default, but still present and will be removed in a future release
- GaudiPartProp has been updated backporting the changes developed in the LHCb fork (optional and enabled by default)

This release also features a number of speed and memory improvements, fixes and some clean up.

### Changed
- Remove the code which allows to specify 'alternate' TES locations to be resolved at runtime (gaudi/Gaudi!1543)
- Reorganize Gitlab-CI jobs and update LCG baseline versions (gaudi/Gaudi!1539)
- Avoid warnings for "non-failure" exceptions in functional algorithms (gaudi/Gaudi!1523)
- Streamline MonitoringHub and Sink implementations (gaudi/Gaudi!1535)
- GaudiHandles: use dict as storage for GaudiHandleArray (gaudi/Gaudi!1532)
- Disable GaudiAlg by default (gaudi/Gaudi!1531)
- Remove deprecated OutStreamType property (gaudi/Gaudi!1528)
- Remove remaining Python2 compatibility code (gaudi/Gaudi!1527)
- Remove support of and dependency on nosetests (gaudi/Gaudi!1520)
- Add support for unordered set properties (gaudi/Gaudi!1503)

### Added
- New version of PartProp service (gaudi/Gaudi!1493)
- Add buffer method for CounterArray (gaudi/Gaudi!1544)
- GaudiHandleArray: support for slice-based access (gaudi/Gaudi!1541)
- Add `ISequencerTimerTool::scopedTimer` to get an RAII wrapper which starts&stops a timer (gaudi/Gaudi!1536)
- Implemented Root like histograms (gaudi/Gaudi#281, gaudi/Gaudi!1530)

### Fixed
- Speed up and clean up HiveDataBrokerSvc, AlgorithmMgr and ToolSvc (gaudi/Gaudi!1508)
- Fix builds with GCC 11 and C++20 (gaudi/Gaudi!1537)
- Improved interface of BaseSink to lower memory usage (gaudi/Gaudi#279, gaudi/Gaudi!1505)
- Use ROOT_CXX_STANDARD if it is already defined by ROOT, otherwise preserve previous behaviour (gaudi/Gaudi!1538)
- Add missing include mutex (gaudi/Gaudi!1534)
- Support GaudiHive in GaudiPython (gaudi/Gaudi!1526)
- Add missing include for gcc14 (gaudi/Gaudi!1533)
- PropertyProxy: fix append to empty default HandleArray (gaudi/Gaudi!1529)


## [v37r2](https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v37r2) - 2023-11-28
Minor fixes in preparation for the next major release.

### Changed
- Deprecate no longer required `concat_alternatives` (gaudi/Gaudi!1513)
- Migrate tests to pytest and various fixes (gaudi/Gaudi!1517 gaudi/Gaudi!1519)

### Fixed
- `GaudiConfig2`: strict type checking for list properties (gaudi/Gaudi!1518)
- Fix booking of n-tuple columns with and without ranges (gaudi/Gaudi#282 gaudi/Gaudi!1522)
- Prefer `std::abs` over `abs` (gaudi/Gaudi!1516, gaudi/Gaudi!1524)
- Fix include for catch2 3.1 and above (gaudi/Gaudi!1515)
- Cleanup of `SmartRef` (gaudi/Gaudi!1512)
- Work around libstdc++ bug (gaudi/Gaudi!1514)


## [v37r1](https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v37r1) - 2023-10-30
This is a minor release meant mostly to address issues with compilation on gcc 13, clang 16 and C++20.
It features as well a number of other fixes and improvements and some clean up.

As of this release I added machine readable citation instructions (see https://citation-file-format.github.io/).

### Changed
- Remove `FindTBB.cmake` to rely on the official `TBBConfig.cmake` (gaudi/Gaudi!1510)
- `genconf`: remove property type comment from Conf files (gaudi/Gaudi!1502)

### Added
- Add citation instructions and helper to prepare new releases (gaudi/Gaudi!1494)

### Fixed
- Work around issue with clang implicit instantiation in C++20 mode. (gaudi/Gaudi!1511)
- `JobOptionSvc`: use stringstream to read job options file (gaudi/Gaudi!1509)
- Fixes for gcc 13, clang 16 and C++20 (gaudi/Gaudi!1501)
- Remove name argument from GaudiConfig2 PropertySemantics (gaudi/Gaudi#275, gaudi/Gaudi!1492)
- Drop a Python 2 compatibility hack and fix handling of bool properties in GaudiPython (gaudi/Gaudi#276, gaudi/Gaudi!1507)
- Fixed unsafe floating point comparisons (gaudi/Gaudi!1490)
- `GaudiConfig2`: minor performance optimizations for Configurable (gaudi/Gaudi!1500)
- Fixed JSON counter dumps validation to ignore changes in order of entries (gaudi/Gaudi!1496)
- Support oneTBB (gaudi/Gaudi#270, gaudi/Gaudi!1495)


## [v37r0](https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v37r0) - 2023-09-14
This is the first major release of Gaudi in a while. This was made necessary to be able to incorporate
a number of backward incompatible changes that have been kept in the backburner until now.

The main (backward incompatible) changes are:
- clean up and improvements to the new monitoring infrastructure
  - custom sinks have to be adapted
- drop of `LIKELY` and `UNLIKELY` preprocessor macros
  - they have been deprecated for long, but waiting for a major release to effectively
    remove the implementation
- make the subdirectory `GaudiAlg` optional
  - still enabled by default, it's not really backward incompatible, but the refactoring
    implies that some minor adaptations might be needed in downstream code

Since this a major release we took the occasion to update the versions of the hooks in
`pre-commit-config.yaml` and that caused some minor changes in the formatting.

In addition we have the usual batch of fixes and some new features.

### Changed
- Update versions in `pre-commit` hooks (gaudi/Gaudi!1415)
- Remove old warning message referring to `CMT` (gaudi/Gaudi!1486)
- Cleanup, fixes and new features around monitoring sinks (gaudi/Gaudi!1439)
- Reorganize files and refactor code to make GaudiAlg optional (gaudi/Gaudi!1444)
- Dropped (UN)LIKELY macro (gaudi/Gaudi!1227)
- Update and simplify gitlab-ci (gaudi/Gaudi!1476)

### Added
- Added support for the HepPDT vesion 3 (gaudi/Gaudi!1488)
- Implement helper class for arrays of counters (gaudi/Gaudi!1484)
- Fire ContextIncident `CONNECTED_NTUPLE_OUTPUT` when opening a ntuple file in RFileCnv (gaudi/Gaudi!1478)
- Check errors in histograms unit tests on top of bin content (gaudi/Gaudi!1480)
- Add `GAUDI_PGO` CMake options to enable builds with Profile Guided Optimizations (gaudi/Gaudi!1472)

### Fixed
- Fix missing Property name in error messages (gaudi/Gaudi#265  gaudi/Gaudi!1468)
- Fix TTree output reading in tests (gaudi/Gaudi#273  gaudi/Gaudi!1489)
- Use `inspect.signature` (if possible) instead of the deprecated `getargspec` (gaudi/Gaudi!1485)
- Never rely on default Gitlab Docker image in gitlab-ci (gaudi/Gaudi!1491)
- Fix performance of Counter destructor by using appropriate containers in Sink (gaudi/Gaudi!1477)
- Hide `RdtscClock.h` to non x86_64 builds, needed for aarch64 (gaudi/Gaudi!1479)
- Minor fix in a CMake error message (gaudi/Gaudi!1481)
- GaudiMP: few minor fixes for Python3 (gaudi/Gaudi!1473)
- Fixed clang12 warnings (gaudi/Gaudi!1471)
- Fix finally helper with C++20 (gaudi/Gaudi!1475)
- Fix build with GAUDI_USE_AIDA=OFF (gaudi/Gaudi!1474)


## [v36r16](https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v36r16) - 2023-07-28
Release requested by LHCb to backport gaudi/Gaudi!1478

### Added
- Fire ContextIncident `CONNECTED_NTUPLE_OUTPUT` when opening a ntuple file in
  RFileCnv (gaudi/Gaudi!1482)


## [v36r15](https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v36r15) - 2023-07-24
This release is needed so that LHCb can pick up a backward compatible version
of gaudi/Gaudi!1477.

### Fixed
- Fix performance of Counter destructor by using appropriate containers in Sink
  (adaptation of gaudi/Gaudi!1477)

## [v36r14](https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v36r14) - 2023-06-19
This release features a number of minor fixes to help downstream projects
work with C++20, plus a few minor fixes.

### Changed
- Make sure `OutputStream` instances are configured with and explicit `Output`
  option (gaudi/Gaudi#262  gaudi/Gaudi!1467)

### Added
- Allow disabling of `FIXTURES_REQUIRED` for qmtests (gaudi/Gaudi!1465)
- Made more methods public in Histograms (gaudi/Gaudi!1460)
- Add support for Gaudi::Property to fmtlib (gaudi/Gaudi!1462)

### Fixed
- Fix delegation of `T == Property&lt;T&gt;` for C++20 (gaudi/Gaudi!1466)
- Fixed improper ordering of stops methods in Sinks (gaudi/Gaudi!1464)
- Fixed usage of histograms with integer Arithmetic (gaudi/Gaudi!1461)


Marco Clemencic's avatar
Marco Clemencic committed
## [v36r13](https://gitlab.cern.ch/gaudi/Gaudi/-/releases/v36r13) - 2023-06-05
This is a minor bugfix release needed by LHCb to pick up some additions.

The most interesting changes in this release are:
- fixes to Python code addressing flake8 reports (now flake8 is also in the pre-commit hooks)
- fixes to be able to compile with C++20
- fixes to be able to run on macOS (some usability improvements are still needed, but no blocker left)

### Changed
- Use `GAUDI_LIBRARY_PATH` instead of `LD_LIBRARY_PATH` on macOS (gaudi/Gaudi!1452)
- Cleanup `SmartRef` (in)equality comparisons (gaudi/Gaudi!1451)
- Remove unused indirection for creating new `LinkManagers` (gaudi/Gaudi!1450)
- Avoid spurious copy of `Stream` (gaudi/Gaudi!1449)
- EventContext: make constructor explicit (gaudi/Gaudi!1446)

### Added
- Add new incident `CONNECTED_INPUT` to detect opening of ROOT files for read (gaudi/Gaudi!1456)
- Add flake8 pre-commit hook (gaudi/Gaudi#263  gaudi/Gaudi!1441)
- Add specialized function to declare pytest tests (gaudi/Gaudi!1440, gaudi/Gaudi!1448, gaudi/Gaudi!1457)
- Add move constructor/assignment to `LinkManager` (gaudi/Gaudi!1447)
- Adds the ability to show the data dependencies of AlgTools (gaudi/Gaudi!1348)

### Fixed
- C++20 fixes (gaudi/Gaudi#266  gaudi/Gaudi!1455)
- Fix compiler error with fmt 10.0.0 (gaudi/Gaudi!1454)
- Fix corner case in QMT file parsing (gaudi/Gaudi!1453)
- GaudiConfig2: fix comparison of sequence properties (gaudi/Gaudi#264  gaudi/Gaudi!1445)
- flake8 fixes (gaudi/Gaudi!1443, gaudi/Gaudi!1442, gaudi/Gaudi!1438, gaudi/Gaudi!1437)
- Fix genconf on macOS (gaudi/Gaudi!1406)


## [v36r12][] - 2023-03-20
Another minor release requested by LHCb.  The main change is that now
`OutputStream` creates the output file during the *start* transition instead of
when trying to write the first selected event.  This means that output files
might be created and left empty rather than not created.  The rationale for
Marco Clemencic's avatar
Marco Clemencic committed
this change is to have a more predictable behaviour (one that does not depend
on the job details).

### Changed
- Always write output files (gaudi/Gaudi!1432)

### Added
- GaudiConfig2: add clone for Configurable (gaudi/Gaudi!1433)

### Fixed
- GaudiKernel: flake8 fixes (gaudi/Gaudi!1434)


## [v36r11][] - 2023-02-27
Just a minor update to pick up some changes that didn't make it for v36r10.

### Added
- Adds `CheckedNamedToolsConfigured` functionality (gaudi/Gaudi!1424)

### Fixed
- Fix log file messages when using `Histograming::Sink::Base` (gaudi/Gaudi!1426)
- Remove `TWebFile` access for http(s) `TURL`s and use default `TFile::Open`
  via davix instead (gaudi/Gaudi!1427)
- Update version of `isort` used in `pre-commit` (gaudi/Gaudi!1429)


Marco Clemencic's avatar
Marco Clemencic committed
## [v36r10][] - 2023-02-14
This is a small maintenance release focusing on fixing bugs. In particular we fixed a
number of issues affecting builds on MacOS.

There are a few changes that should be mostly transparent from the code point of view,
but may produce slightly different printouts.

### Changed
- Use `python3` instead of `python` (gaudi/Gaudi!1418)
- Use MessageSvc to handle ROOT messages (gaudi/Gaudi!1412)
- Switching from histogramPersistencySvc to new Sinks (gaudi/Gaudi!1401)

### Added
- Add algorithm to programmatically enable/disable perf (gaudi/Gaudi!1408)
- PluginServiceV2: allow factories to be deprecated (gaudi/Gaudi!1395)

### Fixed
- Various fixes for MacOS (gaudi/Gaudi!1422 gaudi/Gaudi!1405 gaudi/Gaudi#249)
- Fix gcc11 anonymous namespace warnings (gaudi/Gaudi!1425)
- Fix use of Boost unit test framework in AttribStringParser_test (gaudi/Gaudi!1420)
- Fixes in preparation for LCG 103 (gaudi/Gaudi!1419)
- Fixed minimal build of Gaudi and added CI test job to validate it (gaudi/Gaudi!1417)
- ProcStats: Use mutex lock to make fetch() thread safe. (gaudi/Gaudi!1410)
- Fix fmt for StatEntity for latest fmt versions (gaudi/Gaudi!1409)
- Property: remove deprecation comment on value() (gaudi/Gaudi!1416)
- Fix issue when building Gaudi with Boost 1.81 (gaudi/Gaudi#255  gaudi/Gaudi!1413)
- Make Catch2 based test compatible with Catch2 v3 (gaudi/Gaudi#252  gaudi/Gaudi!1407)
- Fix gcc12 warnings (gaudi/Gaudi!1403)


## v36r9p1 - 2023-02-03
Strictly identical to v36r9 (except for the version number), needed by LHCb for
a special deployment.


## [v36r9][] - 2022-11-21
Just some minor bugfixes and a few (mostly backword compatible) changes in behaviour.

To be noted:
- ROOT file produced by `RootCnvSvc` are now more reproducible
  (gaudi/Gaudi!1380), thanks to a special flag from
  [TFile](https://root.cern/doc/master/classTFile.html#ae82abd48570a83d8aecb2af32eaa324ea31be021b9a54c95db15121c28b69f242),
  in case of problems or for backward compatibility the new behaviour can be
  turned off with the `RootCnvSvc` property `ProduceReproducibleFiles` (dafalt
  is `true`)
- `RootCnvSvc` improves compressibility of files by using larger basket sizes
  (see gaudi/Gaudi!1381), the side effect is that one may notice al larger use
  of VMEM from the job
- we added a few missing `const` in `LinkManager` interface (gaudi/Gaudi!1386),
  but that means that downstream code might fail to build if it was relying on
  `const` instances returning pointer to non-`const` objects
- you will get a runtime error when trying to create histograms with heading or
  trailing whitespaces in titles and labels (gaudi/Gaudi!1397)


- Create reproducible ROOT files and clean up tests (gaudi/Gaudi!1380)
- Do not allow whitespace at front or back of histogram titles or labels (lhcb/Gaudi#3 gaudi/Gaudi!1397)
- Optimise basket sizes created by `RootCnvSvc` (gaudi/Gaudi!1381)
- Avoid unneccessary work if tests are not requested (gaudi/Gaudi!1391)
- Use Gitlab CI DAG pipelines (gaudi/Gaudi!1393)
- More const-correct `LinkManager` interface (gaudi/Gaudi!1386)

- Add test build of public headers (again) (gaudi/Gaudi!1394)
- Add support for `.json` options to `Gaudi.exe` (gaudi/Gaudi!1388)
- Add output dependency checks to `AvalancheSchedulerSvc` (gaudi/Gaudi!1384)

- Fixes to support builds on ARM processors (gaudi/Gaudi!1396)
- Fix use of deprecated Boost headers (gaudi/Gaudi!1400)
- Fix `UnboundLocalError` in `GaudiKernel/Configurable.py` (gaudi/Gaudi!1399)
- Fix detection of platform specific reference files (gaudi/Gaudi#236  gaudi/Gaudi!1398)
- Fix access to Python binary modules from the build tree (gaudi/Gaudi#240  gaudi/Gaudi!1392)
- Fix TProfile creation in ROOT monitoring sink when SetDefaultSumw2 is used (gaudi/Gaudi!1390)
- Use actual counter type when registering to monitoring (gaudi/Gaudi!1389)
- Release the GIL when bootstrapping with `Gaudi.Application` (gaudi/Gaudi!1387)


Marco Clemencic's avatar
Marco Clemencic committed
## [v36r8][] - 2022-10-12
Minor release to pick up some fixes for ATLAS and LHCb.

This release also features some clean up and some improvements to monitoring and testing infrastructure.

### Changed
- Separated `RootHistogramSinkBase` from `RootHistogramSink` (gaudi/Gaudi!1377)
- Avoid worse-case performance issues when computing test diffs (gaudi/Gaudi!1375)
- Remove long deprecated header `CArrayAsProperty.h` (gaudi/Gaudi!1373)

### Added
- Add method to update `Monitoring::Hub::Entity` from JSON data (gaudi/Gaudi!1379)
- Implemented `HistogramArray` class to ease the use of arrays of histograms (gaudi/Gaudi!1372)
- Add execution time of `ValidateOutput` to `BaseTest` output (gaudi/Gaudi!1360)

### Fixed
- Prevent hanging on test timeout with ASan builds (gaudi/Gaudi!1383)
- DataBroker: avoid entering the same producer multiple times as scheduling dependency (gaudi/Gaudi!1382)
- Avoid deprecated `std::iterator` (gaudi/Gaudi!1371)
- Fix race condition in `ServiceManager` (gaudi/Gaudi#237  gaudi/Gaudi!1376)
- Fix test failures when `GAUDIAPPNAME` or `GAUDIAPPVERSION` are set (gaudi/Gaudi#233  gaudi/Gaudi!1374)
- Fix deprecation warnings with Boost 1.79 (gaudi/Gaudi!1370)
- Bootstrap.cpp: Relinquish Python's GIL before calling `executeRun` to allow Python algs in MT mode (gaudi/Gaudi!1369)
- Ensure `MessageSvc` and `JobOptionsSvc` are cleaned up when terminating `ApplicationMgr` (gaudi/Gaudi!1368)


Marco Clemencic's avatar
Marco Clemencic committed
## [v36r7][] - 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
- New improved `Gaudi::Monitoring::JSONSink` (with support for histograms) (gaudi/Gaudi!1362)

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


## [v36r6][] - 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)


Marco Clemencic's avatar
Marco Clemencic committed
## [v36r5][] - 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 &quot;levels&quot; 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)


## [v36r4][] - 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.

Marco Clemencic's avatar
Marco Clemencic committed
### Changed
- Remove unused `LinkManager::removeLink` (gaudi/Gaudi!1294)
- {Merging,Splitting}Transformer: replace vector&lt;string&gt; property with vector&lt;DataObjID&gt; (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)

Marco Clemencic's avatar
Marco Clemencic committed
### 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)

Marco Clemencic's avatar
Marco Clemencic committed
### 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)


Marco Clemencic's avatar
Marco Clemencic committed
## [v36r3][] - 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,
Marco Clemencic's avatar
Marco Clemencic committed
  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 `AlgTool`s 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](https://github.com/psf/black)+[isort](https://pycqa.github.io/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)


Marco Clemencic's avatar
Marco Clemencic committed
## [v36r2][] - 2021-10-18
This is a minor release with a bunch of bugfixes and improvements, mostly needed for LHCb test beam.
Marco Clemencic's avatar
Marco Clemencic committed
### 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 &gt;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)

## [v36r1][] - 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)


## [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)