<commit_before>% ROOT Version 6.08 Release Notes
% 2015-11-12
<a name="TopOfPage"></a>

## Introduction

ROOT version 6.08/00 is scheduled for release in May, 2016.

For more information, see:

[http://root.cern.ch](http://root.cern.ch)

The following people have contributed to this new version:

 <NAME>, CERN, CMS,\
 <NAME>, CERN/SFT,\
 <NAME>, CERN/SFT,\
 <NAME>, Fermilab,\
 <NAME>, CERN/SFT,\
 <NAME>, CERN/SFT,\
 <NAME>, CERN/SFT,\
 <NAME>, CERN/SFT,\
 <NAME>, Fermilab, CMS,\
 <NAME>, LBNL, PyRoot,\
 <NAME>, GSI, http,\
 <NAME>, CERN/SFT,\
 <NAME>, CERN/SFT,\
 <NAME>, CERN/SFT,\
 <NAME>, CERN/SFT,\
 <NAME>, CERN/SFT,\
 <NAME>, CERN/IT,\
 <NAME>, Fermilab,\
 <NAME>, CERN/SFT,\
 <NAME>, CERN/SFT,\
 <NAME>, CERN/LHCb,\
 <NAME>, CERN/IT,\
 <NAME>, UCSD/CMS, Eve,\
 <NAME>, Fermilab/CMS,\
 <NAME>, NIKHEF/Atlas, RooFit

<a name="core-libs"></a>

## General

* Remove many instances of new warnings issued by gcc 6.1
* Significant update of the valgrind suppression file to hide intentional lack
of delete of some entities at the end of the process.
* Resolved several memory leaks.

## Core Libraries

ROOT prepares for [cxx modules](http://clang.llvm.org/docs/Modules.html). One of
the first requirements is its header files to be self-contained (section "Missing
Includes"). ROOT header files were cleaned up from extra includes and the missing
includes were added.

This could be considered as backward incompatibility (for good however). User
code may need to add extra includes, which were previously resolved indirectly
by including a ROOT header. For example:

  * TBuffer.h - TObject.h doesn't include TBuffer.h anymore. Third party code,
    replying on the definition of TBufer will need to include TBuffer.h, along
    with TObject.h.
  * TSystem.h - for some uses of gSystem.
  * GeneticMinimizer.h
  * ...

Other improvements, which may cause compilation errors in third party code:
  * If you get std::type_info from Rtypeinfo.h, type_info should be spelled
    `std::type_info`.

Also:
  * `TPluginManager` was made thread-safe [ROOT-7927].
  * On MacOSX, backtraces are now generated without external tools [ROOT-6667].

### Containers

* A pseudo-container (generator) was created, ROOT::TSeq<T>. This template is inspired by the xrange built-in function of Python. See the example [here](https://root.cern.ch/doc/master/cnt001__basictseq_8C.html).

### Meta Library

Add a new mode for `TClass::SetCanSplit` (2) which indicates that this class and any derived class should not be split.  This included a rework the mechanism checking the base classes.  Instead of using `InheritsFrom`, which lead in some cases, including the case where the class derived from an STL collection, to spurrious autoparsing (to look at the base class of the collection!), we use a custom walk through the tree of base classes that checks their value of `fCanSplit`.  This also has the side-effect of allowing the extension of the concept 'base class that prevent its derived class from being split' to any user class.  This fixes [ROOT-7972].


### Dictionaries

* Genreflex and rootcling cannot generate capability files anymore.
* Fix ROOT-7760: Fully allow the usage of the dylib extension on OSx.
* Fix ROOT-7879: Prevent LinkDef files to be listed in a rootmap file and use (as the user actually expects) the header files #included in the linkdef file, if any, as the top level headers.
* Add the *noIncludePaths* switch both for rootcling and genreflex to allow to loose track of the include paths in input to the dictionary generator.
* Fix handling of template parameter pack in the forward declaration printer. [ROOT-8096]
* Do not autoparse headers for classes in the pch.
* Avoid autoparse on IsForeign() if possible.
* Check for new-style empty pcm with key named "EMPTY" created since commit <KEY>.
* Do not insert macro definition of __ROOTCLING__ into the pch.

### Interpreter Library

* llvm / clang have been updated to r274612.
* The GCC5 ABI is now supported [ROOT-7947].
* Exceptions are now caught in the interactive ROOT session, instead of terminating ROOT.
* A ValuePrinter for tuple and pair has been added to visualise the content of these entities at the prompt.
* When interpreting dereferences of invalid pointers, cling will now complain (throw, actually) instead of crash.
* Resolve memory hoarding in some case of looking up functions [ROOT-8145]

## Parallelisation

* Three methods have been added to manage implicit multi-threading in ROOT: `ROOT::EnableImplicitMT(numthreads)`, `ROOT::DisableImplicitMT` and `ROOT::IsImplicitMTEnabled`. They can be used to enable, disable and check the status of the global implicit multi-threading in ROOT, respectively.
* Even if the default reduce function specified in the invocation of the `MapReduce` method of `TProcPool` returns a pointer to a `TObject`, the return value of `MapReduce` is properly casted to the type returned by the map function.
* Add a new class named `TThreadedObject` which helps making objects thread private and merging them.
* Add tutorial showing how to fill randomly histograms using the `TProcPool` class.
* Add tutorial showing how to fill randomly histograms from multiple threads.

## I/O Libraries

* Support I/O of std::unique_ptrs and STL collections thereof.
* Custom streamers need to #include TBuffer.h explicitly (see [section Core Libraries](#core-libs))
* Check and flag short reads as errors in the xroot plugins. This fixes [ROOT-3341].
* Added support for AWS temporary security credentials to TS3WebFile by allowing the security token to be given.
* Resolve an issue when space is freed in a large `ROOT` file and a TDirectory is updated and stored the lower (less than 2GB) freed portion of the file [ROOT-8055].


## TTree Libraries

* Do not automatically setup read cache during TTree::Fill(). This fixes [ROOT-8031].
* Make sure the option "PARA" in TTRe::Draw is used with at least tow variables [ROOT-8196].
* The with `goff` option one can use as many variables as needed. There no more
  limitation, like with the options `para`and `candle`.
* Fix detection of errors that appears in nested TTreeFormula [ROOT-8218]

### Fast Cloning

We added a cache specifically for the fast option of the TTreeCloner to significantly reduce the run-time when fast-cloning remote files to address [ROOT-5078].  It can be controlled from the `TTreeCloner`, `TTree::CopyEntries` or `hadd` interfaces.  The new cache is enabled by default, to update the size of the cache or disable it from `TTreeCloner` use: `TTreeCloner::SetCacheSize`.  To do the same from `TTree::CopyEntries` add to the option string "cachesize=SIZE".  To update the size of the cache or disable it from `hadd`, use the command line option `-cachesize SIZE`.  `SIZE` shouyld be given in number bytes and can be expressed in 'human readable form' (number followed by size unit like MB, MiB, GB or GiB, etc. or SIZE  can be set zero to disable the cache.

### Other Changes
<commit_msg>Update Release Notes<commit_after>% ROOT Version 6.08 Release Notes
% 2015-11-12
<a name="TopOfPage"></a>

## Introduction

ROOT version 6.08/00 is scheduled for release in May, 2016.

For more information, see:

[http://root.cern.ch](http://root.cern.ch)

The following people have contributed to this new version:

 <NAME>, CERN, CMS,\
 <NAME>, CERN/SFT,\
 <NAME>, CERN/SFT,\
 <NAME>, Fermilab,\
 <NAME>, CERN/SFT,\
 <NAME>, CERN/SFT,\
 <NAME>, CERN/SFT,\
 <NAME>, CERN/SFT,\
 <NAME>, Fermilab, CMS,\
 <NAME>, LBNL, PyRoot,\
 <NAME>, GSI, http,\
 <NAME>, CERN/SFT,\
 <NAME>, CERN/SFT,\
 <NAME>, CERN/SFT,\
 <NAME>, CERN/SFT,\
 <NAME>, CERN/SFT,\
 <NAME>, CERN/IT,\
 <NAME>, Fermilab,\
 <NAME>, CERN/SFT,\
 <NAME>, CERN/SFT,\
 <NAME>, CERN/LHCb,\
 <NAME>, CERN/IT,\
 <NAME>, UCSD/CMS, Eve,\
 <NAME>, Fermilab/CMS,\
 <NAME>, NIKHEF/Atlas, RooFit

<a name="core-libs"></a>

## General

* Remove many instances of new warnings issued by gcc 6.1
* Significant update of the valgrind suppression file to hide intentional lack
of delete of some entities at the end of the process.
* Resolved several memory leaks.

## Core Libraries

ROOT prepares for [cxx modules](http://clang.llvm.org/docs/Modules.html). One of
the first requirements is its header files to be self-contained (section "Missing
Includes"). ROOT header files were cleaned up from extra includes and the missing
includes were added.

This could be considered as backward incompatibility (for good however). User
code may need to add extra includes, which were previously resolved indirectly
by including a ROOT header. For example:

  * TBuffer.h - TObject.h doesn't include TBuffer.h anymore. Third party code,
    replying on the definition of TBufer will need to include TBuffer.h, along
    with TObject.h.
  * TSystem.h - for some uses of gSystem.
  * GeneticMinimizer.h
  * ...

Other improvements, which may cause compilation errors in third party code:
  * If you get std::type_info from Rtypeinfo.h, type_info should be spelled
    `std::type_info`.

Also:
  * `TPluginManager` was made thread-safe [ROOT-7927].
  * On MacOSX, backtraces are now generated without external tools [ROOT-6667].

### Containers

* A pseudo-container (generator) was created, ROOT::TSeq<T>. This template is inspired by the xrange built-in function of Python. See the example [here](https://root.cern.ch/doc/master/cnt001__basictseq_8C.html).

### Meta Library

Add a new mode for `TClass::SetCanSplit` (2) which indicates that this class and any derived class should not be split.  This included a rework the mechanism checking the base classes.  Instead of using `InheritsFrom`, which lead in some cases, including the case where the class derived from an STL collection, to spurrious autoparsing (to look at the base class of the collection!), we use a custom walk through the tree of base classes that checks their value of `fCanSplit`.  This also has the side-effect of allowing the extension of the concept 'base class that prevent its derived class from being split' to any user class.  This fixes [ROOT-7972].


### Dictionaries

* Genreflex and rootcling cannot generate capability files anymore.
* Fix ROOT-7760: Fully allow the usage of the dylib extension on OSx.
* Fix ROOT-7879: Prevent LinkDef files to be listed in a rootmap file and use (as the user actually expects) the header files #included in the linkdef file, if any, as the top level headers.
* Add the *noIncludePaths* switch both for rootcling and genreflex to allow to loose track of the include paths in input to the dictionary generator.
* Fix handling of template parameter pack in the forward declaration printer. [ROOT-8096]
* Do not autoparse headers for classes in the pch.
* Avoid autoparse on IsForeign() if possible.
* Check for new-style empty pcm with key named "EMPTY" created since commit <KEY>.
* Do not insert macro definition of __ROOTCLING__ into the pch.

### Interpreter Library

* llvm / clang have been updated to r274612.
* The GCC5 ABI is now supported [ROOT-7947].
* Exceptions are now caught in the interactive ROOT session, instead of terminating ROOT.
* A ValuePrinter for tuple and pair has been added to visualise the content of these entities at the prompt.
* When interpreting dereferences of invalid pointers, cling will now complain (throw, actually) instead of crash.
* Resolve memory hoarding in some case of looking up functions [ROOT-8145]

## Parallelisation

* Three methods have been added to manage implicit multi-threading in ROOT: `ROOT::EnableImplicitMT(numthreads)`, `ROOT::DisableImplicitMT` and `ROOT::IsImplicitMTEnabled`. They can be used to enable, disable and check the status of the global implicit multi-threading in ROOT, respectively.
* Even if the default reduce function specified in the invocation of the `MapReduce` method of `TProcPool` returns a pointer to a `TObject`, the return value of `MapReduce` is properly casted to the type returned by the map function.
* Add a new class named `TThreadedObject` which helps making objects thread private and merging them.
* Add tutorial showing how to fill randomly histograms using the `TProcPool` class.
* Add tutorial showing how to fill randomly histograms from multiple threads.

## I/O Libraries

* Support I/O of std::unique_ptrs and STL collections thereof.
* Support I/O of std::array.
* Custom streamers need to #include TBuffer.h explicitly (see [section Core Libraries](#core-libs))
* Check and flag short reads as errors in the xroot plugins. This fixes [ROOT-3341].
* Added support for AWS temporary security credentials to TS3WebFile by allowing the security token to be given.
* Resolve an issue when space is freed in a large `ROOT` file and a TDirectory is updated and stored the lower (less than 2GB) freed portion of the file [ROOT-8055].


## TTree Libraries

* Do not automatically setup read cache during TTree::Fill(). This fixes [ROOT-8031].
* Make sure the option "PARA" in TTRe::Draw is used with at least tow variables [ROOT-8196].
* The with `goff` option one can use as many variables as needed. There no more
  limitation, like with the options `para`and `candle`.
* Fix detection of errors that appears in nested TTreeFormula [ROOT-8218]

### Fast Cloning

We added a cache specifically for the fast option of the TTreeCloner to significantly reduce the run-time when fast-cloning remote files to address [ROOT-5078].  It can be controlled from the `TTreeCloner`, `TTree::CopyEntries` or `hadd` interfaces.  The new cache is enabled by default, to update the size of the cache or disable it from `TTreeCloner` use: `TTreeCloner::SetCacheSize`.  To do the same from `TTree::CopyEntries` add to the option string "cachesize=SIZE".  To update the size of the cache or disable it from `hadd`, use the command line option `-cachesize SIZE`.  `SIZE` shouyld be given in number bytes and can be expressed in 'human readable form' (number followed by size unit like MB, MiB, GB or GiB, etc. or SIZE  can be set zero to disable the cache.

### Other Changes

{'fraction_non_alphanumeric': 0.08355968548963545, 'fraction_numerical': 0.013152251608291636, 'mean_word_length': 4.3157294832826745, 'pattern_counts': {'":': 0, '<': 65, '<?xml version=': 0, '>': 65, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1862025', 'n_tokens_mistral': 4154, 'n_tokens_neox': 3925, 'n_words': 1968}