0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-02-03 09:56:38 -05:00
bitcoin-bitcoin-core/src
fanquake 3e691258d8
Merge bitcoin/bitcoin#28349: build: Require C++20 compiler
fa6e50d6c7 fuzz: Use C++20 starts_with in rpc.cpp (MarcoFalke)
faa48388bc Revert "tracepoints: Disables `-Wgnu-zero-variadic-macro-arguments` to compile without warnings" (MarcoFalke)
fae3b77a87 refactor: Drop unused _Pragma to ignore -Wgnu-zero-variadic-macro-arguments (MarcoFalke)
fa02fc0a86 refactor: modernize-use-default-member-init for bit-fields (C++20) (MarcoFalke)
fa67f096bd build: Require C++20 compiler (MarcoFalke)

Pull request description:

  C++20 allows to write safer code, because it allows to enforce more stuff at compile time (`constinit`, `conteval`, `constexpr`, `std::span`, ...).

  Also, it allows to write less verbose and easier to understand code (C++ 20 Concepts).

  See https://github.com/bitcoin/bitcoin/issues/23363 and https://en.cppreference.com/w/cpp/compiler_support#cpp20

  With g++-10 (https://github.com/bitcoin/bitcoin/pull/28348) and clang-13 (https://github.com/bitcoin/bitcoin/pull/28210), there is broad support for almost all features of C++20.

  It should be fine to require a C++20 compiler for Bitcoin Core 27.0 in 2024 (next year), not the soon upcoming 26.0 next month.

  This pull request includes three small cleanups to make use of C++20 features. If any issues are detected before or after merge, this should be easy to revert. If no issues arise, it should be fine to make use of more involved C++20 features later on.

ACKs for top commit:
  fanquake:
    ACK fa6e50d6c7

Tree-SHA512: 244d79bfb0b750a4bdd713f40573b9ca33816fb84b6c84a58f027b9d7d4bb0cc4f18642959e4cf3d094808a69e5b8a327ca8521d7c0c08af27dacb5da3e78e71
2023-12-08 12:10:16 +00:00
..
bench Merge bitcoin/bitcoin#28894: wallet: batch all individual spkms setup db writes in a single db txn 2023-12-08 11:25:01 +00:00
common Merge bitcoin/bitcoin#28486: test, bench: Initialize and terminate use of Winsock properly 2023-11-29 17:14:34 +00:00
compat Remove __cplusplus from compat/assumptions.h 2023-10-04 11:11:37 +02:00
config
consensus Include version.h in fewer places 2023-11-16 11:36:22 +10:00
crc32c
crypto Add ability to specify SHA256 implementation for benchmark purposes 2023-09-20 21:11:55 +01:00
index blockstorage: switch from CAutoFile to AutoFile 2023-11-18 03:01:03 +10:00
init init: remove config option names from translated -loglevel strings 2023-06-15 10:27:56 -06:00
interfaces Use ParamsWrapper for witness serialization 2023-11-14 08:45:30 +10:00
ipc refactor: Move system from util to common library 2023-05-20 12:08:13 +02:00
kernel Merge bitcoin/bitcoin#28368: Fee Estimator updates from Validation Interface/CScheduler thread 2023-12-01 15:07:23 -05:00
leveldb
logging
minisketch
node Merge bitcoin/bitcoin#28368: Fee Estimator updates from Validation Interface/CScheduler thread 2023-12-01 15:07:23 -05:00
policy tx fees, policy: CBlockPolicyEstimator update from CValidationInterface notifications 2023-11-22 11:48:21 +01:00
primitives Merge bitcoin/bitcoin#28766: Improve peformance of CTransaction::HasWitness (28107 follow-up) 2023-11-28 08:44:41 -05:00
qt Merge bitcoin/bitcoin#26762: bugfix: Make CCheckQueue RAII-styled (attempt 2) 2023-11-30 14:28:46 -05:00
rpc rpc: fix getrawtransaction segfault 2023-12-05 13:11:02 -05:00
script Fix IWYU for the script_flags fuzz target 2023-11-23 17:57:53 +01:00
secp256k1 Update secp256k1 subtree to upstream release 0.4.0 2023-09-04 12:51:20 -04:00
support pool: make sure PoolAllocator uses the correct alignment 2023-11-19 18:43:29 +01:00
test Merge bitcoin/bitcoin#28349: build: Require C++20 compiler 2023-12-08 12:10:16 +00:00
univalue Remove unused raw-pointer read helper from univalue 2023-07-27 14:24:52 +02:00
util Revert "tracepoints: Disables -Wgnu-zero-variadic-macro-arguments to compile without warnings" 2023-12-07 11:06:13 +01:00
wallet Merge bitcoin/bitcoin#28894: wallet: batch all individual spkms setup db writes in a single db txn 2023-12-08 11:25:01 +00:00
zmq CValidationInterface: modify the parameter of TransactionAddedToMempool 2023-11-22 11:48:21 +01:00
.bear-tidy-config tidy: modernize-use-emplace 2023-10-12 11:27:19 +02:00
.clang-format build: Require C++20 compiler 2023-12-07 11:05:33 +01:00
.clang-tidy refactor: Fix bugprone-string-constructor warning 2023-10-30 14:59:17 +01:00
addrdb.cpp build: Bump minimum supported Clang to clang-13 2023-10-24 18:52:00 +02:00
addrdb.h Use serialization parameters for CAddress serialization 2023-09-05 10:13:25 +02:00
addresstype.cpp Add PubKeyDestination for P2PK scripts 2023-09-12 12:14:31 -04:00
addresstype.h bugfix: Mark CNoDestination and PubKeyDestination constructor explicit 2023-10-25 22:46:55 +02:00
addrman.cpp Merge bitcoin/bitcoin#27581: net: Continuous ASMap health check 2023-12-06 11:22:42 -05:00
addrman.h Merge bitcoin/bitcoin#27581: net: Continuous ASMap health check 2023-12-06 11:22:42 -05:00
addrman_impl.h net: Optionally include terrible addresses in GetAddr results 2023-10-04 18:08:49 +02:00
arith_uint256.cpp refactor: Remove unused and fragile string interface from arith_uint256 2023-11-21 17:37:25 +01:00
arith_uint256.h refactor: Remove unused and fragile string interface from arith_uint256 2023-11-21 17:37:25 +01:00
attributes.h Introduce platform-agnostic ALWAYS_INLINE macro 2023-05-04 20:57:51 +01:00
banman.cpp Merge bitcoin/bitcoin#24097: Replace RecursiveMutex m_cs_banned with Mutex, and rename it 2023-11-02 14:09:27 -04:00
banman.h Merge bitcoin/bitcoin#24097: Replace RecursiveMutex m_cs_banned with Mutex, and rename it 2023-11-02 14:09:27 -04:00
base58.cpp
base58.h
bech32.cpp
bech32.h
bip324.cpp net: merge V2Transport constructors, move key gen 2023-09-10 16:11:52 -04:00
bip324.h net: merge V2Transport constructors, move key gen 2023-09-10 16:11:52 -04:00
bitcoin-chainstate.cpp Merge bitcoin/bitcoin#26762: bugfix: Make CCheckQueue RAII-styled (attempt 2) 2023-11-30 14:28:46 -05:00
bitcoin-cli-res.rc
bitcoin-cli.cpp refactor: Move system from util to common library 2023-05-20 12:08:13 +02:00
bitcoin-tx-res.rc
bitcoin-tx.cpp Use Txid in COutpoint 2023-11-21 13:15:44 +00:00
bitcoin-util-res.rc
bitcoin-util.cpp Include version.h in fewer places 2023-11-16 11:36:22 +10:00
bitcoin-wallet-res.rc
bitcoin-wallet.cpp refactor: Move system from util to common library 2023-05-20 12:08:13 +02:00
bitcoind-res.rc
bitcoind.cpp Remove the syscall sandbox 2023-06-16 10:38:19 +01:00
blockencodings.cpp serialize: Drop useless version param from GetSerializeSize() 2023-11-16 11:14:13 +10:00
blockencodings.h Use ParamsWrapper for witness serialization 2023-11-14 08:45:30 +10:00
blockfilter.cpp refactor: SpanReader without nVersion 2023-11-28 12:42:07 +01:00
blockfilter.h Remove unused includes from blockfilter.h 2023-08-17 18:28:15 +02:00
chain.cpp
chain.h refactor: Remove CBlockFileInfo::SetNull 2023-10-20 16:29:02 +02:00
chainparams.cpp test: Throw error when -signetchallenge is non-hex 2023-05-25 19:24:05 +02:00
chainparams.h test: Throw error when -signetchallenge is non-hex 2023-05-25 19:24:05 +02:00
chainparamsbase.cpp refactor: Use ChainType enum exhaustively 2023-05-10 10:39:58 +02:00
chainparamsbase.h refactor: Use ChainType enum exhaustively 2023-05-10 10:39:58 +02:00
chainparamsseeds.h
checkqueue.h refactor: Make CCheckQueue non-copyable and non-movable explicitly 2023-10-03 10:52:17 +01:00
clientversion.cpp
clientversion.h
coins.cpp Use Txid in COutpoint 2023-11-21 13:15:44 +00:00
coins.h Merge bitcoin/bitcoin#28922: Use Txid in COutpoint 2023-11-24 14:41:58 +00:00
compressor.cpp Clean up things that include script/standard.h 2023-08-14 17:38:27 -04:00
compressor.h
core_io.h Use ParamsWrapper for witness serialization 2023-11-14 08:45:30 +10:00
core_memusage.h
core_read.cpp Include version.h in fewer places 2023-11-16 11:36:22 +10:00
core_write.cpp Use ParamsWrapper for witness serialization 2023-11-14 08:45:30 +10:00
cuckoocache.h
dbwrapper.cpp dbwrapper: Use DataStream for batch operations 2023-09-12 12:07:39 +02:00
dbwrapper.h dbwrapper: Use DataStream for batch operations 2023-09-12 12:07:39 +02:00
deploymentinfo.cpp
deploymentinfo.h
deploymentstatus.cpp
deploymentstatus.h
dummywallet.cpp
external_signer.cpp Remove unused version.h include 2023-11-30 11:28:19 +01:00
external_signer.h refactor: Move system from util to common library 2023-05-20 12:08:13 +02:00
flatfile.cpp
flatfile.h
hash.cpp
hash.h Include version.h in fewer places 2023-11-16 11:36:22 +10:00
headerssync.cpp tidy: modernize-use-emplace 2023-10-12 11:27:19 +02:00
headerssync.h
httprpc.cpp refactor: drop protocol.h include header in rpc/util.h 2023-09-19 15:54:17 -06:00
httprpc.h
httpserver.cpp Merge bitcoin/bitcoin#26078: p2p: return CSubNet in LookupSubNet 2023-10-26 14:29:47 -04:00
httpserver.h
i2p.cpp Merge bitcoin/bitcoin#28695: net: Sanity check private keys received from SAM proxy 2023-10-30 14:44:40 +01:00
i2p.h i2p: destroy the session if we get an unexpected error from the I2P router 2023-10-05 14:11:13 +02:00
indirectmap.h
init.cpp init: don't delete PID file if it was not generated 2023-12-04 12:54:20 +00:00
init.h refactor: index, decouple 'Init' from 'Start' 2023-07-10 10:47:17 -03:00
key.cpp key: don't allocate secure mem for null (invalid) key 2023-09-27 15:05:26 -04:00
key.h key: don't allocate secure mem for null (invalid) key 2023-09-27 15:05:26 -04:00
key_io.cpp Merge bitcoin/bitcoin#28246: wallet: Use CTxDestination in CRecipient instead of just scriptPubKey 2023-09-19 16:48:43 +00:00
key_io.h Clean up things that include script/standard.h 2023-08-14 17:38:27 -04:00
logging.cpp [log] add category TXPACKAGES for orphanage and package relay 2023-08-29 16:41:22 +01:00
logging.h [log] add category TXPACKAGES for orphanage and package relay 2023-08-29 16:41:22 +01:00
Makefile.am Merge bitcoin/bitcoin#28368: Fee Estimator updates from Validation Interface/CScheduler thread 2023-12-01 15:07:23 -05:00
Makefile.bench.include bench: add benchmark for wallet creation procedure 2023-11-16 11:27:17 -03:00
Makefile.crc32c.include
Makefile.leveldb.include
Makefile.minisketch.include
Makefile.qt.include Merge bitcoin/bitcoin#22764: build: Include qt sources for parsing with extract_strings.py 2023-10-19 13:25:49 +01:00
Makefile.qt_locale.include qt: Translation updates from Transifex 2023-09-01 07:39:00 +01:00
Makefile.qttest.include
Makefile.test.include fuzz: add target for DescriptorScriptPubKeyMan 2023-11-20 15:57:56 -03:00
Makefile.test_fuzz.include fuzz: move MockedDescriptorConverter to fuzz/util 2023-11-20 15:57:50 -03:00
Makefile.test_util.include Merge bitcoin/bitcoin#27425: test: move remaining rand code from util/setup_common to util/random 2023-07-19 10:26:11 +01:00
Makefile.univalue.include
mapport.cpp Remove the syscall sandbox 2023-06-16 10:38:19 +01:00
mapport.h
memusage.h add std::list to memusage 2023-09-13 11:37:45 +01:00
merkleblock.cpp refactor: Use Txid in CMerkleBlock 2023-11-28 17:49:41 +01:00
merkleblock.h refactor: Use Txid in CMerkleBlock 2023-11-28 17:49:41 +01:00
net.cpp Merge bitcoin/bitcoin#27581: net: Continuous ASMap health check 2023-12-06 11:22:42 -05:00
net.h Merge bitcoin/bitcoin#27581: net: Continuous ASMap health check 2023-12-06 11:22:42 -05:00
net_permissions.cpp Merge bitcoin/bitcoin#26078: p2p: return CSubNet in LookupSubNet 2023-10-26 14:29:47 -04:00
net_permissions.h
net_processing.cpp Merge bitcoin/bitcoin#28579: refactor: Remove redundant checks in compat/assumptions.h 2023-11-28 16:51:28 -05:00
net_processing.h refactor: P2P transport without serialize version and type 2023-11-23 13:43:39 +01:00
net_types.cpp p2p: return CSubNet in LookupSubNet 2023-05-30 16:27:21 -03:00
net_types.h
netaddress.cpp Inline short, often-called, rarely-changed basic CNetAddr getters 2023-07-19 12:43:05 -06:00
netaddress.h net: put CJDNS prefix byte in a constant 2023-10-05 15:10:32 +02:00
netbase.cpp Merge bitcoin/bitcoin#28649: Do the SOCKS5 handshake reliably 2023-11-07 14:11:58 -05:00
netbase.h Merge bitcoin/bitcoin#28649: Do the SOCKS5 handshake reliably 2023-11-07 14:11:58 -05:00
netgroup.cpp Merge bitcoin/bitcoin#27581: net: Continuous ASMap health check 2023-12-06 11:22:42 -05:00
netgroup.h net: Add continuous ASMap health check logging 2023-12-02 22:03:08 +01:00
netmessagemaker.h refactor: NetMsg::Make() without nVersion 2023-11-20 14:02:27 +01:00
noui.cpp
noui.h
outputtype.cpp Clean up things that include script/standard.h 2023-08-14 17:38:27 -04:00
outputtype.h Move CTxDestination to its own file 2023-08-14 17:38:27 -04:00
pow.cpp
pow.h
prevector.h
protocol.cpp refactor: Initialize magic bytes in constructor initializer 2023-11-13 14:17:59 +01:00
protocol.h scripted-diff: Use ser params operator 2023-10-13 10:30:49 +02:00
psbt.cpp Remove unused version.h include 2023-11-30 11:28:19 +01:00
psbt.h refactor: SpanReader without nVersion 2023-11-28 12:42:07 +01:00
pubkey.cpp pubkey: introduce a GetEvenCorrespondingCPubKey helper 2023-10-08 02:43:19 +02:00
pubkey.h pubkey: introduce a GetEvenCorrespondingCPubKey helper 2023-10-08 02:43:19 +02:00
random.cpp Merge bitcoin/bitcoin#26839: Add support for RNDR/RNDRRS for AArch64 on Linux 2023-11-07 15:00:38 -05:00
random.h crypto: refactor ChaCha20 classes to use Span<std::byte> interface 2023-08-17 15:26:34 -04:00
randomenv.cpp [refactor] Remove compat.h from kernel headers 2023-09-12 22:51:48 +02:00
randomenv.h
rest.cpp Use Txid in COutpoint 2023-11-21 13:15:44 +00:00
rest.h
reverse_iterator.h
scheduler.cpp Remove the syscall sandbox 2023-06-16 10:38:19 +01:00
scheduler.h
serialize.h Remove unused SER_NETWORK, SER_DISK 2023-11-30 11:28:17 +01:00
shutdown.cpp kernel: Add fatalError method to notifications 2023-06-28 09:52:33 +02:00
shutdown.h kernel: Add fatalError method to notifications 2023-06-28 09:52:33 +02:00
signet.cpp refactor: SpanReader without nVersion 2023-11-28 12:42:07 +01:00
signet.h
span.h span: Make Span template deduction guides work in SFINAE context 2023-10-20 10:30:16 -04:00
streams.cpp streams: Teach AutoFile how to XOR 2023-07-19 18:12:42 +02:00
streams.h Remove unused CDataStream 2023-11-30 11:27:54 +01:00
sync.cpp
sync.h Merge bitcoin/bitcoin#27116: doc: clarify that LOCK() internally checks whether the mutex is held 2023-10-26 15:02:13 -04:00
threadsafety.h
timedata.cpp
timedata.h
tinyformat.h
torcontrol.cpp doc: fix typos 2023-11-07 10:21:51 +09:00
torcontrol.h doc, refactor: Changing -torcontrol help to specify that a default port is used 2023-08-17 23:58:47 -05:00
txdb.cpp Merge bitcoin/bitcoin#28195: blockstorage: Drop legacy -txindex check 2023-09-05 11:37:35 +01:00
txdb.h move-only: Move CBlockTreeDB to node/blockstorage 2023-08-01 15:27:33 +02:00
txmempool.cpp Merge bitcoin/bitcoin#28368: Fee Estimator updates from Validation Interface/CScheduler thread 2023-12-01 15:07:23 -05:00
txmempool.h tx fees, policy: CBlockPolicyEstimator update from CValidationInterface notifications 2023-11-22 11:48:21 +01:00
txorphanage.cpp Use type-safe txid types in orphanage 2023-10-12 11:56:37 +01:00
txorphanage.h Use type-safe txid types in orphanage 2023-10-12 11:56:37 +01:00
txrequest.cpp refactor: modernize-use-default-member-init for bit-fields (C++20) 2023-12-07 11:06:01 +01:00
txrequest.h
uint256.cpp
uint256.h Merge bitcoin/bitcoin#27927: util: Allow std::byte and char Span serialization 2023-06-28 15:12:12 -04:00
undo.h Include version.h in fewer places 2023-11-16 11:36:22 +10:00
validation.cpp Merge bitcoin/bitcoin#28368: Fee Estimator updates from Validation Interface/CScheduler thread 2023-12-01 15:07:23 -05:00
validation.h Merge bitcoin/bitcoin#26762: bugfix: Make CCheckQueue RAII-styled (attempt 2) 2023-11-30 14:28:46 -05:00
validationinterface.cpp CValidationInterface: modify the parameter of TransactionAddedToMempool 2023-11-22 11:48:21 +01:00
validationinterface.h CValidationInterface: modify the parameter of TransactionAddedToMempool 2023-11-22 11:48:21 +01:00
versionbits.cpp
versionbits.h
walletinitinterface.h
warnings.cpp refactor: Move system from util to common library 2023-05-20 12:08:13 +02:00
warnings.h