ROOT Version 6.36 Release Notes

2025-05

Introduction

ROOT 6.36.00, released on May 26th 2025, is the first release of the ROOT 6.36 LTS cycle. The new ROOT comes with many great features that have the potential of making you even more productive - see release notes below. The effort made by the contributors, experiments and core developers is testified by the 202 items in the ROOT trackers that have been addressed for this release.

As previously announced, the 6.36 cycle supersedes the STS 6.34 one, which will be stopped in June.

For more information, see:

http://root.cern

The following people have contributed to this new version:

Samantha Abbott, UC Davis,
Bertrand Bellenot, CERN/EP-SFT,
Jakob Blomer, CERN/EP-SFT,
Lukas Breitwieser, CERN/EP-SFT,
Will Buttinger, RAL,
Philippe Canal, FNAL,
Emanuele Chiamulera, University of Padova
Eric Cano, CERN/EP-SFT Olivier Couet, CERN/EP-SFT,
Marta Czurylo, CERN/EP-SFT,
Tomas Dado, CERN/EP-ADP,
Monica Dessole, CERN/EP-SFT,
Mattias Ellert, Uppsala University,
Mateusz Fila, CERN EP-SFT,
Martin Føll, CERN/EP-SFT and University of Oslo,
Declan Garvey, CSIC/University of Valencia,
Florine de Geus, CERN/EP-SFT and University of Twente,
Massimiliano Galli, Princeton,
Jamie Gooding, TU Dortmund,
Jonas Hahnfeld, CERN/EP-SFT and Goethe University Frankfurt,
Fernando Hueso Gonzalez, CSIC/University of Valencia,
Stephan Hageboeck, CERN/EP-SFT,
Aaron Jomy, CERN/EP-SFT,
Marta Krawczyk, CERN/EP-AID,
Vit Kucera, Inha University,
Stephanie Kwan, Princeton,
Sergey Linev, GSI Darmstadt,
Enrico Lusiani, INFN Padova,
Alberto Mecca, University of Turin,
Lorenzo Moneta, CERN/EP-SFT,
Mark Owen, University of Glasgow,
Vincenzo Eduardo Padulano, CERN/EP-SFT,
Giacomo Parolini, CERN/EP-SFT,
Daniel Perez Astudillo, QEERI/HBKU,
Danilo Piparo, CERN/EP-SFT,
Alexandr Prozorov, CTU Prague,
Jonas Rembser, CERN/EP-SFT,
Grigori Rybkin, Paris-Saclay University,
Manuel Tobias Schiller, University of Glasgow,
Surya Somayyajula, UMass Amherst,
Petr Stepanov, @petrstepanov,
Maciej Pawel Szymanski, ANL,
Andres Rios, Princeton,
Sanjiban Sengupta, CERN/EP-SFT and Manchester University,
Silia Taider, CERN/EP-SFT,
Florian Uhlig, GSI,
Devajith Valaparambil Sreeramaswamy, CERN/EP-SFT,
Vassil Vasilev, Princeton,
Dongliang Zhang, University of Science and Technology of China

Deprecation and Removal

Python Interface

UHI

Core Libraries

Existing code can now be interpreted and just-in-time compiled according to the C++23 standard for the platforms that support it. The new standard can be enabled with the CMake option -DCMAKE_CXX_STANDARD=23.

RDataFrame

Distributed RDataFrame

The local and distributed APIs of RDataFrame have been made completely uniform. Using the keyword argument executor, an RDataFrame can run on a distributed set of nodes. Furthermore, distributed RDataFrame (ROOT.RDF.Distributed) is now out of the experimental namespace. We recommend that users switch to using the new version as soon as possible. Note the following changes between the old and the new code:

# Old version - not recommended:
# This will still work in 6.36 but will raise a warning
connection = ... # your distributed Dask client or SparkContext
RDataFrame = ROOT.RDF.Experimental.Distributed.[Backend].RDataFrame
df = RDataFrame(..., [daskclient,sparkcontext] = connection)
# New version - recommended
connection = ... # your distributed Dask client or SparkContext
df = ROOT.RDataFrame(..., executor = connection)

In case of using the old version, with Experimental keyword, a warning will be raised. In ROOT 6.38, the Experimental name will be removed completely and using it will result in an exception.

A set of new features is now available to the distributed RDataFrame users:

RooFit

Breaking function signature changes

Fix for RooAbsReal::createHistogram() with extended pdfs

There was a problem with RooAbsReal::createHistogram() when using it to get histograms with predicted yields for extended pdfs. The Scale(bool) argument was always set internally to false in case createHistogram() was called on an extended pdf. There was no way for the user to override that. This meant that one could not get yield histograms that were correctly scaled by the bin volumes using that function. This release changes that behavior, meaning the Scale(bool) command argument is now respected for extended pdfs.

RooCrystalBall improvements

I/O

RNTuple

Tutorials and Code Examples

Math

RooFit / HistFactory

An important bottleneck in HistFactory was removed when many histograms are used to construct a measurement.

Performance improvements in Minuit2 for the case of parameters with limits

For variable parameters with limits, Minuit2 applies trigonometric transformations into an internal space for the minimization. This can be a significant bottleneck for highly-optimized function, to the point that this is also mentioned in section 1.3.1 of the old MINUIT user’s guide. One prominent case of highly-optimized functions are RooFit likelihoods, which are heavily caching intermediate results to make numeric gradients and Hessians as efficient as possible. This meant that e.g. for HistFactory likelihoods, a significant fraction of the gradients and Hessians evaluation time was spent in the parameter transformations. To alleviate this bottleneck, Minuit2 is now also caching the result of the trigonometric transformations, only recomputing them if a parameters value was changed. As a result, the time spent in in parameter transformations when minimizing RooFit likelihoods and evaluating the Hessian becomes negligible.

Graphics

JavaScript ROOT

ROOT 6.36 will use JSROOT 7.9 release series. It includes following important changes:

Jupyter lab

Use JSROOT 7.9.0 as fallback version.

The tutorials have been reviewed, improved and modernised. It is now more intuitive to navigate through the individual parts of the ROOT tutorials. Some tutorials were added to showcase the new features, some were modernized to modern C++ standards and some were moved to the legacy folder.

Build, Configuration and Testing Infrastructure

New build options for dependiencies of image processing

ROOT supports image processing via libAfterImage, which can be enabled with the asimage build option. A few more options were added to make ROOT builds more reproducible and to avoid builtin dependencies:

With default build option values, there is no difference in behavior compared to previous ROOT versions. The real benefit of the new options becomes apparent in builds with fail-on-missing=ON, because then the build will fail if any of the dependencies is not found.

Bugs and Issues fixed in this release

More than 200 items were addressed for this release. The full list is:

Release 6.36.02

Published on July 9, 2025

Items addressed in this release

This release has been patched mainly to cope with a few reports filed mainly by the ALICE and ATLAS experiments.

The list of issues addressed for this release is the following:

Release 6.36.04

Published on August 26, 2025

Items addressed in this release

This release features a few minor fixes. It will also be compatible with macOS 26 Tahoe and XCode 26.

The list of issues addressed for this release is the following:

HEAD of the v6-36-00-patches branch