dogecoin/doc
Wladimir J. van der Laan e3fa3c7d67
Merge #19305: doc: add C++17 release note for 0.21.0
f1d21ef1c3 doc: add C++17 release note for 0.21.0 (fanquake)

Pull request description:

  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](https://github.com/bitcoin/bitcoin/issues/16684#issuecomment-643778757) 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
  * 17 / 6 / 2020 - Today
  * Some time prior to split-off:
      * Confirm that compiling with C++17 works.
      * Confirm that C++11 compatibility has not been broken.
  * 1 / 11 / 2020
      * [0.21.0 split off happens](https://github.com/bitcoin/bitcoin/issues/18947).
  * 2 / 11 / 2020
      * Merge an "incompatible with C++11" change into master.
      * Switch configure to use C++17 mode by default.
      * Update minimum compiler requirements. At least:
          * Clang 5: https://clang.llvm.org/cxx_status.html#cxx17
          * GCC 7: https://gcc.gnu.org/projects/cxx-status.html#cxx17
              * While GCC has some support from 5, it seems a more complete support landed in GCC 7.
              * https://gcc.gnu.org/gcc-7/changes.html#cxx
      * Switch depends packages to use C++17 where applicable.
      * Bump Qt from 5.9.x (no c++17 mode) to, likely, 5.15.x (LTS).
      * Drop support for macOS < 10.14.x
          * The c++ dylib shipped with macOS [doesn't support c++17, prior to macOS 10.14](https://github.com/bitcoin/bitcoin/issues/16684#issuecomment-643722538).
          * Building Qt 5.12 or 5.15 in C++17 mode will also require a minimum macOS deployment target of 10.14. https://codereview.qt-project.org/c/qt/qtbase/+/283832.
      * Begin merging PRs like #19183 and #19245.
          * I've left some comments in #19183 if the macOS runtime issue interests anyone.
  * 3 / 12 / 2020
      * 0.21.0 released.
      * Built as C++11.
      * Contains warning in release notes that compiling 0.22.0 will require C++17.
  * 3 / 6 / 2021
      * 0.22.0 released.
      * Full of C++17 code.

  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.

ACKs for top commit:
  MarcoFalke:
    ACK f1d21ef1c3 can't hurt to give an advance warning
  Sjors:
    ACK f1d21ef1c3
  laanwj:
    ACK f1d21ef1c3
  theStack:
    ACK f1d21ef1c3

Tree-SHA512: 706baceb07d9584783ba6e437cdf447531c20f586285b9797edc21f3adb1e9d386059d1c543c70eb298d0f8e555dafb6682a55d35c5836979fc12132e8ba06f5
2020-06-22 19:13:22 +02:00
..
man doc: remove OpenSSL from build instructions and licensing info 2019-11-18 08:56:48 -05:00
release-notes doc: Add release-notes-0.20.0.md 2020-06-02 18:16:51 -04:00
.gitignore
assets-attribution.md
benchmarking.md [doc] fix Makefile target in benchmarking.md 2019-10-08 22:14:04 +02:00
bips.md doc: Update doc/bips.md with recent changes in master 2019-11-05 10:20:16 -05:00
bitcoin-conf.md doc: add default bitcoin.conf locations 2019-08-19 19:34:57 +02:00
bitcoin_logo_doxygen.png
build-freebsd.md doc: mention MAKE=gmake workaround when building on a BSD 2020-03-18 07:55:07 +08:00
build-netbsd.md doc: mention MAKE=gmake workaround when building on a BSD 2020-03-18 07:55:07 +08:00
build-openbsd.md doc: mention MAKE=gmake workaround when building on a BSD 2020-03-18 07:55:07 +08:00
build-osx.md Merge #18070: doc: add note about brew doctor 2020-02-20 20:56:41 +08:00
build-unix.md doc: remove Boost Chrono from install docs 2020-03-07 08:34:31 +08:00
build-windows.md doc : add link to readme.md in the first section 2020-05-27 08:02:00 +02:00
dependencies.md build: Set libevent minimum version to 2.0.21 2020-04-17 13:53:34 +03:00
descriptors.md Output a descriptor in createmultisig and addmultisigaddress 2020-01-30 23:55:36 -05:00
developer-notes.md [doc] Update thread information in developer docs 2020-04-15 12:02:39 -04:00
dnsseed-policy.md
Doxyfile.in test: Add crc32c exception to various linters and generation scripts 2020-01-28 17:01:48 +01:00
files.md doc: Warn about wallet.dat re-use and backups 2020-03-10 01:51:03 +08:00
fuzzing.md build: turn on --enable-c++17 by --enable-fuzz 2020-06-05 11:50:34 +02:00
gitian-building.md
init.md fixing documentation to not require rpcpassword 2020-03-21 19:51:31 +05:30
JSON-RPC-interface.md doc: Clarify RPC versioning 2019-04-15 11:20:16 -04:00
multiprocess.md build: multiprocess autotools changes 2020-05-12 09:47:06 -04:00
productivity.md doc: Drop protobuf stuff 2020-05-23 10:14:18 +03:00
psbt.md doc: fix/improve analyzepsbt in doc/psbt.md 2019-05-19 17:31:37 +02:00
README.md doc: Update webchat URLs in README.md 2020-04-02 13:09:55 +00:00
README_doxygen.md doc: Improve doxygen readme navigation section 2019-09-23 19:22:06 -04:00
README_windows.txt
reduce-memory.md doc: block-relay-only is not blocksonly 2020-03-30 09:09:12 -04:00
reduce-traffic.md doc: noban precludes maxuploadtarget disconnects 2020-06-04 16:39:23 -04:00
release-notes-16377.md [rpc] fundrawtransaction: add_inputs option to control automatic input adding 2020-03-12 13:07:17 +01:00
release-notes-16528.md doc: Move 0.21 fragments into the main release notes 2020-06-02 19:09:39 -04:00
release-notes-18918.md doc: Move 0.21 fragments into the main release notes 2020-06-02 19:09:39 -04:00
release-notes-19200.md doc: release note for rpc getaddressinfo removals 2020-06-08 10:38:36 +02:00
release-notes.md doc: add C++17 release note for 0.21.0 2020-06-17 23:18:38 +08:00
release-process.md [doc] fix git add argument 2020-04-03 12:52:36 +02:00
REST-interface.md fix: update rest info on block size and json 2020-04-28 20:17:03 -05:00
shared-libraries.md doc: correct bitcoinconsensus_version in shared-libraries 2019-04-07 21:42:32 +08:00
tor.md Elaborate on the need to re-login on Debian-based systems to use tor following usermod 2019-09-12 08:27:03 -05:00
translation_process.md build: Factor out qt translations from build system 2019-09-29 14:24:54 +02:00
translation_strings_policy.md doc: Do not translate technical or extremely rare errors 2020-05-05 04:46:08 +03:00
zmq.md Add a link from ZMQ doc to ZMQ example in contrib/ 2020-05-12 16:06:28 +08:00

Bitcoin Core

Setup

Bitcoin Core is the original Bitcoin client and it builds the backbone of the network. It downloads and, by default, stores the entire history of Bitcoin transactions, which requires a few hundred gigabytes of disk space. Depending on the speed of your computer and network connection, the synchronization process can take anywhere from a few hours to a day or more.

To download Bitcoin Core, visit bitcoincore.org.

Running

The following are some helpful notes on how to run Bitcoin Core on your native platform.

Unix

Unpack the files into a directory and run:

  • bin/bitcoin-qt (GUI) or
  • bin/bitcoind (headless)

Windows

Unpack the files into a directory, and then run bitcoin-qt.exe.

macOS

Drag Bitcoin Core to your applications folder, and then run Bitcoin Core.

Need Help?

Building

The following are developer notes on how to build Bitcoin Core on your native platform. They are not complete guides, but include notes on the necessary libraries, compile flags, etc.

Development

The Bitcoin repo's root README contains relevant information on the development process and automated testing.

Resources

Miscellaneous

License

Distributed under the MIT software license.