% ROOT Version 6.40 Release Notes % 2026-5
For more information, see:
The following people have contributed to this new version:
Bertrand Bellenot, CERN/EP-SFT,
Jakob Blomer, CERN/EP-SFT,
Lukas Breitwieser, CERN/EP-SFT,
Philippe Canal, FNAL,
Olivier Couet, CERN/EP-SFT,
Marta Czurylo, CERN/EP-SFT,
Florine de Geus, CERN/EP-SFT and University of Twente,
Jonas Hahnfeld, CERN/EP-SFT and Goethe University Frankfurt,
Fernando Hueso Gonzalez, IFIC (CSIC-University of Valencia),
Stephan Hageboeck, CERN/EP-SFT,
Aaron Jomy, CERN/EP-SFT,
Sergey Linev, GSI Darmstadt,
Lorenzo Moneta, CERN/EP-SFT,
Vincenzo Eduardo Padulano, CERN/EP-SFT,
Giacomo Parolini, CERN/EP-SFT,
Danilo Piparo, CERN/EP-SFT,
Jonas Rembser, CERN/EP-SFT,
Silia Taider, CERN/EP-SFT,
Devajith Valaparambil Sreeramaswamy, CERN/EP-SFT,
Vassil Vassilev, Princeton,\
- The
TH1Kclass was removed.TMath::KNNDensitycan be used in its stead. - The headers in
RooStats/HistFactoryfor data classes related to the measurement definition were merged into theRooStats/HistFactory/Measurement.hheader to simplify usage and development. For now, the whole set of header files is kept for backwards compatibility, but the empty headers will be removed in ROOT 7. - The
TObjectequality operator pythonization (TObject.__eq__) that was deprecated in ROOT 6.38 and scheduled for removal in ROOT 6.40 is removed. - Comparing C++
nullptrobjects withNonein Python now raises aTypeError, as announced in the ROOT 6.38 release notes. Use truth-value checks likeif not xorx is Noneinstead. - The
TGLIncludes.handTGLWSIncludes.hthat were deprecated in ROOT 6.38 and scheduled for removal are gone now. Please include your required headers like<GL/gl.h>or<GL/glu.h>directly. - The GLEW headers (
GL/eglew.h,GL/glew.h,GL/glxew.h, andGL/wglew.h) that were installed when building ROOT withbuiltin_glew=ONare no longer installed. This is done because ROOT is moving away from GLEW for loading OpenGL extensions. - The TMVA
PyKerasmethod is deprecated. It was broken by the API changes in Keras 3, released in November 2023 and part of TensorFlow 2.16 or newer. ThePyKerasmethod will be removed in ROOT 6.42 (unless an updated implementation for Keras 3 that matches usage, performance and stability requirements will be found unexpectedly).
- The behavior or
TDirectoryFile::mkdir(which is alsoTFile::mkdir) was changed regarding the creation of directory hierarchies: callingmkdir("a/b/c", "myTitle")will now assignmyTitleto the innermost directory"c"(before this change it would assign it to"a"). - Fixed a bug in
TDirectoryFile::mkdirwhere passingreturnExistingDirectory = truewould not work properly in case of directory hierarchies. The option is now correctly propagated tomkdir's inner invocations.
ROOT now respects the system umask when creating files, following standard Unix conventions.
Previous behavior: Files were created with hardcoded 0644 permissions (owner read/write, group/others read-only), ignoring the system umask.
New behavior: Files are created with 0666 permissions masked by the system umask (0666 & ~umask), consistent with standard Unix file creation functions like open() and fopen().
Impact:
- Users with default
umask 022(most common): No change - files are still created as0644 - Users with stricter
umaskvalues (e.g.,0077): Files will now be created with more restrictive permissions (e.g.,0600- user-only access) - Users with permissive
umaskvalues (e.g.,0002): Files may be created with slightly more open permissions (e.g.,0664- group-writable)
Note: If you require specific file permissions regardless of umask, you can set umask explicitly before running ROOT (e.g., umask 022) or use chmod after file creation.
This change affects the following classes: TFile, TMapFile, TMemFile, TDCacheFile, TFTP, and TApplicationServer.
We have migrated the vectorized backends of TMath and TFormula from VecCore/Vc to std::experimental::simd, where available.
On Linux, std::experimental::simd is assumed to be available when ROOT is compiled with C++20 or later, which in practice corresponds to sufficiently recent GCC and Clang compilers. To keep the build system simple and robust, ROOT does not explicitly check compiler versions: users opting into C++20 are expected to use modern toolchains.
Impact on Linux users
ROOT builds with C++17 on Linux no longer provide vectorized TMath and TFormula. This is an intentional and accepted trade-off of the migration. These vectorized features were rarely used, while maintaining them significantly complicated the codebase and build configuration.
Users who rely on vectorized TMath or the vectorized TFormula backend are encouraged to build ROOT with C++20.
Doing so restores vectorization through std::experimental::simd, providing a more robust and future-proof implementation.
Windows and Apple silicon users are unaffected
VecCore/Vc did not work on Windows previously, and Vc never provided production-ready support for ARM/Neon, so Apple silicon did not benefit from vectorization before this change.
Build system changes
As part of this migration, the following build options are deprecated. From ROOT 6.42, setting them will result in configuration errors.
vcveccorebuiltin_vcbuiltin_veccore
- The message shown in ROOT 6.38 to inform users about change of default compression setting used by Snapshot (was 101 before 6.38, became 505 in 6.38) is now removed.