ROOT version 6.12/04 has been released on 2017-12-13. This is the first release in the 6.12 series.

For more information, see:

The following people have contributed to this new version:

Kim Albertsson, CERN,
Guilherme Amadio, CERN/SFT,
Bertrand Bellenot, CERN/SFT,
Brian Bockelman, UNL,
Rene Brun, CERN/SFT,
Philippe Canal, FNAL,
David Clark, ANL (SULI),
Olivier Couet, CERN/SFT,
Gerri Ganis, CERN/SFT,
Andrei Gheata, CERN/SFT,
Enrico Guiraud, CERN/SFT,
Raphael Isemann, Chalmers Univ. of Tech.,
Sergey Linev, GSI,
Timur Pocheptsov, CERN/SFT,
Pere Mato, CERN/SFT,
Lorenzo Moneta, CERN/SFT,
Axel Naumann, CERN/SFT,
Simon Pfreundschuh,
Danilo Piparo, CERN/SFT,
Fons Rademakers, CERN/SFT,
Enric Tejedor Saavedra, CERN/SFT,
Oksana Shadura, UNL,
Arthur Tsang, CERN/SFT,
Peter van Gemmeren, ANL,
Vassil Vassilev, Princeton Univ./CMS,
Xavier Valls Pla, CERN/UJI,
Wouter Verkerke, NIKHEF/Atlas, RooFit,
Stefan Wunsch, KIT,
Omar Zapata

6.12/00 was skipped; 6.12/02 had a fatal issue in a fundamental component and was never published.

General News

This release now supports building with C++17 enabled using either libstdc++ or libc++. This requires Clang >= 5.0, or GCC >= 7.3.0. At the date of this release, GCC 7.2.0 still does not provide full support to compile ROOT with C++17.

Removed interfaces

The following interfaces have been removed, after deprecation in v6.10.

Core Libraries

   for(auto bcl : TRangeDynCast<TBaseClass>( * cl->GetListOfBases() )) {
     if (!bcl) continue;
     ... use bcl as a TBaseClass*
   for(auto bcl : TRangeDynCast<TBaseClass>( cl->GetListOfBases() )) {
      if (!bcl) continue;
      ... use bcl as a TBaseClass*

Thread safety

Resolved the race conditions inherent to the use of the RecursiveRemove mechanism.

The implementation allows a single reader to take the write lock without releasing the reader lock. It also allows the writer to take a read lock. In other word, the lock is re-entrant for both reading and writing.

The implementation tries to make faster the scenario when readers come and go but there is no writer. In that case, readers will not pay the price of taking the internal lock. Moreover, this RW lock tries to be fair with writers, giving them the possibility to claim the lock and wait for only the remaining readers, thus preventing starvation.


I/O Libraries

  while(...) {
     TObjArray arr;
     ... update the content of "arr"
     buffer << arr;

which would only really stream the array at the first iteration because it will be detected has having the same address and thus assumed to be the same object. We can now do:

  while(...) {
     TObjArray arr;
     ... update the content of "arr"
     buffer.WriteObject(&arr, kFALSE);

where the last argument of WriteObject tells the buffer do not remember this object’s address and to always stream it. This feature is also available via WriteObjectAny.

ROOT::TIOFeatures features; features.Set(ROOT::Experimental::EIOFeatures::kGenerateOffsetMap); ttree_ref.SetIOFeatures(features); - Added GetAutoSave() and SetAutoSave() methods to TBufferMerger, to allow it to accumulate several buffers in memory before merging, to reduce the amount of compression work done due to TTree metadata.

TTree Libraries


New features


Other changes

Histogram Libraries

Math Libraries

RooFit Libraries

TMVA Library

2D Graphics Libraries

3D Graphics Libraries

Geometry Libraries

Database Libraries

Networking Libraries

GUI Libraries

Montecarlo Libraries


Language Bindings

JavaScript ROOT

Upgrade JSROOT to v5.3.1. Following new features implemented:

Bugfixes: - Show TH2 projections also when tooltip is disabled - use z_handle to format Z-axis labels - Support labels on TH3 Z axis - TH1 zooming in 3D mode - Suppress empty {} in TLatex - Add several math symbols for TLatex - Font kind 1 is italic times roman - Do not let expand parent item in hierarchy - Use correct painter to check range - Change proper axis attributes in context menu - Correctly show axis labels on 3D plot - Correctly handle circle (marker kind 24) as marker kind - Correct circle drawing with coordinates rounding - TLatex #frac and #splitline, adjust vertical position - Workaround for y range when fMinimum==fMaximum!=-1111 - Correct tooltips for graph with marker drawing - Support pow(x,n) function in formula - Use pad.fFillColor for frame when fFrameFillColor==0 - Correctly identify horizontal TGaxis with reverse scale - Correctly handle negative line width in exclusion - Tooltips handling for TF1 - Potential mix-up in marker attributes handling - Unzomming of log scale - Ignore not-supported options in TMultiGraph - Correctly use fGridColor from TStyle - Prevent error when TPaveText includes TLine or TBox in list of lines - Bin errors calculations in TProfile - Correctly handle new TF1 parameter coding convention (jsroot#132) - Check if pad name can be used as element id (jsroot#133) - Adjust title position for vertical axis with fTitleOffset==0


Command line tools

Class Reference Guide

Build, Configuration and Testing Infrastructure

This is the last release with the configure/make-based build system. It will be removed; please migrate to the CMake-based build system.

Bugs and Issues fixed in this release

Release 6.12/06

Released on February 9, 2018

Core Libraries

Bugs and Issues fixed in this release

HEAD of the v6-12-00-patches branch

These changes will be part of the future 6.12/08