Releases: root-project/root
v6-40-00
This release represents a massive leap toward the future of ROOT 7. We’ve unlocked game-changing capabilities, including the ability to opt-out of automatic class registration, experimental access to high-performance, multithreading-optimized histograms, and a sleek, ergonomic new file interface (RFile) designed for modern workflows.
But we didn't stop there. We’ve streamlined the entire codebase for peak efficiency and addressed over 160 items in our trackers to ensure rock-solid stability and cutting-edge features (see the full list here). Dive into the full release notes and explore the highlights below!
🔓Opt-out of automatic class registration Break free from histograms and objects automatically attaching to the current (T)directory! Enable this game-changing capability invoking ROOT::Experimental::DisableObjectAutoRegistration(): unlock more control by exploring the documentation.
📊Histograms More features in the new histograms! Concurrent filling is now available, also to save memory in highly multithreaded applications. This feature is even integrated into RDataFrame: check out the tutorials!
🤖 Machine Learning The Data Loader has been reimagined as ROOT::Experimental::ML::RDataLoader! This powerful tool now performs cluster-aligned reads with a sophisticated shuffling strategy and supports multiple RDataFrames as input. Seamlessly output to NumPy, PyTorch, or TensorFlow, while leveraging new under- and oversampling support for dual-class eager loading.
I/O Experience a brand-new, streamlined HTTP I/O implementation powered by libcurl! This update delivers modern remote read capabilities, including advanced compression, secure transport, and S3 support, all across 🐧🍎🪟.
🔀 RNTuple Multiple threads can share a single reader efficiently thanks to the “active entry tokens” added to the RNTupleReader: very useful for data processing frameworks!
🌳 Ready to evolve beyond TTree::Draw? We’ve provided a comprehensive Rosetta Stone to help you seamlessly transition to RDataFrame! This is the perfect path for high-performance RNTuple support or scaling your workflows across multithreaded and distributed environments.
🚀 RDataFrame analysis By streamlining the memory ownership model and implementing a sophisticated sharing mechanism, RDataFrame now minimizes redundant just-in-time compilation across computation graphs. Experience faster setup times and a significant reduction in memory footprint within a single application!
📦 Builtins We’ve dramatically streamlined our codebase. The builtin package footprints have been slashed by a factor of 4x. This makes ROOT lighter and faster to build than ever, while pivoting toward a robust reliance on high-performance system packages.
v6-36-12
Release Candidate v6-40-00-rc1
First release candidate of the 6.40.00 release
🗒️ Release notes
💾 Install instructions
This release is an opportunity to try out the new functionalities of the 6.40.00 development release, currently scheduled for the end of May. The new ROOT comes with many new features (see the preliminary release notes) as well as improved stability: more than 130 items in the ROOT trackers have been addressed for this release.
v6-36-10
This release features a few minor fixes. The support for Apple XCode 26.4 was added
The following items were addressed:
v6-38-04
This is a patch release of the 6.38 series. See the full release notes [here](https://root.cern/doc/v638/release-notes.html#release-6.38.04.
This release can be obtained also as a package for the most popular Linux distributions, Brew and other channels: we thank ROOT packagers for their excellent work!
This release can be found also on conda-forge and CVMFS: /cvmfs/sft.cern.ch/lcg/app/releases/ROOT/6.38.04.
The following items were addressed:
- #21541 - [RF]
createChi2ignores ranges provided by the Range() option - #21507 - [io] Relatively rare crash of ML Data Loader
- #21484 - Last axis title is not set for THn and THnSparseD histograms, affects also HistoND and HistoNSparseD
- #21379 - Missing numpy.uint8 pythonisation in SetBranchAddress in ROOT 6.38
- #21378 - [Python] NumPy conversion fails for multidimensional arrays (incorrect itemsize in LowLevelView)
- #21366 - TGraph2D::Build function may leave the newly created object in inconsistent non-initialised state
- #19329 - h2root fragilities
- #16673 - [RF] Different behaviour of multi-range fit in RooAddPdf and RooProdPdf
v6-38-02
Published on February 25, 2026
Besides the numerous fixes, forty of them, some of the work in preparation for ROOT 6.40 was backported to the 6.38 series. For example, the list of logical volumes gets now rehashed automatically, giving an important performance improvement for setups having a large number of those.
Items addressed in this release
- #21244 - TPad Print() Title option issue
- #21173 - TLegend header drawn in different position with jsroot and more than 1 column
- #21165 - RDataFrame progress bar changes stream output precision
- #21159 - [RF] Unexpected result with RooFFTConvPDF after ROOT 6.32
- #21080 - Bad interference for TH1.Fit and EnableImplicitMT
- #21070 - RedirectServers - Server not redirected
- #21066 - [RF] Crash doing HistFactory Workspace combination
- #21058 - ROOT interpreter crashes when using
nlohmann::json - #20954 - [Minuit2] Analytical Hessian indexing mismatch
- #20913 - MIGRAD can call G2 even if HasG2 is set to false
- #20904 - [RF] RooWorkspace::data returns null pointer if the workspace contains 52 or more datasets
- #20894 - ProfileLikelihood calculator defines wrongly the tolerance
- #20872 - hadd crashes when already existing output file is used with remote file input paths
- #20860 - Inconsistent information for histogram contours
- #20858 - Make "LIST" draw option for contour plot work with "CONT1", "CONT2", and "CONT3" options
- #20834 - c++20 related test filure on ix86 (32 bit intel)
- #20831 - New test failure with gcc 16 (possibly c++20 related)
- #20786 - thisroot.sh can set incorrect ROOTSYS
- #20779 - [CMake] pyroot fails due to missing rpaths in cppyy (macOS, gnuinstall)
- #20761 - Chi2Test: Report residuals also for higher dimensions
- #20706 - Segmentation violation in the TTree::Merge method for root >= v6.36.00
- #20703 - ROOT::Fit::FitResult fixed / bound parameter states not updated
- #20674 - .rootlogon.C ignored when running TRootBrowser
- #20665 - Analytical Hessian is not made positive-definite during minimizer seeding in Minuit2
- #20650 - root 6.38.00 can load incompatible old libcppyy_backend.so
- #20619 - fRC increased twice in TGDMLParse
- #20602 - TGTextEntry spills text out of the text box on macOS but not on Ubuntu
- #20586 - MVSC fails compiling Minuit2 with OpenMP enabled
- #20511 - CMSSW DQM bin-by-bin comparison failed with ROOT 6.36
- #20383 - [RF] Broken rf501_simultaneouspdf.py in dev3/nighlies
- #20356 - Auxiliaries of volumes are not exportet in gdml
- #20267 - TMVA.Experimental.SaveXGBoost and feature names
- #18837 - [Python] Calling
std::span::begin()broken with gcc15 - #18718 - [RF] Regression in ranged fits with RooSimultaneous due to new likelihood evaluation
- #18314 - [ntuple] Heuristically reduce memory usage of buffered writing
- #17697 - pyroot can trigger clang assertion failure on enum with value too big to fit in int64_t
- #16064 - [PyROOT] Type
UInt64_t/unsigned long longcan cause problems in template resolutions - #15872 - [PyROOT] The cppyy version inside ROOT doesn't support
long long - #7167 - [TTreeProcessorMP] Warn if Process is called from a multi-thread program
- ROOT-8842 - TTreeReaderFast crashes reading flat TTree
v6-32-22
The release notes for this release can be found here. Among the other minor fixes and improvements, this release addresses CVE-2026-24811 and CVE-2026-24812.
v6-30-10
The release notes for this release can be found here. Among the other minor fixes and improvements, this release addresses CVE-2026-24811 and CVE-2026-24812.
v6-28-14
The release notes for this release can be found here. Among the other minor fixes and improvements, this release addresses CVE-2026-24811 and CVE-2026-24812.
v6-26-18
The release notes for this release can be found here. Among the other minor fixes and improvements, this release addresses CVE-2026-24811 and CVE-2026-24812.