    Package: GaudiRelease

    Package Coordinator: Marco Clemencic, Charles Leggett, Benedikt Hegner

    Purpose: Gaudi common set of packages

## Gaudi v26r4 (2015-10-09)

### Externals version: LCG_79

### Bug

- [GAUDI-1076] - DataObject defines copy constructor (?) but not assignment operator
- [GAUDI-1079] - race condition in merge_files.py
- [GAUDI-1081] - Compilation with -O0 fails after commit 7bbd190f
- [GAUDI-1082] - GaudiSvc compilation fails with CLHEP 2 after merge request 7
- [GAUDI-1084] - tests hanging forever (after timeout?)
- [GAUDI-1101] - xenv should not stop on SIGSTOP
- [GAUDI-1103] - minor (rare) problem with the fix to GAUDI-1101
- [GAUDI-1105] - Directory creation race condition in install.py

### Improvement

- [GAUDI-1056] - attach gdb to gaudi process with command line option
- [GAUDI-1089] - Functions added to GaudiUtils that allow generation of random numbers from integer and string input
- [GAUDI-1092] - make IStateful baseclass of IAlgTool, IAlgorithm and IService
- [GAUDI-1093] - replace use of (deprecated) Python module "commands"
- [GAUDI-1094] - Provide (and use) C++11 smart pointer 'look and feel' for SmartIF
- [GAUDI-1102] - add DataObjID class to GaudiKernel

### New Feature

- [GAUDI-1078] - Update to GaudiAlg to include the caller algorithm name in messages from public tools
- [GAUDI-1091] - extract gaudiComponentHelp from hive

### Task

- [GAUDI-1055] - Allow use of Python configurables and components at build time.
- [GAUDI-1057] - C++11 modernization changes
- [GAUDI-1060] - xenv command should not handle STOP signals, but just forward them to the subprocess
- [GAUDI-1062] - add OpenCL algorithm example
- [GAUDI-1085] - Switch IAppMgrUI inheritance from Interface to INamedInterface and remove the pure virtual name()
- [GAUDI-1086] - Generalize CommonMessaging, and use it to implement the messaging functionality in GaudiAlg/GaudiCommon
- [GAUDI-1088] - restore IncidentSvc debug printout for listeners removal

### User Documentation

- [GAUDI-964] - Update the CMake README.rst

## Gaudi v26r3 (2015-07-14)

### Externals version: LCG_79

### General Changes

- Fixed GAUDI-996: GaudiSequencer calls resetExecuted of subAlgorithms
  (Gerhard Raven)
- Fixed GAUDI-1045: segfault running "LD_PRELOAD=libjemalloc.so gaudirun.py"
  (Marco Clemencic)
- Added Jemalloc profiling.
  (Ben Couturier)
- GAUDI-1042: replaced "static const" with "constexpr" in physics constants.
  (Marco Clemencic)
- GAUDI-1044: allow 'L' numeric suffix in .opts files parsed with Gaudi.exe.
  (Marco Clemencic)
- Added example/test of how to declare a custom factory for an algorithm.
  (Marco Clemencic)
- Minor bugfixes

See also the release notes on JIRA.

### Packages Changes

- GaudiAlg (v15r3):
  - Fixed GAUDI-996: GaudiSequencer calls resetExecuted of subAlgorithms
    (Gerhard Raven)
- Gaudi (v26r3):
  - Fixed GAUDI-1045: segfault running "LD_PRELOAD=libjemalloc.so gaudirun.py"
    (Marco Clemencic)
- GaudiProfiling (v2r6):
  - Added Jemalloc profiling.
    (Ben Couturier)
  - Added test for GAUDI-1045 (segfault with LD_PRELOAD=libjemalloc.so).
    (Marco Clemencic)
- GaudiKernel (v31r6):
  - GAUDI-1042: replaced "static const" with "constexpr" in physics constants.
    (Marco Clemencic)
- GaudiCoreSvc (v3r5):
  - GAUDI-1044: allow 'L' numeric suffix in .opts files parsed with Gaudi.exe.
    (Marco Clemencic)
- GaudiExamples (v26r3):
  - GAUDI-1044: added test
    (Marco Clemencic)
  - Added example/test of how to declare a custom factory for an algorithm.
    (Marco Clemencic)

## Gaudi v26r2 (2015-05-15)

### Externals version: LCGCMT_76root6

### General Changes

