Skip to content

Unify deprecation/removal timeline for installed headers. - #23865

Merged
dpiparo merged 2 commits into
root-project:masterfrom
hageboeck:deprecatedHeaders
Oct 28, 2026
Merged

dpiparo merged 2 commits into
root-project:masterfrom
hageboeck:deprecatedHeaders

Conversation

@hageboeck

Copy link
Copy Markdown
Member

This adapts the header cleanup campaign to the user request of leaving deprecation messages visible for much more than one year.
For almost all headers, the removal date is now "ROOT 7", opening a path for escalating the warnings to #error for the first release(s) of ROOT 7.

@ferdymercury thanks for your cleanup campaign! We discussed the proposed timeline and suggest to give users a bit more time, so they don't find themselves in a situation where code does not compile without an obvious way how to fix it.

The proposed solution is:

  • The headers will be installed for longer
  • In ROOT 7, they will not emit a #warning but an #error
  • If a packager decides that they want to remove these headers earlier, they are encouraged to do so. In 6.44, we could even provide a build option called something like -DInstallCompatHeaders=On/Off, which can be used by packagers to clean up the package.

@hageboeck hageboeck self-assigned this Oct 27, 2026
@hageboeck hageboeck added this to the 6.42.00-rc1 milestone Oct 27, 2026

@pcanal pcanal left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks (Consider applying the clang-format suggestions)

Comment thread core/foundation/inc/Rstrstream.h Resolved
@ferdymercury

ferdymercury commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator
  • If a packager decides that they want to remove these headers earlier, they are encouraged to do so. In 6.44, we could even provide a build option called something like -DInstallCompatHeaders=On/Off, which can be used by packagers to clean up the package.

Having this option sounds like the perfect solution in a world of infinite resources, but, in my opinion, it will be a maintenance nightmare, taking developers much more time than helping the-few-users in the forum not asking first LLMs in finding out how to fix their potential compilation errors.

In any case, the RNotes must be updated accordingly ;)

@github-actions

Copy link
Copy Markdown

Test Results

    24 files      24 suites   4d 2h 44m 38s ⏱️
 3 896 tests  3 896 ✅ 0 💤 0 ❌
83 440 runs  83 440 ✅ 0 💤 0 ❌

Results for commit 83d0a1e.

This adapts the header cleanup campaign to the request of leaving
deprecations visible for more than one year.
Not removing the headers in/after 6.44 opens a path for escalating the
warnings to #error for the first releases of ROOT 7.
@hageboeck

Copy link
Copy Markdown
Member Author

Thanks (Consider applying the clang-format suggestions)

It did consider it, but having the #warning and the following messages in the same line has its benefits (e.g. for grep).

Comment thread core/base/inc/Gtypes.h
//////////////////////////////////////////////////////////////////////////

#warning "The header Gtypes.h is deprecated and will be removed in ROOT 6.44, include instead Rtypes.h"
#warning "This header is deprecated and will be removed after ROOT 7. Include instead Rtypes.h"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I still see here after and e.g. in in Bswapcpy.h


#if !defined(ROOT_TGenerator_cxx) && !defined(G__DICTIONARY)
#warning "This header is an implementation detail, is deprecated and will be moved to ROOT/cfortran.h in ROOT 6.44, and may be removed later on from public inteface. Use instead the `cfortran.h` header from `cfitsio` library"
#warning "This header will be moved to ROOT/cfortran.h in ROOT 6.44, and may be removed later on from public inteface. Use instead the `cfortran.h` header from `cfitsio` library"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one has an even different formulation "removed later on"

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one is indeed a special case, because it's not clear whether it can be removed.

@dpiparo
dpiparo merged commit fe6b38f into root-project:master Oct 28, 2026
25 of 33 checks passed
@ferdymercury

Copy link
Copy Markdown
Collaborator

cleanup campaign!

Side note: the remaining ones that do not conform to the the R* T* pattern are:

Buttons.h
Bytes.h
Byteswap.h
Compression.h
DllImport.h
ESTLType.h
Foption.h
Getline.h
GuiTypes.h
HFitInterface.h
KeySymbols.h
MPCode.h
MPSendRecv.h
MessageTypes.h
PoolUtils.h
ThreadLocalStorage.h
root_std_complex.h

but it should be decided whether they should go into ROOT/ or how to approach it.

@hageboeck
hageboeck deleted the deprecatedHeaders branch October 28, 2026 17:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants