theuni
commented at 6:33 PM on April 28, 2026:
member
This effectively reverts a3cb309e7c31853f272bffaa65fb6ab0a7cc4083 from PR #30194.
That PR reduced the multi_index type signatures as recommended upstream, but this is no longer supported as of boost 1.91 because it is no longer necessary. 1.91 drops support for the pre-c++11 work-arounds that bloated the type signatures to begin with.
The upstream BOOST_MULTI_INDEX_ENABLE_MPL_SUPPORT define is meant to provide compatibility with removed features, but it does not work for this case. Using indexed_by directly when defining the multi_index (as opposed to inheriting from it) works with all versions, and avoids the use of the back-compat define.
This is a slight regression when building against boost < 1.91 because the bloated type signatures are reintroduced in that case, but it's not significant enough to go to the trouble of introducing version detection and ifdefs.
multi_index: fix compilation failure with boost >= 1.91
This effectively reverts a3cb309e7c31853f272bffaa65fb6ab0a7cc4083 from PR #30194.
That PR reduced the multi_index type signatures as recommended upstream, but
this is no longer supported as of boost 1.91 because it is no longer necessary.
1.91 drops support for the pre-c++11 work-arounds that bloated the type
signatures to begin with.
The upstream `BOOST_MULTI_INDEX_ENABLE_MPL_SUPPORT` define is meant to provide
compatibility with removed features, but it does not work for this case. Using
`indexed_by` directly when defining the `multi_index` (as opposed to inheriting
from it) works with all versions, and avoids the use of the back-compat define.
This is a slight regression when building against boost < 1.91 because the
bloated type signatures are reintroduced in that case, but it's not significant
enough to go to the trouble of introducing version detection and ifdefs.
0bc9d354df
DrahtBot
commented at 6:33 PM on April 28, 2026:
contributor
<!--e57a25ab6845829454e8d69fc972939a-->
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
<!--021abf342d371248e50ceaed478a90ca-->
Reviews
See the guideline for information on the review process.
I cherry-picked #35147 on top of this one temporarily to make sure that all is good after the bump to boost 1.91. I'll remove that commit if/when CI is happy.
theuni added the label Needs Backport (31.x) on Apr 28, 2026
theuni force-pushed on Apr 28, 2026
theuni
commented at 8:51 PM on April 28, 2026:
member
theuni
commented at 2:47 PM on April 29, 2026:
member
Concept ACK.
This is a slight regression when building against boost < 1.91 because the bloated type signatures are reintroduced in that case...
To clarify, this only affects compile times, right?
I doubt it really affects compile times much, it's mostly just cosmetic, as the types are much easier to deal with for compiler warnings or debugger output.
Size-wise, the bloated types cause an unstripped bitcoind to be 594,600 bytes larger. Stripped, they're no different. So the release binaries are the same either way.
This is the same as what's here, just with aliases as syntactic sugar. It still produces the bloated types when using <1.91. We wouldn't use those aliases anywhere else, so I don't see any use in creating them. I'm not opposed if there's a preference for it, though.
hebasto
commented at 2:53 PM on April 29, 2026:
member
Size-wise, the bloated types cause an unstripped bitcoind to be 594,600 bytes larger. Stripped, they're no different. So the release binaries are the same either way.
So the following bumping Boost to 1.91 in depends should also be backported to all supported release branches.
hebasto approved
hebasto
commented at 2:55 PM on April 29, 2026:
member
ACK0bc9d354dfd8074d1c36a891a69b6585a8775c65.
fanquake
commented at 3:35 PM on April 29, 2026:
member
So the following bumping Boost to 1.91 in depends should also be backported to all supported release branches.
Why's that? We can just ship the slightly larger debug symbols.
maflcko
commented at 4:12 PM on April 29, 2026:
member
theuni
commented at 6:54 PM on April 29, 2026:
member
Size-wise, the bloated types cause an unstripped bitcoind to be 594,600 bytes larger. Stripped, they're no different. So the release binaries are the same either way.
So the following bumping Boost to 1.91 in depends should also be backported to all supported release branches.
Ah, sorry, the way I described that was confusing. I meant that when stripped, there's no difference between the two approaches. So it's irrelevant for release binaries.
Thinking about this though, I think we actually want to avoid bumping boost for any backports, because (starting with v1.91), that would mean backporting a boost::signals implementation that was never seen/tested in master.
fanquake referenced this in commit 5f74b7ff1d on Apr 30, 2026
fanquake removed the label Needs backport (30.x) on Apr 30, 2026
fanquake
commented at 8:49 AM on April 30, 2026:
member
This is a metadata mirror of the GitHub repository
bitcoin/bitcoin.
This site is not affiliated with GitHub.
Content is generated from a GitHub metadata backup.
generated: 2026-05-20 06:52 UTC