- Fixes and improvements to the CMake configuration system
  - Fixed GAUDI-981: -DNDEBUG not passed to genreflex
  - Modified Findtcmalloc.cmake to support new gperftools headers path.
  - Use "c++14" (instead of "c++1y") for gcc >= 5.1
  - LHCBPS-1394: disable optimizations in debug with -do0 BINARY_TAG suffix
  - Fixed GAUDI-1031: improve XML errors report in xenv
  - Fixed GAUDI-1019: use relocatable path for gcc
  - Fixed LBCORE-766: simultaneous use of Qt4 and Qt5
  - Fixed GAUDI-991: toolchain.cmake should fail when a project is missing
  - GAUDI-1012: disable optimization in debug if GAUDI_SLOW_DEBUG=TRUE
  - Fixed GAUDI-1010: too aggressive search of .qmt files
  - Fixed GAUDI-1007: tests in a directory are added in alphabetical order
  (Marco Clemencic)
- LBCORE-716: include path order not correct
- LBCORE-725: relocatability of CMake builds
- added the possibility to extend the toolchain for a project
- GAUDI-1004: avoid cmake segfault when there is a loop in the dependencies between projects.
  (Marco Clemencic)
- GAUDI-1024: Replaced Tokenizer with AttribStringParser or a regular expression.
  (Marco Clemencic)
- GAUDI-986: Improve memory and time usage of application bootstrap with gaudirun.py.
  (Marco Clemencic)
- GAUDI-986: Improve memory and time usage of application bootstrap with gaudirun.py.
  (Marco Clemencic)
- GAUDI-1023: issue a warning when re-declaring a property
  (Marco Clemencic)
- Fixes to build on aarch64 (ARM64).
  (Marco Clemencic)

See also the release notes on JIRA.

### Packages Changes

- GaudiMonitor (v5r4):
  - GAUDI-1024: Replaced Tokenizer with AttribStringParser or a regular expression.
    (Marco Clemencic)
- Gaudi (v26r2):
  - GAUDI-986: Improve memory and time usage of application bootstrap with gaudirun.py.
    (Marco Clemencic)
  - Fixed GAUDI-1033: segfaults when calling Python functions from C++.
    (Marco Clemencic)
- PartPropSvc (v6r3):
  - GAUDI-1024: Replaced Tokenizer with AttribStringParser or a regular expression.
    (Marco Clemencic)
- GaudiSvc (v21r6):
  - GAUDI-1024: Replaced Tokenizer with AttribStringParser or a regular expression.
    (Marco Clemencic)
  - Use C++11 lambdas instead of boost::bind in FileMgr
    (Marco Clemencic)
- GaudiProfiling (v2r5):
  - Modified GoogleAuditor.cpp to support new gperftools headers path.
    (Marco Clemencic)
- RootCnv (v1r23p2):
  - GAUDI-1024: Replaced Tokenizer with AttribStringParser or a regular expression.
    (Marco Clemencic)
- GaudiKernel (v31r5):
  - Improved ToolHandle constructor.
    (Charles Leggett)
  - Fixed GAUDI-312: invalid read in Tokenizer.
    (Stewart Martin-Haugh)
  - GAUDI-1024: Replaced Tokenizer with AttribStringParser or a regular expression.
    - Added Gaudi::Utils::AttribStringParser to replace Tokenizer
    - Added deprecation warning to Tokenizer.h.
    (Marco Clemencic)
  - GAUDI-1023: issue a warning when re-declaring a property
    (Marco Clemencic)
  - GAUDI-1018: Respect VERBOSE setting in genconf and genconfuser.
    (Marco Clemencic)
  - Use C++11 functional instead of boost/function.hpp in IFileMgr.
    (Marco Clemencic)
  - Fixed GAUDI-1028: typo in ConfigurableUser
    (Rosen Matev)
  - Fixed GAUDI-1030: remove Algorithm property "ErrorCount"
    - Renamed the property to "ErrorCounter".
    - Added accessor Algorithm::errorCount().
    (Marco Clemencic)
  - GAUDI-1016: allow checking of GaudiHandle wrapped pointer without retrieving it
    (Marco Clemencic)
  - GAUDI-1011: Support std::tuple and std::array properties in jobs options
    (Sasha Mazurov)
  - Fixed GAUDI-1017: GaudiUtils::Map cannot be used as property after GAUDI-1011
    (Marco Clemencic)
- GaudiPython (v13r5):
  - GAUDI-1009: remove GaudiPython.Bindings.makeClass
    (Marco Clemencic)
  - Faster version of the workaround for ROOT-6697.
    (Rosen Matev)
- GaudiCoreSvc (v3r4):
  - GAUDI-1024: Replaced Tokenizer with AttribStringParser or a regular expression.
    (Marco Clemencic)
- GaudiPolicy (v15r5):
  - Fixed GAUDI-1035: cannot build a satellite project with only GaudiExamples
    (Marco Clemencic)
  - Fixed escaping of special XML/HTML chars in CTestXML2HTML.
    (Marco Clemencic)
  - Select 'dbg' in test reference files if the platform contains 'do0'.
    (Marco Clemencic)
