From 2021f1531ff580159386ad7047a8c05337532a76 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 16 Sep 2026 20:45:02 +0200 Subject: [PATCH 1/6] [core] deprecate compiledata.h --- README/ReleaseNotes/v642/index.md | 1 + cmake/unix/compiledata.sh | 9 +++++++++ core/base/src/TSystem.cxx | 1 + core/metacling/src/TCling.cxx | 1 + io/io/src/TFile.cxx | 1 + net/net/src/TApplicationServer.cxx | 1 + 6 files changed, 14 insertions(+) diff --git a/README/ReleaseNotes/v642/index.md b/README/ReleaseNotes/v642/index.md index 61c80c9c5b822..52374bca51fda 100644 --- a/README/ReleaseNotes/v642/index.md +++ b/README/ReleaseNotes/v642/index.md @@ -71,6 +71,7 @@ The `TMVA_SOFIE_GNN` tutorials have been migrated to this workflow and produce i * The `RooTrace` class is deprecated and will be removed in ROOT 6.44. It was a RooFit-specific memory tracer whose instrumentation hooks are compiled out by default, so it has been inert and untested for years. For memory debugging, please use general-purpose tools such as AddressSanitizer or Valgrind instead. * Support for the AIX operating system has been removed from the codebase. This support has not been tested since the late v5 releases and the LLVM JIT is not yet supporting AIX. * The `ROOT::Math::ParamFunctionBase`, `ROOT::Math::ParamFunctorHandler` and `ROOT::Math::ParamMemFunHandler` classes in `Math/ParamFunctor.h` are removed, together with the `ParamFunctor::GetImpl()` and `ParamFunctor::SetFunction()` methods that exposed them. They implemented the type erasure that `ParamFunctor` now gets from `std::function`, mirroring what was already done for `ROOT::Math::Functor`. Constructing and calling a `ParamFunctor` is unchanged, except that the constructor from an object and one of its member functions now takes a plain pointer to the object instead of anything dereferenceable, so smart pointers are no longer accepted there. +* The header `compiledata.h` is deprecated and will be removed in ROOT 6.44. It did not have header guards and was not supposed to be part of the public interface. * Including `RConfig.h` and `RVersion.h` is now deprecated and will be removed after ROOT 6.44, use instead `ROOT/RConfig.hxx` and `ROOT/RVersion.hxx`. * The header `Rpair.h` is deprecated and will be removed after ROOT 6.44, use `` instead. * The headers `Htypes.h` and `Gtypes.h` that were deprecated in ROOT 6.20 will now emit warnings and will be fully removed in ROOT 6.44. Use instead `Rtypes.h`. diff --git a/cmake/unix/compiledata.sh b/cmake/unix/compiledata.sh index 4393f6ce14a34..134bcc011e8f9 100755 --- a/cmake/unix/compiledata.sh +++ b/cmake/unix/compiledata.sh @@ -107,6 +107,13 @@ fi rm -f "${COMPILEDATA}.tmp" echo "/* This file is automatically generated */" > "${COMPILEDATA}.tmp" +echo "#ifndef ROOT_compiledata_h" >> "${COMPILEDATA}.tmp" +echo "#define ROOT_compiledata_h" >> "${COMPILEDATA}.tmp" + +echo "#if !defined(ROOT_compiledata_cxx) && !defined(G__DICTIONARY) && !defined(__ACLIC__)" >> "${COMPILEDATA}.tmp" +echo "#warning \"This header is deprecated and will be removed in ROOT 6.44.\"" >> "${COMPILEDATA}.tmp" +echo "#endif" >> "${COMPILEDATA}.tmp" + echo "#define BUILD_ARCH \"$ARCH\"" >> "${COMPILEDATA}.tmp" if [ "x${IGNORE_BUILD_NODE_CHANGES}" != "x" -a -r "$COMPILEDATA" ]; then @@ -134,6 +141,8 @@ echo "#define ROOTBUILD \"$ROOTBUILD\"" >> "${COMPILEDATA}.tmp" echo "#define LINKEDLIBS \"-L$LIBDIR $ROOTLIBS $RINTLIBS \"" >> "${COMPILEDATA}.tmp" echo "#define OBJEXT \"o\"" >> "${COMPILEDATA}.tmp" echo "#define SOEXT \"$SOEXT\"" >> "${COMPILEDATA}.tmp" +echo "#endif" >> "${COMPILEDATA}.tmp" + ( if [ -r "$COMPILEDATA" ]; then diff --git a/core/base/src/TSystem.cxx b/core/base/src/TSystem.cxx index bf312d7011747..ba5d50f0dacf9 100644 --- a/core/base/src/TSystem.cxx +++ b/core/base/src/TSystem.cxx @@ -42,6 +42,7 @@ allows a simple partial implementation for new OS'es. #include "TUrl.h" #include "TVirtualMutex.h" #include "TVersionCheck.h" +#define ROOT_compiledata_cxx #include "compiledata.h" #include "RConfigure.h" #include "THashList.h" diff --git a/core/metacling/src/TCling.cxx b/core/metacling/src/TCling.cxx index dc4491a0ac83f..022cc1ddba473 100644 --- a/core/metacling/src/TCling.cxx +++ b/core/metacling/src/TCling.cxx @@ -61,6 +61,7 @@ clang/LLVM technology. #include "THashTable.h" #include "RConversionRuleParser.h" #include "RConfigure.h" +#define ROOT_compiledata_cxx #include "compiledata.h" #include "strlcpy.h" #include "TClingUtils.h" diff --git a/io/io/src/TFile.cxx b/io/io/src/TFile.cxx index 0be022832bb6d..ebe193fa5b07e 100644 --- a/io/io/src/TFile.cxx +++ b/io/io/src/TFile.cxx @@ -160,6 +160,7 @@ The structure of a directory is shown in TDirectoryFile::TDirectoryFile #include "TMathBase.h" #include "TObjString.h" #include "TStopwatch.h" +#define ROOT_compiledata_cxx #include "compiledata.h" #include "TSchemaRule.h" #include "TSchemaRuleSet.h" diff --git a/net/net/src/TApplicationServer.cxx b/net/net/src/TApplicationServer.cxx index 4fb54f2691f56..d35f186fd3896 100644 --- a/net/net/src/TApplicationServer.cxx +++ b/net/net/src/TApplicationServer.cxx @@ -62,6 +62,7 @@ #include "TSystem.h" #include "TRemoteObject.h" #include "TUrl.h" +#define ROOT_compiledata_cxx #include "compiledata.h" #include "TClass.h" From 46ecde4dbe80966bef695a3fd51bc0968e89f178 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 16 Sep 2026 23:40:12 +0200 Subject: [PATCH 2/6] Update cmake/unix/compiledata.sh Co-authored-by: Philippe Canal --- cmake/unix/compiledata.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/unix/compiledata.sh b/cmake/unix/compiledata.sh index 134bcc011e8f9..9c130b267d755 100755 --- a/cmake/unix/compiledata.sh +++ b/cmake/unix/compiledata.sh @@ -111,7 +111,7 @@ echo "#ifndef ROOT_compiledata_h" >> "${COMPILEDATA}.tmp" echo "#define ROOT_compiledata_h" >> "${COMPILEDATA}.tmp" echo "#if !defined(ROOT_compiledata_cxx) && !defined(G__DICTIONARY) && !defined(__ACLIC__)" >> "${COMPILEDATA}.tmp" -echo "#warning \"This header is deprecated and will be removed in ROOT 6.44.\"" >> "${COMPILEDATA}.tmp" +echo "#warning \"This header is solely used by ROOT internally to setup ACLiC, its will be renamed in ROOT 6.44. Consider using gSystem to access its content.\"" >> "${COMPILEDATA}.tmp" echo "#endif" >> "${COMPILEDATA}.tmp" echo "#define BUILD_ARCH \"$ARCH\"" >> "${COMPILEDATA}.tmp" From 11c13b84e7ca73a76bc36c14ae253c4887313acb Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 16 Sep 2026 23:40:59 +0200 Subject: [PATCH 3/6] [nfc] typo --- cmake/unix/compiledata.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/unix/compiledata.sh b/cmake/unix/compiledata.sh index 9c130b267d755..7e7b269e6e3cf 100755 --- a/cmake/unix/compiledata.sh +++ b/cmake/unix/compiledata.sh @@ -111,7 +111,7 @@ echo "#ifndef ROOT_compiledata_h" >> "${COMPILEDATA}.tmp" echo "#define ROOT_compiledata_h" >> "${COMPILEDATA}.tmp" echo "#if !defined(ROOT_compiledata_cxx) && !defined(G__DICTIONARY) && !defined(__ACLIC__)" >> "${COMPILEDATA}.tmp" -echo "#warning \"This header is solely used by ROOT internally to setup ACLiC, its will be renamed in ROOT 6.44. Consider using gSystem to access its content.\"" >> "${COMPILEDATA}.tmp" +echo "#warning \"This header is solely used by ROOT internally to setup ACLiC, it will be renamed in ROOT 6.44. Consider using gSystem to access its content.\"" >> "${COMPILEDATA}.tmp" echo "#endif" >> "${COMPILEDATA}.tmp" echo "#define BUILD_ARCH \"$ARCH\"" >> "${COMPILEDATA}.tmp" From 0d5a5efe8b2c9f26c9fdd6d2c9cd4eba003a1aa8 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Wed, 16 Sep 2026 23:42:42 +0200 Subject: [PATCH 4/6] [RN] update deprecation alternative --- README/ReleaseNotes/v642/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README/ReleaseNotes/v642/index.md b/README/ReleaseNotes/v642/index.md index 52374bca51fda..3f0333507652b 100644 --- a/README/ReleaseNotes/v642/index.md +++ b/README/ReleaseNotes/v642/index.md @@ -71,7 +71,7 @@ The `TMVA_SOFIE_GNN` tutorials have been migrated to this workflow and produce i * The `RooTrace` class is deprecated and will be removed in ROOT 6.44. It was a RooFit-specific memory tracer whose instrumentation hooks are compiled out by default, so it has been inert and untested for years. For memory debugging, please use general-purpose tools such as AddressSanitizer or Valgrind instead. * Support for the AIX operating system has been removed from the codebase. This support has not been tested since the late v5 releases and the LLVM JIT is not yet supporting AIX. * The `ROOT::Math::ParamFunctionBase`, `ROOT::Math::ParamFunctorHandler` and `ROOT::Math::ParamMemFunHandler` classes in `Math/ParamFunctor.h` are removed, together with the `ParamFunctor::GetImpl()` and `ParamFunctor::SetFunction()` methods that exposed them. They implemented the type erasure that `ParamFunctor` now gets from `std::function`, mirroring what was already done for `ROOT::Math::Functor`. Constructing and calling a `ParamFunctor` is unchanged, except that the constructor from an object and one of its member functions now takes a plain pointer to the object instead of anything dereferenceable, so smart pointers are no longer accepted there. -* The header `compiledata.h` is deprecated and will be removed in ROOT 6.44. It did not have header guards and was not supposed to be part of the public interface. +* The header `compiledata.h` is deprecated and will be removed in ROOT 6.44. It did not have header guards and was not supposed to be part of the public interface. It is solely used by ROOT internally to setup `ACLiC`, consider using `gSystem` instead to access its content. * Including `RConfig.h` and `RVersion.h` is now deprecated and will be removed after ROOT 6.44, use instead `ROOT/RConfig.hxx` and `ROOT/RVersion.hxx`. * The header `Rpair.h` is deprecated and will be removed after ROOT 6.44, use `` instead. * The headers `Htypes.h` and `Gtypes.h` that were deprecated in ROOT 6.20 will now emit warnings and will be fully removed in ROOT 6.44. Use instead `Rtypes.h`. From 53e02f35648a38f003c979c9e60c2c87ace2f859 Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Thu, 17 Sep 2026 13:12:25 +0200 Subject: [PATCH 5/6] Update README/ReleaseNotes/v642/index.md Co-authored-by: Philippe Canal --- README/ReleaseNotes/v642/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README/ReleaseNotes/v642/index.md b/README/ReleaseNotes/v642/index.md index 3f0333507652b..f00bd3f85c12e 100644 --- a/README/ReleaseNotes/v642/index.md +++ b/README/ReleaseNotes/v642/index.md @@ -71,7 +71,7 @@ The `TMVA_SOFIE_GNN` tutorials have been migrated to this workflow and produce i * The `RooTrace` class is deprecated and will be removed in ROOT 6.44. It was a RooFit-specific memory tracer whose instrumentation hooks are compiled out by default, so it has been inert and untested for years. For memory debugging, please use general-purpose tools such as AddressSanitizer or Valgrind instead. * Support for the AIX operating system has been removed from the codebase. This support has not been tested since the late v5 releases and the LLVM JIT is not yet supporting AIX. * The `ROOT::Math::ParamFunctionBase`, `ROOT::Math::ParamFunctorHandler` and `ROOT::Math::ParamMemFunHandler` classes in `Math/ParamFunctor.h` are removed, together with the `ParamFunctor::GetImpl()` and `ParamFunctor::SetFunction()` methods that exposed them. They implemented the type erasure that `ParamFunctor` now gets from `std::function`, mirroring what was already done for `ROOT::Math::Functor`. Constructing and calling a `ParamFunctor` is unchanged, except that the constructor from an object and one of its member functions now takes a plain pointer to the object instead of anything dereferenceable, so smart pointers are no longer accepted there. -* The header `compiledata.h` is deprecated and will be removed in ROOT 6.44. It did not have header guards and was not supposed to be part of the public interface. It is solely used by ROOT internally to setup `ACLiC`, consider using `gSystem` instead to access its content. +* The header `compiledata.h` will be renamed ROOT 6.44. It did not have header guards and is not meant to be used directly. It is solely used by ROOT internally to setup `ACLiC`, consider using `gSystem` instead to access its content. * Including `RConfig.h` and `RVersion.h` is now deprecated and will be removed after ROOT 6.44, use instead `ROOT/RConfig.hxx` and `ROOT/RVersion.hxx`. * The header `Rpair.h` is deprecated and will be removed after ROOT 6.44, use `` instead. * The headers `Htypes.h` and `Gtypes.h` that were deprecated in ROOT 6.20 will now emit warnings and will be fully removed in ROOT 6.44. Use instead `Rtypes.h`. From 42b285edab1f09567ccc73addc7398eb0b5173da Mon Sep 17 00:00:00 2001 From: ferdymercury Date: Thu, 17 Sep 2026 13:12:48 +0200 Subject: [PATCH 6/6] Update index.md --- README/ReleaseNotes/v642/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README/ReleaseNotes/v642/index.md b/README/ReleaseNotes/v642/index.md index f00bd3f85c12e..1d7dac2db1bda 100644 --- a/README/ReleaseNotes/v642/index.md +++ b/README/ReleaseNotes/v642/index.md @@ -71,7 +71,7 @@ The `TMVA_SOFIE_GNN` tutorials have been migrated to this workflow and produce i * The `RooTrace` class is deprecated and will be removed in ROOT 6.44. It was a RooFit-specific memory tracer whose instrumentation hooks are compiled out by default, so it has been inert and untested for years. For memory debugging, please use general-purpose tools such as AddressSanitizer or Valgrind instead. * Support for the AIX operating system has been removed from the codebase. This support has not been tested since the late v5 releases and the LLVM JIT is not yet supporting AIX. * The `ROOT::Math::ParamFunctionBase`, `ROOT::Math::ParamFunctorHandler` and `ROOT::Math::ParamMemFunHandler` classes in `Math/ParamFunctor.h` are removed, together with the `ParamFunctor::GetImpl()` and `ParamFunctor::SetFunction()` methods that exposed them. They implemented the type erasure that `ParamFunctor` now gets from `std::function`, mirroring what was already done for `ROOT::Math::Functor`. Constructing and calling a `ParamFunctor` is unchanged, except that the constructor from an object and one of its member functions now takes a plain pointer to the object instead of anything dereferenceable, so smart pointers are no longer accepted there. -* The header `compiledata.h` will be renamed ROOT 6.44. It did not have header guards and is not meant to be used directly. It is solely used by ROOT internally to setup `ACLiC`, consider using `gSystem` instead to access its content. +* The header `compiledata.h` will be renamed in ROOT 6.44. It did not have header guards and is not meant to be used directly. It is solely used by ROOT internally to setup `ACLiC`, consider using `gSystem` instead to access its content. * Including `RConfig.h` and `RVersion.h` is now deprecated and will be removed after ROOT 6.44, use instead `ROOT/RConfig.hxx` and `ROOT/RVersion.hxx`. * The header `Rpair.h` is deprecated and will be removed after ROOT 6.44, use `` instead. * The headers `Htypes.h` and `Gtypes.h` that were deprecated in ROOT 6.20 will now emit warnings and will be fully removed in ROOT 6.44. Use instead `Rtypes.h`.