doc: add C++17 release note for 0.21.0 #19305

pull fanquake wants to merge 1 commits into bitcoin:master from fanquake:c++17_0_21_0 changing 1 files +5 −0
  1. fanquake commented at 3:39 pm on June 17, 2020: member

    TLDR: Mention that the codebase is now compatible with C++17, and that the intention is to require C++17 starting with 0.22.0.

    Following some discussion with Cory/Carl, and in #16684, I think this is the next step in the C++17 migration.

    While #16684 mentions a gitian/Guix release with C++17, it’s not yet clear how that would be done. Are we just going to pass --enable-c++17 in gitian/Guix?. Are we changing our default in configure.ac?

    According to the last comment in #16684, we wouldn’t be changing anything in depends:

    No, everything (including depends) will stay at C++11.

    However I don’t think we want to be mixing C++11 built dependencies, with a C++17 built bitcoind, if there is any potential for compatibility issues.

    Instead, I’d suggest we build the 0.21.0 release as C++11, and do a complete switch to C++17 for 0.22.0. Also, if we actually wanted to use C++17 in depends for 0.21.0, we couldn’t without breaking C++11 compat (Qt). See below.

    Here is a potential timeline/TODOs for the migration:

    Potential Timeline

    One thing worth noting, is that we cannot bump our Qt to a newer LTS for 0.21.0, without breaking C++11 compatibility. Qt 5.12 is not compilable in C++11 mode, as the project has started using C++14 features throughout at least the macOS portions of it’s codebase, and seemingly “forgotten” that the release is meant to be C++11 compatible. Upstream bug here: https://bugreports.qt.io/browse/QTBUG-77310.

    Building Qt requires C+11, at a minimum, but in practice we use later features, usually under a feature define, or with a fallback of some kind. On platforms that support > C11, we’ve (apparently) not considered the fallback necessary, under the assumption C+14 is always available.

  2. doc: add C++17 release note for 0.21.0
    Mention that the codebase is now compatible with C++17, and that the
    intention is to require C++17 starting with 0.22.0.
    f1d21ef1c3
  3. fanquake added the label Docs on Jun 17, 2020
  4. fanquake added this to the milestone 0.21.0 on Jun 17, 2020
  5. MarcoFalke commented at 3:47 pm on June 17, 2020: member
    ACK f1d21ef1c370898ae10569f2a8569bd98d71a981 can’t hurt to give an advance warning
  6. MarcoFalke commented at 3:51 pm on June 17, 2020: member

    Some time prior to split-off:

    Confirm that compiling with C++17 works.
    Confirm that C++11 compatibility has not been broken.
    

    our current ci configs should take care of this already

  7. theStack approved
  8. theStack commented at 1:13 pm on June 18, 2020: member
    ACK f1d21ef1c370898ae10569f2a8569bd98d71a981
  9. Sjors commented at 2:39 pm on June 19, 2020: member

    ACK f1d21ef1c370898ae10569f2a8569bd98d71a981

    One thing worth noting, is that we cannot bump our Qt to a newer LTS for 0.21.0, without breaking C++11 compatibility.

    Perusing all open GUI issues old repo / new repo I don’t see any burning issues that need a version bump. In other words, happy to wait for 0.22. Regardless, I look forward to the 0.21.0 branch-off.

    Bump Qt from 5.9.x (no c++17 mode) to, likely, 5.15.x (LTS)

    Unfortunately QT retroactively dropped LTS for 5.15 (see #18580), i.e. it’s commercial support only. But as @MarcoFalke pointed out:

    I don’t think we have a choice. Now that they dropped LTS, all we can do is follow their latest open source release

    It’s certainly doesn’t seem like a reason to stick to a c++11 version of QT, since those aren’t maintained at all, making it mostly an orthogonal concern.

  10. JeremyRubin commented at 11:21 pm on June 20, 2020: contributor

    This seems consistent with #16684 (comment)

    I would add a note that 0.21 backports and minor versions may begin requiring C++17 as well, depending on what they are (e.g., if consensus code gets added using a C++17 feature, the soft fork rules would require C++17). As such, it’s reasonable to say that 0.21.0 is the last version a user should expect to be compatible with C++11.

  11. laanwj commented at 5:13 pm on June 22, 2020: member
    ACK f1d21ef1c370898ae10569f2a8569bd98d71a981
  12. laanwj merged this on Jun 22, 2020
  13. laanwj closed this on Jun 22, 2020

  14. fanquake deleted the branch on Jun 23, 2020
  15. DrahtBot locked this on Feb 15, 2022

github-metadata-mirror

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: 2024-07-06 01:12 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me