- GaudiCommonSvc (v3r5):
  - Fixed GAUDI-1036: Unchecked StatusCodes.
    (Marco Clemencic)
  - GAUDI-1024: Replaced Tokenizer with AttribStringParser or a regular expression.
    (Marco Clemencic)
  - Fixed GAUDI-1014: Unchecked StatusCode with gcc 4.9
    (Marco Clemencic)
- GaudiExamples (v26r2):
  - Do not build MultiInput example if RootCnvLib is not built (CMake version).
    (Marco Clemencic)
  - Updated test reference files.
    (Marco Clemencic)

## Gaudi v26r1 (2015-02-16)

### Externals version: LCGCMT_74root6

### General Changes

- Fixes and improvements to the CMake configuration system
  - LBCORE-716: include path order not correct
  - LBCORE-725: relocatability of CMake builds
  - added the possibility to extend the toolchain for a project
  - GAUDI-1004: avoid cmake segfault when there is a loop in the dependencies between projects
  (Marco Clemencic)
- Replaced QMTest with a home made test wrapper.
  (Marco Clemencic, Valentin Comte)

### Packages Changes

- Gaudi (v26r1):
  - Fixed GAUDI-1001: '\' and '\n' not correctly interpreted by gaudirun.py
    (Marco Clemencic)
  - Added command line option to restart gaudirun.py from old options (smaller memory footprint) after having parsed the options in Python.
    (Marco Clemencic)
- GaudiKernel (v31r4):
  - Added methods to IToolSvc to get all the tool instances.
    (Marco Clemencic)
  - GAUDI-999: Add code which determines the 'instruction level' of the CPU.
    (Gerhard Raven)
- GaudiPolicy (v15r4):
  - Introduced the Python module GaudiTesting as a replacement for QMTest with the GaudiTest extension.
    (Marco Clemencic, Valentin Comte)
- GaudiCommonSvc (v3r4):
  - Added _PyObject_GC_Malloc to the whitelist of StatusCodeSvc (visible only with gcc4.9).
    (Marco Clemencic)

## Gaudi v26r0 (2015-01-12)

### Externals version: LCGCMT_72root6

### General Changes

- This is the first version officially released with CMake.
- Improvements to the Doxygen documentation (GAUDI-980).
  (Marco Clemencic)
- Minor fixes and improvements in a few tests.
  (Marco Clemencic)

### Packages Changes

- GaudiMonitor (v5r3):
  - Adapted HistorySvc to the changes introduced with GAUDI-995 (backward incompatible change in IAlgManager).
    (Marco Clemencic)
  - Refactored HistorySvc implementation using some C++11 constructs.
    (Marco Clemencic)
- GaudiPluginService (v2r2):
  - Improved Doxygen documentation.
    (Marco Clemencic)
- GaudiSvc (v21r5):
  - Fixed g++ 4.9 warning (unused typedef).
    (Marco Clemencic)
- GaudiProfiling (v2r4):
  - Modified interlprofiler.md to use Doxygen flavour of markdown.
    (Marco Clemencic)
- GaudiKernel (v31r3):
  - GAUDI-992: improve StatusCode::~StatusCode (plus fixes and fine tunings)
    (Gerhard Raven, Marco Clemencic)
  - GAUDI-993: Improve performances of DataSvc::retrieveEntry
    (Gerhard Raven)
  - GAUDI-995: improve Algorithm storage/management in AlgorithmManager
    (Gerhard Raven)
  - Added the class StatusCode::ScopedDisableChecking to ignore all the StatusCode instances produced in a scope.
    (Marco Clemencic)
  - Fixed g++ 4.9 warning (unused typedef).
    (Marco Clemencic)
- GaudiPython (v13r4):
  - Adapted GaudiPython.Bindings to the changes introduced with GAUDI-995 (backward incompatible change in IAlgManager).
    (Marco Clemencic)
- GaudiCoreSvc (v3r2):
  - GAUDI-995: improve Algorithm storage/management in AlgorithmManager
    (Gerhard Raven)
- GaudiPolicy (v15r3):
  - Minor addition to test reference exclusions.
    (Marco Clemencic)
- GaudiRelease (v26r0):
  - Added CMake target to build Doxygen documentation.
    (Marco Clemencic)
- GaudiCommonSvc (v3r3):
  - Modified StatusCodeSvc to report that there is no "unchecked" StatusCode, to simplify the testing (DEBUG).
    (Marco Clemencic)
- GaudiExamples (v26r0):
  - Reorganized and improved StatusCodeSvc tests.
    (Marco Clemencic)
  - Implemented a special test to expose the regression introduced with GAUDI-992 (only in CMake build).
    (Marco Clemencic)
  - Extended StatusCodeSvc tests to check the new class StatusCode::ScopedDisableChecking.
    (Marco Clemencic)

Older versions