Introduction
ROOT version 6.10/00 has been released on 13 June 2017
For more information, see http://root.cern.ch
The following people have contributed to this new version:
David Abdurachmanov, Kim Albertsson, Guilherme Amadio, Whitney Armstrong, Attila Bagoly, Benjamin Bannier, Wolf Behrenhoff, Bertrand Bellenot, Georgios Bitzes, Brian Bockelman, Will Breaden, Philippe Canal, Santiago Castro, Sylvain Corlay, Olivier Couet, Sergey Divakov, Mattias Ellert, Giulio Eulisse, Gerardo Ganis, Andrei Gheata, Luca Giommi, Konstantin Gizdov, Enrico Guiraud, John Harvey, Ivana Hrivnacova, Filip Ilic, Raphael Isemann, Thomas James, Chris Jones, David Lange, Wim Lavrijsen, Lawrence Lee J, Sergey Linev, Olli Lupton, Spencer Lyon, Shahzad Malik, Maurizio Martinelli, Pere Mato, Lorenzo Moneta, Abhinav Moudgil, Frederich Munch, Jan Musinsky, Axel Naumann, Ajith Pandel, Simon Pfreundschuh, Danilo Piparo, Timur Pocheptsov, Dmitry Polukhin, Fons Rademakers, Martin Ritter, Heshy Roskes, Maarten Scholl, Paul Seyfert, Karl Smith, Martin Storø Nyflott, Matevz Tadel, Enric Tejedor, Diego Torres, Sebastian Uhl, Xavier Valls, Peter Van Gemeren, Vassil Vassilev, Andreas Weiden, Sandro Wenzel, Stefan Wunsch, Omar Zapata, Zhe Zhang, Roman Zulak
Removed interfaces
The following interfaces have been removed, after deprecation in v6.08.
CINT remnants, dysfunctional for ROOT 6
TInterpreter
’s Getgvp()
, Getp2f2funcname(void*)
, Setgvp(Long_t)
, SetRTLD_NOW()
, SetRTLD_LAZY()
.
SetFCN(void*)
from TVirtualFitter, TFitter, TBackCompFitter, TMinuit
TFoam::SetRhoInt(void*)
### RooFit
- Removed deprecated
RooComplex
superseded by std::complex
.
Interpreter
- Automatic declaration of variables (
h = new TH1F(...)
) is only available at the prompt. The side-effects of relying on this in source files is simply too grave. Due to a bug (ROOT-8538), automatically declared variables must currently reside on the top-most scope, i.e. not inside an if
block etc.
- Improved the stack frame information generated by the JIT. By avoiding interleaving of the memory associated to multiple JIT module, the generation of stack trace involving jitted code and the catching of exception going through jitted code has been repaired.
- Interpreted code is now optimized;
.O 0/1/2/3
can be used to change the otpimization level, as well as #pragma cling optimize
.
- The prompt colors are now much more visible, both on terminals with light and dark background.
- Significant speedup of
TMethodCall
.
- One can now run
.x 12file-with@funny=name.C
; it will expect a function called _12file_with_funny_name()
.
Core Libraries
- See “Build, Configuration and Testing Infrastructure” below for changes in the directory structure.
- libCling now exports only a minimal set of symbols.
- Add support for std::array_view also for C++11 builds. The implementation has been modified to work before C++14.
Added TCollection::Notify to allow nofitying more than one object.
TList formulas;
// Add several TTreeFormula to the list;
chain.SetNotify(&formulas);
For classes that need the ClassDef
support, ClassDefInline(ClassName, Version)
now provides it without the need for a dictionary source: all members injected by this ClassDef
flavor are generated by the interpreter.
TObjString
to TString
TObjString::GetString()
now returns a const TString&
to the TString
inside the TObjString
, instead of copying it. This is to prevent very common misunderstanding of the interface.
In several cases, the misunderstanding of the interface caused invalid memory accesses to the already destructed temporary TString
returned by GetString()
, e.g. objStr->GetString().Data()
. This will be fixed automatically by the new return type.
In rare cases, the caller expected GetString()
to return a (non-const) reference to the embedded TString
, e.g. objString->GetString().ReplaceAll("a", "b"); // WRONG!
This will now fail to compile, instead of not doing what the author of the code expected. Please fix that code by using the TObjString::String()
interface, which returns a non-const TString&
: objString->String().ReplaceAll("a", "b");
.
In extremely rare cases, this change breaks a valid use where the temporary TString
was modified and then captured in a new TString
object before the destruction of the temporary: TString str = objStr->GetString().ReplaceAll("a", "b");
. In these rare cases, please use the new function CopyString()
which clearly indicates that it involves a temporary.
Histogram Libraries
- New class
THnChain
was added to provide a TChain
-like experience when working with THnBase
’ed histograms (currently THn
and THnSparse
) from many files, see here. This allows to e.g., interactively adjust axis parameters before performing projections from high-dimensional histograms,
``{.cpp} // Create a chain of histograms called
h`. THnChain chain(“h”);
// Add files containing histograms h
to chain
. chain->AddFile(“file1.root”);
chain->GetXaxis(1)->SetRangeUser(0.1, 0.2);
TH1* projection = chain->Projection(0) ```
TProfile2Poly
Addition of TProfile2Poly
class. It is analogous to TH2D
/TProfile2D
except it allows the creation of profiles of histograms that have polygonal bins. Just for a quick recap some of the functionality includes:
- Creatation of bins that allow filling with Fill()
- Setting the error being calculated as either
kERRORSPREAD
or kERRORMEAN
- Setting the bin content to either the Average or Error in Z for plotting purposes (SetContentToAverage() / SetContentToAverage())
- Merging whole
TProfile2Poly
’s
Two tutorials outlining the use of the added class can be found at: * root/tutorials/hist/tprofile2polyRealistic.C * root/tutorials/hist/tprofile2polyRealisticModuleError.C
Other features added in the Hist Library
- Added option
S
in TEfficiency::Fit
to return a FitResult object
- Improve check in
TEfficiency
for compatibility of weighted histograms
- Fix computation of Chi2 for PoissonLikelihood fits (using Baker-Cousins chi2)
Math Libraries
MathCore
- Improve thread friendliness of the TMinuit class.
- Added a new class
ROOT::Math::KahanSum<T>
for compensated summations
- Modify the internal structure of the FitData classes (
ROOT::Fit::BinData
and ROOT::Fit::UnBinData
) to make them able to support vectorization.
- Add new templated interfaces for function evaluation that support vectorized types
GenVector
- Extend support for Vectorized types (e.g. types from the
Vc
library) in GenVector. Make for exampole the class Plane3D templated on the contained type.
- Add a new method
Transform2D::ApplyInverse
to apply efficiently inverse transformations (it avoids the intermidiate calculations by using Inverse() and then operator() ).
TMatrix
- Add a compiler error when using operator
[i,j]
to assign matrix elements instead of assigning wrong values.
TMVA
- Fixed
TMVA::ROCCurve
class by adding support for weights and improve computation of integral and curve in case of low statistics
- Improved support for multi class classification. TMVA is undergoing an effort to improve support for multi class classification. Fixes and improvements in this release include additional analysis output (1-vs-rest roc curves, confusion matrices) and various bugfixes. Work in this area is still ongoing.
- Apply few bug fixes in the DNN. Make the DNN CPU the default and deprecate the Standard DNN.
- Apply some performance optimizations to BDT.
RooStats
- Add a function computing the Asimov median significance:
RooStats::AsimovSignificance(s,b,sigma_b)
, using as input the expected number of signal events, the background events and optionally the uncertainty in the number of background events.
TTree Libraries
TTreeReader
now supports TEntryList
s, Double32_t
/ Float16_t
.
TTreeReader::SetLastEntry()
has been deprecated. Its name is misleading; please use TTreePlayer::SetEntriesRange()
instead.
TTree::Branch()
now complains for wrong leaf list strings, e.g. “value/F[4]” (which should really be spelled as “value[4]/F”).
- Allow reading of older version of TTreePerfStats (ROOT-8520)
- In
TTree::OptimizeBaskets()
do not call GetBasket(0) to avoid disc reads
- It is now possible to define the precision of the default histogram created by
TTree::Draw
. Three new parameters are available in $ROOTSYS/etcsystem.rootrc
{.cpp} Hist.Precision.1D: float Hist.Precision.2D: float Hist.Precision.3D: float
the default values are float
. They can be set to double
.
- Fix ROOT-8742: TTree::SetBranchAddress could not be invoked safely even when dealing with the same tree obtained from the same file opened in different threads.
- TTree::Branch() now complains if a “name[size]/F” branch specification is passed wrongly (e.g. as “name/F[size]”)
TDataFrame
- Creation of the TDataFrame class. The TDataFrame allows to interact with data stored in columnar format in a functional and intuitive way in order to perform data analysis. Parallelism is accessible simply by activating implicit multi-threading with the ROOT::EnableImplicitMT() function. In a nutshell, the functionality provided is:
- Create and fill histograms with one single method invocation
- Express filtering of entries with strings, lambdas or functions
- Easy creation of efficiencies of cut-flows
- Possibility to run on ranges of entries
- Creating columns not present in the original dataset
- Chain multiple actions to be executed on the same event loop
- Creation of events on-the-fly (e.g. via Pythia or user-define generator functors), with no need for an input TTree
- Snapshot on a rootfile the dataset after cuts and after augmentation with columns created by the user
- Run analyses expressed as chains of actions in parallel in a transparent way for the user See the online documentation for more details
2D Graphics Libraries
- If one used “col2” or “colz2”, the value of
TH1::fMaximum
got modified. This deviated from the behavior of “col” or “colz”. This is now fixed as requested here.
- When the option SAME (or “SAMES”) is used with the option COL, the boxes’ color are computing taking the previous plots into account. The range along the Z axis is imposed by the first plot (the one without option SAME); therefore the order in which the plots are done is relevant.
- With option BOX on 2D histos with negative content:
- do not draw the empty bins as requested here.
- fix the issue mentioned here.
- When several histogram were drawn on top of each other with the option
BOX SAME
and if the log scale along Z was on, the plot showed only the first histogram. This can be reproduce by using the documentation example illustrating BOX SAME
and turning the canvas into log scale along Z.
- In TLatex:
- Do not paint the text when the text size is <= 0. This fixes the problem mentioned here
- Do not paint text if the text string is empty.
- From: Sergey Linev: In
TPad::SaveAs
method json file extension is now handled
- Because of some precision issue some data points exactly on the plot limits of a
TGraph2D
were not drawn (option P
). The problem was reported here.
- New options for automatic coloring of graphs and histograms. When several histograms or graphs are painted in the same canvas thanks to the option “SAME” via a
THStack
or TMultigraph
it might be useful to have an easy and automatic way to choose their color. The simplest way is to pick colors in the current active color palette. Palette coloring for histogram is activated thanks to the options PFC
(Palette Fill Color), PLC
(Palette Line Color) and AMC
(Palette Marker Color). When one of these options is given to TH1::Draw
the histogram get its color from the current color palette defined by gStyle->SetPalette(…)
. The color is determined according to the number of objects having palette coloring in the current pad.
- The line width and line style can be change on 2d histograms painted with option
ARR
.
- When the angle of a TGraphPolar was not in radian, the error bars were misplaced. The problem was reported here.
- In
TASimage::DrawLineInternal
the case of a line with 0 pixel along X and 0 pixel along Y was not treated properly. An horizontal line was drawn instead.
- In
TGraphPainter::PaintGrapHist
: Decouple the P
option (histogram drawn with a simple polymarker) from the L
(Histogram drawn as a simple polyline). This improved (in some cases some extra markers were drawn) and simplify. the code.
- Candle plot improvements:
- Rearragement of TCandle-code - split into calculate and paint
- Implementation for a “raw-data candle” inside TCandle - to be used from TTreeViewer in the future
- Implementation of 1D histograms along each candle (left, right and violin) - to be used for violin-charts
- Implementation of a zero indicator line for TCandle - to be used for violin-charts
- Reimplementation if THistPainter draw option VIOLIN
- Implementations of presets and individual options for VIOLIN-charts
- Implementation of VIOLIN-charts in THStack - can be combined with CANDLE
- Update of the docs (THistPainter and THStack)
- New tutorials
- In various places in TGraph the underlying histogram was deleted when the graph range should be recomputed. This has the side effect that some graph parameters (like the axis titles) were also deleted. This now fixed. It was reported here.
- Improve the error bars drawing in TLegend to match the plot’s error drawing. This improvement was requested here.
- Implement text clipping in TASImage as requested here. Also the text size in batch mode for png (gif jpeg) files better matches the size on screen and pdf.
TMathText
and TTeXDump
implement the TLatex
character \bar
.
- In the following example,
TPad::WaitPrimitive
was not stoping the macro execution after each plot : ~ {.cpp} { TCanvas c1(“c1”); TFile f(“hsimple.root”); hpx->Draw(); gPad->WaitPrimitive(); hpxpy->Draw(); gPad->WaitPrimitive(); hprof->Draw(); ~ this was reported here.
- New flag
Cocoa.EnableFillAreaAntiAliasing
in system.rootrc
to enable the anti-aliasing for filled area for the Cocoa backend. Default is no
.
- The “BOX” option, to draw 3D histograms, has been reimplemented by Evgueni Tcherniaev The following picture show the old and new version
- Implement options “BOX1”, “BOX2” and “BOX3” for TH3 equivalent of “LEGO1”, “LEGO2” and “LEGO3”for TH2.
- When a 2d histogram was drawn with option
LEGO1
and white colored, the dark side of the lego was red instead of gray.
- New option “0” to draw TH2Poly. When used with any
COL
options, the empty bins are not drawn.
- Fix a long pending problem with Z axis drawing when a lego or a surface was drawn upside-down.
- Add a protection in TLatex when a string has a syntax error. It was reported here.
- Implement the automatic placement of the Y axis title. If the title offset is set to 0: ~ {.cpp} h->GetYaxis()->SetTitleOffset(0.); ~ the axis title is automatically placed to avoid overlaps with the axis labels.
- Implement the automatic placement of the
TLegend
. A new constructor not specifying the legend position is available. Only width and height are defined.
ChangeLabel
is now available for log axis as well as requested here.
- The
TGraph
copy constructor also copy the underlying TH1F
if it exists (it holds the axis titles).
TGraph
axis range was computed differently depending on the order of SetLog[x|y]" This issue was reported here
- Add the new markers suggested here. Improve the marker style for the OpenGl backend (some where wrong or missing).
- Remove a large memory leak in TFITSHDU’s GetArrayRow, GetArrayColumn and GetTabRealVectorColumn member functions.
- When
TGraph
s belonging to a TMultiGraph
were changed (for instance with SetPoint
) after the TMultiGraph
was drawn, the TMultiGraph
range was not recomputed. This issue was discovered thanks to this forum post.
- When a TGraph is drawn, the X-axis is drawn with increasing values from left to right and the Y-axis from bottom to top. The two options
RX
and RY
allow to change this order. The option RX
allows to draw the X-axis with increasing values from right to left and the RY
option allows to draw the Y-axis with increasing values from top to bottom. ~ {.cpp} g->Draw(“APL”); g->Draw(“A RX RY PL”); ~
3D Graphics Libraries
- In
TMarker3DBox::PaintH3
the boxes’ sizes was not correct.
- The option
BOX
and GLBOX
now draw boxes with a volume proportional to the bin content to be conform to the 2D case where the surface of the boxes is proportional to the bin content.
Geometry
- It is possible now to run GDMLParser on a file with arithmetic expressions
Dictionaries
- Stop dictionary generation early, during AST scanning, if a union is selected for I/O as this is not supported (triggered by ROOT-8492)
- Allow inclusion of headers in linkdef files ROOT-7765
- More expressive error messages when trying to directly select std::arrays
- rootcling now
#define
s __PIC__
when parsing input headers ROOT-8719.
I/O Libraries
- [ROOT-8478] - Prompt error when building streamer info and a data member is a vector w/o dictionary
- Fix ROOT-8686 and ROOT-8595 which led to error when persistifying classes which featured std::arrays as data members in TTrees.
- TDavixFile: Added support for bucket name in path
- Fix error sometimes prompted when trying to write std::array column-wise
Parallelism
- Add ROOT::GetImplicitMTPoolSize function to get the size of the pool used to enable implicit multi threading
- Add the TThreadExecutor::Foreach method for parallelising functions featuring void return type
- Add TBufferMerger and TBufferMergerFile classes
TBufferMerger is a class to facilitate writing data in parallel from multiple threads, while writing to a single output file. Its purpose is similar to TParallelMergingFile, but instead of using processes that connect to a network socket, TBufferMerger uses threads that each write to a TBufferMergerFile, which in turn push data into a queue managed by the TBufferMerger. An excerpt of the tutorial is shown below. ```{.cpp} // Create the TBufferMerger TBufferMerger merger(“mp103_fillNtuple.root”);
// Define what each worker will do auto work_function = & { auto f = merger.GetFile(); TNtuple ntrand(“ntrand”, “Random Numbers”, “r”); fill(ntrand, nEventsPerWorker); ntrand.Write(); f->Write(); }; ``` - Global reorganization of the new multi-process / multi-thread code: the part of TProcessExecutor dedicated to TTree processing is moved to a new class TTreeProcessorMP, located under tree/treeplayer and included in the libTreePlayer library. Methods ‘ProcTree’ have been renamed to ‘Process’, following TTreeProcessorMT. - Full support for TSelector processing and TEntryList has been added to TTreeProcessorMP, with new related tutorials (multicore/{mp104_processH1,mp105_processEntryList}.C) and roottests (root/multicore/tProcessExecutorH1Test.cpp).
PyROOT
- Added in PyROOT the converter for std::string_view
JavaScript ROOT
JSROOT upgraded from 4.6.0 to 5.1.2. The major changes:
- Support most 2D and 3D draw options for TH1, TH2 and TH3
- Support new classes: TH2Poly, TGraph2D
- Improve handling of THStack and TMultiGraph
- Full implementation of binary ROOT I/O, including TTree
- Extensive TTree::Draw() functionality
- Support improved JSON format, including arrays compression
- New ‘float’ hierarchy browser overlays with objects drawing
Tutorials
New tutorials have been added: - TDataFrame tutorials to exercise the different use cases - Annotation on a 3D plot using 3D plylines - Palette coloring for graphs - CandlePlot tutorials to exercise different options - Multicore tutorials for multi-threaded and multi-process
Build, Configuration and Testing Infrastructure
- rlibmap has been removed; it was deprecated for three years.
- Added the CMake exported ROOT libraries into the ROOT:: namespace. In this way, projects based on CMake using ROOT can avoid conflicts in library target names. As an example, this is the way to build a project consisting of one library and one executable using ROOT. ``` find_package(ROOT REQUIRED) include(${ROOT_USE_FILE})
include_directories(${CMAKE_SOURCE_DIR} \({ROOT_INCLUDE_DIRS}) add_definitions(\){ROOT_CXX_FLAGS})
ROOT_GENERATE_DICTIONARY(G__Event Event.h LINKDEF EventLinkDef.h)
add_library(Event SHARED Event.cxx G__Event.cxx) target_link_libraries(Event ROOT::Hist ROOT::Tree)
add_executable(Main MainEvent.cxx) target_link_libraries(Main Event) ``- Added option
builtin_all` to enable all the built in options. - For rootcling_stage1 (formerly known as rootcling_tmp), the package structure was changed to enable homogeneous visibility settings across object files. See core/README for an overview. - Several non-public headers are not copied into include/ anymore; they reside in the PACKAGE/res/ subdirectory in the source tree. - The IMT switch is set to on by default. - A new library is now created, libImt. It contains all classes which depend on TBB. Those classes were previously part of libThread. As a consequence rootcling/genreflex do not depend anymore from TBB even in presence of imt builds. - Refactoring of several math tests to avoid exact comparisons of floating point numbers
Bugs fixed in this release
- [ROOT-3798] - The various TTree::Branch functions are very hard to figure out
- [ROOT-4489] - Memory leak when TTree::BuildIndex is called multiple times
- [ROOT-4568] - SIGPIPE handler can cause infinite loop when stderr pipe is gone
- [ROOT-4812] - cling::InputValidator::validate and #ifdef
- [ROOT-4865] - I/O for private and protected classes is not yet supported
- [ROOT-5035] - Custom converter not called correctly on member variables
- [ROOT-5540] - Problem switching from small to large size mode when updating a ROOT File.
- [ROOT-5682] - enums as template parameter for template class
- [ROOT-5727] - ROOT6 does not expand typedef while computing class checksum
- [ROOT-5837] - ROOT ProcessLine doesnt print error after #include
- [ROOT-5971] - Ambiguity between std:: and ::
- [ROOT-6000] - Problem with EmulatedCollectionProxy for STL containers instantiation known to cling
- [ROOT-6011] - cling dynamic library manager fails
- [ROOT-6022] - Inconsistency detected by ld.so in libcling
- [ROOT-6123] - Inconsistency in std functions / GetListOfFunctions()
- [ROOT-6203] - Same name classes in different namespaces
- [ROOT-6211] - Problem converting template instance with argument double to one with argument Double32_t
- [ROOT-6384] - Can’t build with builtin-afterimage on OS X system with homebrew present
- [ROOT-6476] - Handle TTreeReaderValue accessing invalid entry in TTreeReader
- [ROOT-6576] - .L not reflected in TCling::GetSharedLibs
- [ROOT-6721] - Recovery after an error and mysterious error message
- [ROOT-6810] - Return value with void function
- [ROOT-7016] - int i[1][1];
- [ROOT-7172] - MIsleading diagnostic and crash when executing named macro
- [ROOT-7244] - gSystem->IsFileInIncludePath() does not understand quoted paths (esp. crucial since ROOT-7226 fix auto-quotes paths)
- [ROOT-7354] - Solo opening parenthesis in block comment not interpreted properly in cling
- [ROOT-7424] - Label on a TH1F histogram causes ROOT to segfault
- [ROOT-7514] - Cannot reload TGedFrame.h
- [ROOT-7538] - Can’t run root in the build tree for an installation build
- [ROOT-7641] - TMethodCall::Execute (unnecessary) slowness in ROOT 6
- [ROOT-7659] - ROOT signal handler should ignore SIGPIPE (or ignore it while it is handling it)
- [ROOT-7669] - Spurious segfaults on creation of TRint instance if rootlogon uses
- [ROOT-7792] - Weird type output in interactive root
- [ROOT-7984] - TTreeReaderArray and variable-sized C-style array don’t mix
- [ROOT-8046] - Python C++ class wrappers in cppyy do not report the proper name (preventing pickling)
- [ROOT-8060] - cmake (at least ninja) dependency problem
- [ROOT-8064] - excessive warning messages from ROOT cling
- [ROOT-8080] - Floating point exceptions in lambda-functions executed by interpreter not catched
- [ROOT-8109] - Segmentation Fault in TFile::Open if gPluginMgr is present
- [ROOT-8175] - C++ exceptions not propagated to Python in PyROOT on MacOSX 10.11
- [ROOT-8230] - Inherited method in PyROOT/RooFit not found
- [ROOT-8240] - Must not unload or reload cling runtime universe
- [ROOT-8264] - ROOT 6 master: Too many open files
- [ROOT-8283] - Cannot unload + reload inline functions
- [ROOT-8289] - valgrind issue in clang::ASTDeclReader::VisitFriendDecl()
- [ROOT-8362] - TDavixFile does not increment read and write bytes counters
- [ROOT-8396] - CMake: spurious errors from keras and friends…
- [ROOT-8399] - Prompt redirection skips parts of file name
- [ROOT-8406] - TGHSlider crash when start=end
- [ROOT-8410] - Outdated textEntries.C gui tutorial
- [ROOT-8416] - DrawClone from GUI Context Menu does not work
- [ROOT-8421] - Python not finding functions in a namespace
- [ROOT-8422] - segmentation fault when instantiating a templated class with “disabled” methods
- [ROOT-8429] - Error during dictionary creation of PyMVA on SuSe 13.1 and OpenSuSE Leap 42.1
- [ROOT-8432] - Autoparse error for outlined template functions
- [ROOT-8433] - TBuffer::WriteStdString fails
- [ROOT-8437] - Warning and segfault when writing custom class into TTree (with dictionary)
- [ROOT-8441] - template arguments deduction not working in Python
- [ROOT-8442] - Cling fails to correct initialise a variable to zero when it is not correctly declared
- [ROOT-8443] - Major failure on linux interactive python with template instantiations
- [ROOT-8444] - Export cmake targets into own namespace
- [ROOT-8445] - Failure on linux interactive C++ with auto
- [ROOT-8452] - Incorrect handling of files and TChains with xrootd with ?svcClass tag
- [ROOT-8453] - ROOTTEST_GENERATE_REFLEX_DICTIONARY output does not depend on rootcling/genreflex
- [ROOT-8454] - linking against libNew produce not working programs, TMapfile not usable
- [ROOT-8456] - Issues with TTreeReader
- [ROOT-8467] - Support .x filename-with-non-C++-identifiers-characters.C
- [ROOT-8468] - System crash when running parallel unzipping in MainEvent.cxx
- [ROOT-8469] - redirecting output in macro
- [ROOT-8470] - CMake: -Dminimal=On causes build error
- [ROOT-8474] - Setting status bar of TRootBrowser to 1 column produces error message if a TCanvas is also open.
- [ROOT-8475] - PTR macro defined in mmalloc.h is not undefined
- [ROOT-8478] - Silent I/O failure when missing STL container dictionary
- [ROOT-8480] - CMake: root-config does not get updated
- [ROOT-8483] - misleading error message from TTreeReaderValue
- [ROOT-8485] - compile-time errors when filling a THist
- [ROOT-8490] - TUnixSystem / TFile::Open() does not handle ~invaliduser/file
- [ROOT-8499] - cling/clang crash on initialization of static template member
- [ROOT-8502] - TBuffer::ReadStdString(std::string &s) suddenly gone / replaced in 6.08.02
- [ROOT-8506] - Roottest/python tests wrong ROOT
- [ROOT-8510] - CMake: default config on MacOS fails due to fortran
- [ROOT-8511] - Filter MacOSX bundles from the lists of ACliC libraries (MH_BUNDLE versus MH_DYLIB
- [ROOT-8514] - segmentation violation when calling gROOT->ProcessLine()
- [ROOT-8520] - TTreePerfStats cannot be read from the file
- [ROOT-8523] - Failure to catch exceptions in interactive C++ on linux.
- [ROOT-8529] - Failed parsing of multiplication/division in interactive session
- [ROOT-8533] - Recursive Parsing and ExpressionEvaluationContext
- [ROOT-8536] - TBrowser crashes when click branch vector
- [ROOT-8537] - ChangeLabel does not work for logarithmic axes
- [ROOT-8539] - Problem with interpreting a macro when moving from ROOT 6.06/08 to 6.08/04
- [ROOT-8542] - GetListOfMethods() fails on string_view
- [ROOT-8544] - Regression in ROOT 6.08.04: MPI program hangs when loading TFile plugins
- [ROOT-8546] - Building debug via CMake non standard.
- [ROOT-8568] - TSystem OpenConnection does not work in latest root (6.08.04, 6.09.01), but works in root 6.06.04
- [ROOT-8572] - Interpolator never prints warning about not printing further warnings
- [ROOT-8574] - Bug with TVirtualCollectionProxy and std::bitset
- [ROOT-8579] - TApplication::ProcessLine / ExecuteFile does not return error state if file not present
- [ROOT-8585] - TTree::MakeProxy fails for non-split objects
- [ROOT-8692] - make install: python files are not compiled correctly
- [ROOT-8694] - Segfault when drawing TKDE
- [ROOT-8696] - floating point constants recognized as file descriptor numbers
- [ROOT-8697] - Streaming/Loading of TRandom with a TBufferFile fails
- [ROOT-8698] - CMake build does not ignore previous ROOT installations
- [ROOT-8701] - Problems with hard-coded #include statements
- [ROOT-8702] - Compiling root on Aarch64
- [ROOT-8704] - thisroot.sh does not always modify LD_LIBRARY_PATH correctly.
- [ROOT-8713] - Regression in ROOT: conflict with namespaces and global variables
- [ROOT-8714] - TBrowser doesn’t correctly parse branches with “.” in the master branch name
- [ROOT-8715] - Bad interaction of TTreeViewer vs cling
- [ROOT-8722] - Crash TBrowser-ing class TFile on macOS
- [ROOT-8723] - TBrowser-ing a TClass dumps the class
- [ROOT-8728] - ROOT won’t build on clang (libc++) 4
- [ROOT-8731] - Using Double32_t with TTreeReader
- [ROOT-8732] - PyROOT cannot read/write C++ class fields of Double32_t
- [ROOT-8739] - Cannot generate dictionaries for classes in “next” namespace.
- [ROOT-8746] - ROOT requires more recent version of GSL than tested by Cmake
- [ROOT-8747] - TTreeReader bogus data in std::vector if first element skipped
- [ROOT-8752] - ROOT_GENERATE_DICTIONARY generates rootmap with wrong libsuffix on MacOS
- [ROOT-8763] - Segmentation violation with TBrowser
- [ROOT-8764] - Missing implicit header dependencies in ROOT dictionaries
- [ROOT-8769] - rootcling crashes on Ubuntu 16.04/Fedora/Arch when generating dictionaries
- [ROOT-8773] - variables declared in gROOT->Macro lost from scope
- [ROOT-8791] - -Dbuiltin_all=On and Vc versus VecCore
- [ROOT-8792] - Compilation with builtin XRootD fails with GCC 7
- [ROOT-8795] - TMinuit and TH2::DoProjection interfere when using threads
- [ROOT-8797] - GCC 7: Setting “SetRangeUser” of TAxis fails with TClingCallFunc errors
- [ROOT-8804] - Segfault during TClass::GetClass for missing dictionary
- [ROOT-8809] - push_back on a vector of pointers may not work in PyROOT
- [ROOT-8811] - python: cannot pickle ROOT.Long() (not found as ROOT.long)
- [ROOT-8815] - Memory hoarding in TTree
Release 6.10/02
ROOT version 6.10/02 has been released on 6 July 2017
TTree Libraries
- Resolved O(N^2) scaling problem in
TTree::Draw()
observed when a branch that contains a large TClonesArray where each element contains another small vector container.
TDataFrame
- Allow to snapshot datasets with hundreds of columns without incurring in errors related to maximum template recursion depth
- Better handling of missing branches when selected by the user
- Allow to extract columns of the dataset even when their type is a stl collection
- Improved logic of ranges
- Properly report error in case the jitting of the call to Snapshot encounters problems
- Fix bug which prevented to initialise the TDF from a collection of strings
- Fix jitting when defining columns attached to an empty TDF
- Include all headers of the TDF to the pch and remove dedicated dictionary
- Properly preserve gDirectory value when snapshotting dataset
- Fix snapshot when specifying the name of the tree inside a TDirectory
- Avoid dereferencing null ptrs when snapshotting in parallel with less clusters than workers
Build system
- Delay the resolution of ${CMAKE_INSTALL_PREFIX} when installing in a different location than the configured one
- Propagate Intel compiler setup to newer versions
- Remove several unused variable warnings also coming from LLVM
Graphics
- Adjust Y axis title offset default for 3D axis.
Bugs and Issues fixed in this release
- [ROOT-8877] - Defer jitting operations aiming to infer columns types
- [ROOT-8892] - ROOT classical build cannot use external Unuran
- [ROOT-8836] - rootcmdlineutils.py module not correctly installed
Release 6.10/04
Released on July 28, 2017
Bugs and Issues fixed in this release
- [ROOT-8840] - CMake 3.9-rc3 complains
- [ROOT-8850] - Loading libImt and executing the ROOT_TImplicitMT_EnableImplicitMT function crashes root on osx
- [ROOT-8918] - Race condition in roottest/root/dataframe/test_snapshotNFiles.C
- [ROOT-8927] - Title drawn on top of axis
- [ROOT-8928] - Error with “argv” in testKeras* Programs
Release 6.10/06
Released on September 19, 2017
Bugs and Issues fixed in this release
- ROOT-7718 - Using undefined variable as array crashes ROOT
- ROOT-8183 - tutorials/pythia/pythia8.C cannot be compiled
- ROOT-8208 - GetMissingDictionaries in TClass does not find all missing dictionaries
- ROOT-8832 - Pointer validation should set exit code to 1
- ROOT-8896 - ROOT’s string_view cannot be <<’ed to std::cout
- ROOT-8933 - Command line arithmetic partly broken
- ROOT-8934 - ROOTConfig should define ROOT_Imt_LIBRARY for the libImt library
- ROOT-8941 - TGX11.h copied to include/ but not installed with CMake build for 6.10/04
- ROOT-8946 - TClass::GetListOfAllPublicDataMembers->FindObject() returns wrong pointers
- ROOT-8948 - compiledata.sh script not executed during ROOT build on Debian
- ROOT-8964 - ROOT_GENERATE_DICTIONARY should not use files from install directory
- ROOT-8967 - Headers not added to ROOT_INCLUDE_PATH for xrootd
- ROOT-8970 - Homebrew installation cannot find fonts and icons
- ROOT-8974 - simple calculations at root prompt
- ROOT-8975 - ROOT Data Frames crashing when using a name already existant in the tree
- ROOT-8981 - Python3.x and cmdLineUtils.py
- ROOT-9005 - ROOT 6.10-patches broken beetween since 16/09
- ROOT-8980 - variadic template warning in genreflex prohibits use in CMS build system
Release 6.10/08
Core Libraries
- Add support for XCode version 9 and clang version 5.
I/O Libraries
- Add support for LZ4 as a compression format.
Bugs and Issues fixed in this release
- [ROOT-8995] - Read branch error in TTree::GetEntry
- [ROOT-9007] - PyROOT segfault in MethodProxy.cxx for ROOT 6.10/02
- [ROOT-9015] - Root complication fails with XCode 9 in MacOS 10.12.6
- [ROOT-9022] - compile error with -Dgminimal=ON
- [ROOT-9027] - Multi-thread Snapshot action writes only part of the events for large input files
- [ROOT-9031] - CMake dev warning CMP0068
- [ROOT-9032] - Can’t compile 6.10/06 with Clang 5.0.0 due to TBB
- [ROOT-9037] - TDataFrame ctor does not compile if std::string is passed as filename
- [ROOT-9055] - ROOT_GENERATE_DICTIONARY finds header files in /usr/bin failing the build in centos
HEAD of the v6-10-00-patches branch
These changes will be part of the future 6.10/10