build: Use clang-cl to build on Windows natively #31507

pull hebasto wants to merge 5 commits into bitcoin:master from hebasto:241216-clang-cl changing 9 files +116 −86
  1. hebasto commented at 10:58 am on December 16, 2024: member

    Building on Windows using Clang instead of the MS compiler may be beneficial, considering the issues with the latter, as outlined in #31456:

    • non-optimized codegen: [build: remove need to test for endianness #29852 (comment)](/bitcoin-bitcoin/29852/#issuecomment-2049803970)

    • compile failure: [MSVC 17.12.0 internal compiler error #31303](https://github.com/bitcoin/bitcoin/issues/31303)

    • legal, but brittle stdlib: [util: Drop boost posix_time in ParseISO8601DateTime #31391 (comment)](/bitcoin-bitcoin/31391/#issuecomment-2510762011)

    • unspecified issue: [refactor: Check translatable format strings at compile-time #31061 (comment)](/bitcoin-bitcoin/31061/#issuecomment-2531244463)

    Additionally, MSVC does not support inline assembly on the ARM and x64 processors.

    So this PR:

    1. Closes #31456 (and addresses #14118).
    2. Could be an alternative to #24773.

    Additionally, clang-cl:

    1. Produces binaries with better performance. For example:
    MSVC, block/s clang-cl, block/s benchmark
    7.40 11.52 ConnectBlockAllEcdsa
    7.32 11.81 ConnectBlockAllSchnorr
    7.38 11.45 ConnectBlockMixedEcdsaSchnorr
    91.86 143.12 DeserializeAndCheckBlockTest
    121.46 189.04 DeserializeBlockTest
    1. Builds faster on the CI:
  2. hebasto added the label Windows on Dec 16, 2024
  3. hebasto added the label Build system on Dec 16, 2024
  4. DrahtBot commented at 10:58 am on December 16, 2024: contributor

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    Code Coverage & Benchmarks

    For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/31507.

    Reviews

    See the guideline for information on the review process.

    Type Reviewers
    Concept ACK fanquake

    If your review is incorrectly listed, please copy-paste <!–meta-tag:bot-skip–> into the comment that the bot should ignore.

    Conflicts

    Reviewers, this pull request conflicts with the following ones:

    • #33585 (cmake: Use builtin support for .manifest files by purpleKarrot)

    If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

  5. DrahtBot added the label CI failed on Dec 16, 2024
  6. DrahtBot commented at 12:00 pm on December 16, 2024: contributor

    🚧 At least one of the CI tasks failed. Debug: https://github.com/bitcoin/bitcoin/runs/34465651629

    Try to run the tests locally, according to the documentation. However, a CI failure may still happen due to a number of reasons, for example:

    • Possibly due to a silent merge conflict (the changes in this pull request being incompatible with the current code in the target branch). If so, make sure to rebase on the latest commit of the target branch.

    • A sanitizer issue, which can only be found by compiling with the sanitizer and running the affected test.

    • An intermittent issue.

    Leave a comment here, if you need help tracking down a confusing failure.

  7. maflcko commented at 12:52 pm on December 16, 2024: member

    Seems fine to add this, because it is easy to remove and can increase the build compatibly in the meantime.

    Also, it allows to evaluate the codegen, which could be substantially better than msvc, or detect more msvc bugs.

    If there are enough benefits to clang-cl, the docs could be updated to use it and msvc could be dropped from the docs and possibly CI.

  8. fanquake commented at 12:54 pm on December 16, 2024: member

    Also, it allows to evaluate the codegen, which could be substantially better than msvc, or detect more msvc bugs.

    Does it? My read of the docs was that clang just tries to internally work around all the MSVC bugs, so it seems like it will just continue to “hide” issues?

  9. hebasto commented at 1:33 pm on December 16, 2024: member

    From #31456#issue-2729797132:

    MSVC has many issues, for example:

    Added two commits that enable compiling fuzz/utxo_snapshot.cpp with clang-cl and switch “Win64 native, fuzz” job to clang-cl.

  10. in cmake/module/TryAppendCXXFlags.cmake:122 in 49cfcaf254 outdated
    119@@ -120,7 +120,11 @@ function(try_append_cxx_flags flags)
    120 endfunction()
    121 
    122 if(MSVC)
    


    theuni commented at 7:44 pm on December 16, 2024:
    Can’t the if(MSVC) go away and we just rely on the CMAKE_CXX_COMPILER_ID test?

    hebasto commented at 12:08 pm on December 17, 2024:
    In this case, I think we do want to check MSVC, as it separates MSVC specific syntax /WX from GCC syntax -Werror.
  11. theuni commented at 7:46 pm on December 16, 2024: member
    At a high level.. seems to me we want to avoid doing if(MSVC) as much as possible and instead check against the compiler id, no? Except for the cases where we REALLY mean MSVC.
  12. theuni commented at 8:02 pm on December 16, 2024: member
    Hmm, actually, it seems like maybe CMAKE_CXX_COMPILER_FRONTEND_VARIANT is what we should be testing against?
  13. hebasto force-pushed on Dec 17, 2024
  14. fanquake commented at 11:49 am on December 17, 2024: member

    < to be added >

    It’d be good if this could actually be filled in, so it’s clear what the goals are / what’s trying to be acheived here.

  15. hebasto commented at 12:11 pm on December 17, 2024: member

    Hmm, actually, it seems like maybe CMAKE_CXX_COMPILER_FRONTEND_VARIANT is what we should be testing against?

    It doesn’t seem reliable, as it might not be set at all for CMake versions < 3.26.

  16. DrahtBot added the label Needs rebase on Jan 27, 2025
  17. hebasto force-pushed on Mar 10, 2025
  18. hebasto commented at 5:47 pm on March 10, 2025: member
    Rebased on #32028.
  19. hebasto force-pushed on Mar 10, 2025
  20. DrahtBot removed the label CI failed on Mar 10, 2025
  21. DrahtBot removed the label Needs rebase on Mar 10, 2025
  22. hebasto commented at 3:28 pm on March 11, 2025: member

    < to be added >

    It’d be good if this could actually be filled in, so it’s clear what the goals are / what’s trying to be acheived here.

    Done.

  23. hebasto force-pushed on Mar 11, 2025
  24. in cmake/leveldb.cmake:98 in 80e7e80a6d
     96     IF_CHECK_PASSED "-Wno-conditional-uninitialized"
     97   )
     98   try_append_cxx_flags("-Wsuggest-override" TARGET nowarn_leveldb_interface SKIP_LINK
     99     IF_CHECK_PASSED "-Wno-suggest-override"
    100   )
    101+  try_append_cxx_flags("-Wunused-member-function" TARGET nowarn_leveldb_interface SKIP_LINK
    


    fanquake commented at 3:39 am on March 12, 2025:
    In 76659d92f1925f561736ffe0f070ed0b9fef8d23: It’d be good if commits like this could contain actual details, rather than just “Adjust diagnostic flags”; especially given this is touching non-Windows code. Also, any reason to not fix the issues in leveldb, rather than adding more suppressions?

    hebasto commented at 11:58 am on May 17, 2025:

    More details have been added to the commit message.

    Also, any reason to not fix the issues in leveldb, rather than adding more suppressions?

    I’ll consider this option.


    hebasto commented at 10:10 pm on May 17, 2025:

    Also, any reason to not fix the issues in leveldb, rather than adding more suppressions?

    I’ll consider this option.

    Please see https://github.com/bitcoin-core/leveldb-subtree/pull/53.

  25. DrahtBot added the label Needs rebase on Mar 14, 2025
  26. hebasto force-pushed on Mar 17, 2025
  27. DrahtBot removed the label Needs rebase on Mar 17, 2025
  28. DrahtBot added the label Needs rebase on Mar 31, 2025
  29. hebasto force-pushed on May 13, 2025
  30. fanquake commented at 11:27 am on May 13, 2025: member
    0   test_bitcoin.vcxproj -> D:\a\bitcoin\bitcoin\build\bin\Release\test_bitcoin.exe
    1lld-link : warning : found both wWinMain and WinMain; using latter [D:\a\bitcoin\bitcoin\build\src\qt\bitcoin-qt.vcxproj]
    2lld-link : error : undefined symbol: __declspec(dllimport) PathRemoveFileSpecW [D:\a\bitcoin\bitcoin\build\src\qt\bitcoin-qt.vcxproj]
    3  >>> referenced by bitcoinqt.lib(guiutil.obj):(bool __cdecl GUIUtil::SetStartOnSystemStartup(bool))
    4lld-link : error : undefined symbol: __declspec(dllimport) PathRemoveFileSpecW [D:\a\bitcoin\bitcoin\build\src\qt\test\test_bitcoin-qt.vcxproj]
    5  >>> referenced by bitcoinqt.lib(guiutil.obj):(bool __cdecl GUIUtil::SetStartOnSystemStartup(bool))
    
    0  C:\Program Files (x86)\Windows Kits\10\Include\10.0.20348.0\shared\ws2ipdef.h(251,33): note: expanded from macro 'IN6ADDR_LOOPBACK_INIT'
    1lld-link : error : undefined symbol: __divti3 [D:\a\bitcoin\bitcoin\build\src\test\fuzz\fuzz.vcxproj]
    2  >>> referenced by fuzz.dir\Release\feefrac.obj:(void __cdecl feefrac_mul_div_fuzz_target(class std::span<unsigned char const, -1>))
    3  >>> referenced by fuzz.dir\Release\feefrac.obj:(?Div@FeeFrac@@SA_J_LH_N@Z)
    
  31. DrahtBot removed the label Needs rebase on May 13, 2025
  32. fanquake referenced this in commit 8309a9747a on May 13, 2025
  33. hebasto force-pushed on May 13, 2025
  34. hebasto force-pushed on May 15, 2025
  35. hebasto renamed this:
    [POC] build: Use clang-cl to build on Windows natively
    build: Use clang-cl to build on Windows natively
    on May 15, 2025
  36. DrahtBot added the label Needs rebase on May 16, 2025
  37. hebasto force-pushed on May 16, 2025
  38. DrahtBot removed the label Needs rebase on May 16, 2025
  39. DrahtBot added the label Needs rebase on May 17, 2025
  40. hebasto force-pushed on May 17, 2025
  41. hebasto marked this as ready for review on May 17, 2025
  42. DrahtBot removed the label Needs rebase on May 17, 2025
  43. hebasto force-pushed on May 18, 2025
  44. fanquake commented at 9:11 am on May 21, 2025: member
    Reading the description, I’m still not really clear on the goals here. It seems like this is just adding even more ways to compile for Windows, which we have to add more CI / and more work arounds for, but doesn’t actually improve the Windows binaries we are shipping to end users in any way. This might make more sense if we were actually going to switch to shipping Windows binaries using Clang.
  45. hebasto commented at 3:05 pm on October 16, 2025: member

    Reading the description, I’m still not really clear on the goals here. It seems like this is just adding even more ways to compile for Windows, which we have to add more CI / and more work arounds for, but doesn’t actually improve the Windows binaries we are shipping to end users in any way.

    Building Bitcoin Core from source has always been considered one of the best practices. Not supporting an effective compiler, such as clang-cl on Windows, prevents users from achieving optimal performance, which negatively affects their experience.

    If adding one more CI job is an issue for the current framework, we could consider dropping MSVC support instead. And if another compiler exposes more source-level workarounds, that’s an indication the code could be made more portable.

    This might make more sense if we were actually going to switch to shipping Windows binaries using Clang.

    That’s already on the horizon.

  46. hebasto force-pushed on Oct 16, 2025
  47. hebasto commented at 3:12 pm on October 16, 2025: member
    Rebased to refresh the CI.
  48. fanquake commented at 3:21 pm on October 16, 2025: member

    prevents users from achieving optimal performance,

    Clang on Windows produces better performing binaries than MSVC?

  49. hebasto commented at 3:24 pm on October 16, 2025: member

    prevents users from achieving optimal performance,

    Clang on Windows produces better performing binaries than MSVC?

    Yes. I forgot to put this link into my previous comment: https://github.com/bitcoin-core/secp256k1/pull/1681.

  50. fanquake commented at 3:26 pm on October 16, 2025: member

    Yes. I forgot to put this link into my previous comment: https://github.com/bitcoin-core/secp256k1/pull/1681.

    Have you seen the same from actually running Core, or it’s benchmarks, or an IBD?

  51. hebasto commented at 3:34 pm on October 16, 2025: member

    Yes. I forgot to put this link into my previous comment: bitcoin-core/secp256k1#1681.

    Have you seen the same from actually running Core, or it’s benchmarks, or an IBD?

    I’ll refresh my benchmarks and post them shortly.

  52. fanquake commented at 3:36 pm on October 16, 2025: member
    0
    1D:\a\bitcoin\bitcoin\src\script\interpreter.cpp(1531,33): warning : variable 'ext_flag' may be uninitialized when used here [-Wconditional-uninitialized] [D:\a\bitcoin\bitcoin\build\src\bitcoin_consensus.vcxproj]
    2  D:\a\bitcoin\bitcoin\src\script\interpreter.cpp(1733,10): note: in instantiation of function template specialization 'SignatureHashSchnorr<CTransaction>' requested here
    3  D:\a\bitcoin\bitcoin\src\script\interpreter.cpp(1481,21): note: initialize the variable 'ext_flag' to silence this warning
    4D:\a\bitcoin\bitcoin\src\script\interpreter.cpp(1531,33): warning : variable 'ext_flag' may be uninitialized when used here [-Wconditional-uninitialized] [D:\a\bitcoin\bitcoin\build\src\bitcoin_consensus.vcxproj]
    5  D:\a\bitcoin\bitcoin\src\script\interpreter.cpp(1733,10): note: in instantiation of function template specialization 'SignatureHashSchnorr<CMutableTransaction>' requested here
    6  D:\a\bitcoin\bitcoin\src\script\interpreter.cpp(1481,21): note: initialize the variable 'ext_flag' to silence this warning
    7  bitcoin_clientversion.vcxproj -> D:\a\bitcoin\bitcoin\build\lib\Release\bitcoin_clientversion.lib
    
    0 D:\a\bitcoin\bitcoin\src\util/subprocess.h(759,10): error : private field 'parent_' is not used [-Werror,-Wunused-private-field] [D:\a\bitcoin\bitcoin\build\src\bitcoin_common.vcxproj]
    1D:\a\bitcoin\bitcoin\src\util/subprocess.h(760,7): error : private field 'err_wr_pipe_' is not used [-Werror,-Wunused-private-field] [D:\a\bitcoin\bitcoin\build\src\bitcoin_common.vcxproj]
    2D:\a\bitcoin\bitcoin\src\util/subprocess.h(1038,7): error : private field 'child_pid_' is not used [-Werror,-Wunused-private-field] [D:\a\bitcoin\bitcoin\build\src\bitcoin_common.vcxproj]
    
  53. hebasto force-pushed on Oct 16, 2025
  54. hebasto commented at 5:58 pm on October 25, 2025: member

    Yes. I forgot to put this link into my previous comment: bitcoin-core/secp256k1#1681.

    Have you seen the same from actually running Core, or it’s benchmarks, or an IBD?

    I’ll refresh my benchmarks and post them shortly.

    Below are benchmarks on my Windows machine:

      0|               ns/op |                op/s |    err% |     total | benchmark
      1|--------------------:|--------------------:|--------:|----------:|:----------
      2|        1,179,325.00 |              847.94 |    6.9% |      0.15 | :wavy_dash: `AddAndRemoveDisconnectedBlockTransactions10` (Unstable with ~10.9 iters. Increase `minEpochIterations` to e.g. 109)
      3|        1,260,020.00 |              793.64 |    5.0% |      0.16 | `AddAndRemoveDisconnectedBlockTransactions90`
      4|        1,455,309.09 |              687.14 |    2.4% |      0.18 | `AddAndRemoveDisconnectedBlockTransactionsAll`
      5|       71,612,900.00 |               13.96 |    1.1% |      0.79 | `AddrManAdd`
      6|      187,231,800.00 |                5.34 |    0.5% |      2.07 | `AddrManAddThenGood`
      7|          267,166.67 |            3,742.98 |    2.5% |      0.01 | `AddrManGetAddr`
      8|              370.42 |        2,699,601.97 |    9.5% |      0.01 | :wavy_dash: `AddrManSelect` (Unstable with ~2,676.5 iters. Increase `minEpochIterations` to e.g. 26765)
      9|        1,524,112.50 |              656.12 |   57.9% |      0.03 | :wavy_dash: `AddrManSelectByNetwork` (Unstable with ~1.6 iters. Increase `minEpochIterations` to e.g. 16)
     10|          179,040.00 |            5,585.34 |   32.2% |      0.01 | :wavy_dash: `AddrManSelectFromAlmostEmpty` (Unstable with ~5.2 iters. Increase `minEpochIterations` to e.g. 52)
     11|          698,000.00 |            1,432.66 |    1.2% |      0.01 | `AssembleBlock`
     12
     13|             ns/ecdh |              ecdh/s |    err% |     total | benchmark
     14|--------------------:|--------------------:|--------:|----------:|:----------
     15|           72,300.00 |           13,831.26 |    0.3% |      0.01 | `BIP324_ECDH`
     16
     17|             ns/byte |              byte/s |    err% |     total | benchmark
     18|--------------------:|--------------------:|--------:|----------:|:----------
     19|              118.70 |        8,424,277.24 |    0.2% |      0.01 | `Base58CheckEncode`
     20|               28.09 |       35,600,546.52 |    0.5% |      0.01 | `Base58Decode`
     21|               75.57 |       13,232,799.25 |    1.8% |      0.01 | `Base58Encode`
     22|               12.29 |       81,346,439.17 |    1.5% |      0.01 | `Bech32Decode`
     23|               18.92 |       52,852,519.65 |    0.5% |      0.01 | `Bech32Encode`
     24
     25|               ns/op |                op/s |    err% |     total | benchmark
     26|--------------------:|--------------------:|--------:|----------:|:----------
     27|              204.06 |        4,900,466.95 |    6.4% |      0.01 | :wavy_dash: `BenchLockedPool` (Unstable with ~4,444.4 iters. Increase `minEpochIterations` to e.g. 44444)
     28
     29|             ns/byte |              byte/s |    err% |     total | benchmark
     30|--------------------:|--------------------:|--------:|----------:|:----------
     31|                2.60 |      384,098,329.17 |    2.6% |      0.03 | `BenchRIPEMD160`
     32
     33|               ns/op |                op/s |    err% |     total | benchmark
     34|--------------------:|--------------------:|--------:|----------:|:----------
     35|               28.54 |       35,043,209.88 |    1.0% |      0.01 | `BenchTimeDeprecated`
     36|               27.26 |       36,688,102.89 |    0.7% |      0.01 | `BenchTimeMillis`
     37|               20.72 |       48,253,935.59 |    0.4% |      0.01 | `BenchTimeMillisSys`
     38|                2.17 |      460,814,656.01 |    0.4% |      0.01 | `BenchTimeMock`
     39|    1,162,030,600.00 |                0.86 |    0.1% |     12.83 | `BlockAssemblerAddPackageTxns`
     40|        2,600,400.00 |              384.56 |    0.2% |      0.03 | `BlockEncodingLargeExtra`
     41|        2,357,300.00 |              424.21 |    0.3% |      0.03 | `BlockEncodingNoExtra`
     42|        2,368,000.00 |              422.30 |    0.5% |      0.03 | `BlockEncodingStdExtra`
     43|    5,480,110,960.00 |                0.18 |    0.5% |    326.48 | `BlockFilterIndexSync`
     44|       45,776,800.00 |               21.85 |    0.6% |      0.50 | `BlockToJsonVerboseWrite`
     45|          484,450.00 |            2,064.20 |    1.1% |      0.01 | `BlockToJsonVerbosity1`
     46|       93,670,700.00 |               10.68 |    0.6% |      1.05 | `BlockToJsonVerbosity2`
     47|       97,989,500.00 |               10.21 |    1.3% |      1.09 | `BlockToJsonVerbosity3`
     48|          724,300.00 |            1,380.64 |    5.6% |      0.01 | :wavy_dash: `BnBExhaustion` (Unstable with ~1.0 iters. Increase `minEpochIterations` to e.g. 10)
     49
     50|              ns/job |               job/s |    err% |     total | benchmark
     51|--------------------:|--------------------:|--------:|----------:|:----------
     52|              247.58 |        4,039,030.63 |   13.1% |      0.09 | :wavy_dash: `CCheckQueueSpeedPrevectorJob` (Unstable with ~10.9 iters. Increase `minEpochIterations` to e.g. 109)
     53
     54|               ns/op |                op/s |    err% |     total | benchmark
     55|--------------------:|--------------------:|--------:|----------:|:----------
     56|              851.71 |        1,174,107.66 |    3.4% |      0.01 | `CCoinsCaching`
     57
     58|             ns/byte |              byte/s |    err% |     total | benchmark
     59|--------------------:|--------------------:|--------:|----------:|:----------
     60|                1.88 |      531,597,465.15 |    0.7% |      0.02 | `CHACHA20_1MB`
     61|                1.93 |      518,358,837.88 |    0.9% |      0.01 | `CHACHA20_256BYTES`
     62|                2.14 |      468,040,540.54 |    2.8% |      0.01 | `CHACHA20_64BYTES`
     63
     64|               ns/op |                op/s |    err% |     total | benchmark
     65|--------------------:|--------------------:|--------:|----------:|:----------
     66|          101,433.33 |            9,858.69 |    0.9% |      0.01 | `CheckBlockIndex`
     67|       18,427,900.00 |               54.27 |    0.9% |      0.21 | `CoinSelection`
     68|      293,690,800.00 |                3.40 |    0.4% |      3.24 | `ComplexMemPool`
     69
     70|            ns/block |             block/s |    err% |     total | benchmark
     71|--------------------:|--------------------:|--------:|----------:|:----------
     72|      135,146,600.00 |                7.40 |    1.2% |      1.50 | `ConnectBlockAllEcdsa`
     73|      136,611,800.00 |                7.32 |    3.1% |      1.51 | `ConnectBlockAllSchnorr`
     74|      135,439,600.00 |                7.38 |    0.8% |      1.51 | `ConnectBlockMixedEcdsaSchnorr`
     75|       10,885,800.00 |               91.86 |    2.2% |      0.12 | `DeserializeAndCheckBlockTest`
     76|        8,232,900.00 |              121.46 |    4.8% |      0.09 | `DeserializeBlockTest`
     77
     78|               ns/op |                op/s |    err% |     total | benchmark
     79|--------------------:|--------------------:|--------:|----------:|:----------
     80|        8,377,400.00 |              119.37 |    1.1% |      0.09 | `DuplicateInputs`
     81
     82|           ns/pubkey |            pubkey/s |    err% |     total | benchmark
     83|--------------------:|--------------------:|--------:|----------:|:----------
     84|           61,135.29 |           16,357.16 |    8.2% |      0.01 | :wavy_dash: `EllSwiftCreate` (Unstable with ~15.0 iters. Increase `minEpochIterations` to e.g. 150)
     85
     86|               ns/op |                op/s |    err% |     total | benchmark
     87|--------------------:|--------------------:|--------:|----------:|:----------
     88|           17,842.00 |           56,047.53 |    1.7% |      0.01 | `EvictionProtection0Networks250Candidates`
     89|           17,623.91 |           56,741.09 |    5.8% |      0.01 | :wavy_dash: `EvictionProtection1Networks250Candidates` (Unstable with ~52.2 iters. Increase `minEpochIterations` to e.g. 522)
     90|           28,021.21 |           35,687.25 |   10.0% |      0.01 | :wavy_dash: `EvictionProtection2Networks250Candidates` (Unstable with ~34.6 iters. Increase `minEpochIterations` to e.g. 346)
     91|            4,916.51 |          203,396.34 |    2.9% |      0.01 | `EvictionProtection3Networks050Candidates`
     92|           14,537.70 |           68,786.65 |    0.6% |      0.01 | `EvictionProtection3Networks100Candidates`
     93|           32,770.00 |           30,515.72 |    0.4% |      0.01 | `EvictionProtection3Networks250Candidates`
     94|       27,257,200.00 |               36.69 |    1.4% |      0.31 | `ExpandDescriptor`
     95
     96|             ns/byte |              byte/s |    err% |     total | benchmark
     97|--------------------:|--------------------:|--------:|----------:|:----------
     98|                2.98 |      336,049,738.81 |    2.3% |      0.04 | `FSCHACHA20POLY1305_1MB`
     99|                3.69 |      270,753,844.23 |    1.5% |      0.01 | `FSCHACHA20POLY1305_256BYTES`
    100|                6.29 |      159,062,436.86 |    4.2% |      0.01 | `FSCHACHA20POLY1305_64BYTES`
    101
    102|           ns/number |            number/s |    err% |     total | benchmark
    103|--------------------:|--------------------:|--------:|----------:|:----------
    104|               13.51 |       74,002,603.32 |    0.8% |      0.01 | `FastRandom_rand32`
    105|               21.52 |       46,475,091.77 |    2.0% |      0.01 | `FastRandom_rand64`
    106|               17.89 |       55,886,030.54 |    0.5% |      0.01 | `FastRandom_randbits`
    107|                2.03 |      492,182,923.46 |    1.0% |      0.01 | `FastRandom_randbool`
    108|               12.01 |       83,255,086.07 |    0.7% |      0.01 | `FastRandom_randrange100`
    109|               14.46 |       69,142,631.37 |    5.9% |      0.01 | :wavy_dash: `FastRandom_randrange1000` (Unstable with ~70.9 iters. Increase `minEpochIterations` to e.g. 709)
    110|               19.40 |       51,540,546.95 |    0.2% |      0.22 | `FastRandom_randrange1000000`
    111|               50.69 |       19,727,047.15 |   14.7% |      0.01 | :wavy_dash: `FastRandom_stdshuffle100` (Unstable with ~166.2 iters. Increase `minEpochIterations` to e.g. 1662)
    112
    113|               ns/op |                op/s |    err% |     total | benchmark
    114|--------------------:|--------------------:|--------:|----------:|:----------
    115|               20.38 |       49,069,790.93 |    4.7% |      0.01 | `FindByte`
    116|          843,000.00 |            1,186.24 |    1.0% |      0.01 | `GCSBlockFilterGetHash`
    117|       15,844,200.00 |               63.11 |    0.7% |      0.17 | `GCSFilterConstruct`
    118|        2,035,000.00 |              491.40 |    0.2% |      0.02 | `GCSFilterDecode`
    119|            6,160.00 |          162,337.66 |    0.4% |      0.01 | `GCSFilterDecodeSkipCheck`
    120|          252,466.67 |            3,960.92 |    1.3% |      0.01 | `GCSFilterMatch`
    121
    122|           ns/base16 |            base16/s |    err% |     total | benchmark
    123|--------------------:|--------------------:|--------:|----------:|:----------
    124|                2.42 |      413,044,817.50 |    4.9% |      0.01 | `HexParse`
    125
    126|             ns/byte |              byte/s |    err% |     total | benchmark
    127|--------------------:|--------------------:|--------:|----------:|:----------
    128|                1.37 |      729,258,989.13 |   24.9% |      0.02 | :wavy_dash: `HexStrBench` (Unstable with ~1.0 iters. Increase `minEpochIterations` to e.g. 10)
    129
    130|           ns/number |            number/s |    err% |     total | benchmark
    131|--------------------:|--------------------:|--------:|----------:|:----------
    132|                2.79 |      358,376,996.23 |    8.7% |      0.01 | :wavy_dash: `InsecureRandom_rand32` (Unstable with ~395,493.5 iters. Increase `minEpochIterations` to e.g. 3954935)
    133|                2.10 |      475,354,929.88 |    2.2% |      0.01 | `InsecureRandom_rand64`
    134|                3.26 |      306,422,541.39 |   17.8% |      0.01 | :wavy_dash: `InsecureRandom_randbits` (Unstable with ~4,377.0 iters. Increase `minEpochIterations` to e.g. 43770)
    135|                1.66 |      602,926,829.27 |    2.9% |      0.01 | `InsecureRandom_randbool`
    136|               11.62 |       86,084,142.39 |    9.8% |      0.01 | :wavy_dash: `InsecureRandom_randrange100` (Unstable with ~994.9 iters. Increase `minEpochIterations` to e.g. 9949)
    137|                8.65 |      115,668,844.38 |    1.4% |      0.01 | `InsecureRandom_randrange1000`
    138|                8.88 |      112,640,519.05 |    4.9% |      0.10 | `InsecureRandom_randrange1000000`
    139|               23.36 |       42,813,765.18 |   10.7% |      0.01 | :wavy_dash: `InsecureRandom_stdshuffle100` (Unstable with ~352.1 iters. Increase `minEpochIterations` to e.g. 3521)
    140
    141|               ns/op |                op/s |    err% |     total | benchmark
    142|--------------------:|--------------------:|--------:|----------:|:----------
    143|           19,800.00 |           50,505.05 |    8.0% |      0.00 | :wavy_dash: `Linearize16TxWorstCase120Iters` (Unstable with ~14.1 iters. Increase `minEpochIterations` to e.g. 141)
    144|            4,152.94 |          240,793.20 |    7.3% |      0.01 | :wavy_dash: `Linearize16TxWorstCase20Iters` (Unstable with ~173.1 iters. Increase `minEpochIterations` to e.g. 1731)
    145|        1,340,300.00 |              746.10 |    5.2% |      0.02 | :wavy_dash: `Linearize32TxWorstCase15000Iters` (Unstable with ~1.0 iters. Increase `minEpochIterations` to e.g. 10)
    146|          458,800.00 |            2,179.60 |    1.8% |      0.01 | `Linearize32TxWorstCase5000Iters`
    147|        1,283,800.00 |              778.94 |    3.1% |      0.01 | `Linearize48TxWorstCase15000Iters`
    148|          507,900.00 |            1,968.89 |    7.7% |      0.01 | :wavy_dash: `Linearize48TxWorstCase5000Iters` (Unstable with ~2.0 iters. Increase `minEpochIterations` to e.g. 20)
    149|        1,279,700.00 |              781.43 |    1.8% |      0.02 | `Linearize64TxWorstCase15000Iters`
    150|          746,200.00 |            1,340.12 |   11.1% |      0.01 | :wavy_dash: `Linearize64TxWorstCase5000Iters` (Unstable with ~1.4 iters. Increase `minEpochIterations` to e.g. 14)
    151|        3,503,200.00 |              285.45 |   14.3% |      0.04 | :wavy_dash: `Linearize75TxWorstCase15000Iters` (Unstable with ~1.0 iters. Increase `minEpochIterations` to e.g. 10)
    152|        1,164,900.00 |              858.44 |   22.0% |      0.01 | :wavy_dash: `Linearize75TxWorstCase5000Iters` (Unstable with ~1.0 iters. Increase `minEpochIterations` to e.g. 10)
    153|        2,219,000.00 |              450.65 |    4.9% |      0.03 | `Linearize99TxWorstCase15000Iters`
    154|          812,600.00 |            1,230.62 |    2.1% |      0.01 | `Linearize99TxWorstCase5000Iters`
    155|            2,276.16 |          439,337.25 |    2.2% |      0.01 | `LinearizeNoIters16TxWorstCaseAnc`
    156|            3,408.36 |          293,395.92 |    1.2% |      0.01 | `LinearizeNoIters16TxWorstCaseLIMO`
    157|            7,155.92 |          139,744.41 |    0.4% |      0.01 | `LinearizeNoIters32TxWorstCaseAnc`
    158|           12,471.21 |           80,184.67 |    3.0% |      0.01 | `LinearizeNoIters32TxWorstCaseLIMO`
    159|           16,783.33 |           59,582.92 |    9.0% |      0.01 | :wavy_dash: `LinearizeNoIters48TxWorstCaseAnc` (Unstable with ~51.6 iters. Increase `minEpochIterations` to e.g. 516)
    160|           31,245.83 |           32,004.27 |   11.6% |      0.01 | :wavy_dash: `LinearizeNoIters48TxWorstCaseLIMO` (Unstable with ~30.4 iters. Increase `minEpochIterations` to e.g. 304)
    161|           27,361.11 |           36,548.22 |    2.2% |      0.01 | `LinearizeNoIters64TxWorstCaseAnc`
    162|           48,836.84 |           20,476.34 |    2.1% |      0.01 | `LinearizeNoIters64TxWorstCaseLIMO`
    163|           53,081.25 |           18,839.04 |    1.7% |      0.01 | `LinearizeNoIters75TxWorstCaseAnc`
    164|           77,928.57 |           12,832.26 |    8.7% |      0.01 | :wavy_dash: `LinearizeNoIters75TxWorstCaseLIMO` (Unstable with ~11.8 iters. Increase `minEpochIterations` to e.g. 118)
    165|           65,180.00 |           15,342.13 |    4.9% |      0.01 | `LinearizeNoIters99TxWorstCaseAnc`
    166|          126,387.50 |            7,912.17 |    0.7% |      0.01 | `LinearizeNoIters99TxWorstCaseLIMO`
    167|          184,075.00 |            5,432.57 |    9.2% |      0.01 | :wavy_dash: `LinearizeOptimallyExample00` (Unstable with ~4.0 iters. Increase `minEpochIterations` to e.g. 40)
    168|          344,650.00 |            2,901.49 |   25.9% |      0.01 | :wavy_dash: `LinearizeOptimallyExample01` (Unstable with ~2.8 iters. Increase `minEpochIterations` to e.g. 28)
    169|          130,585.71 |            7,657.81 |    1.3% |      0.01 | `LinearizeOptimallyExample02`
    170|          165,950.00 |            6,025.91 |    1.4% |      0.01 | `LinearizeOptimallyExample03`
    171|            6,424.32 |          155,658.39 |    1.9% |      0.01 | `LinearizeOptimallyExample04`
    172|           42,055.00 |           23,778.39 |    6.2% |      0.01 | :wavy_dash: `LinearizeOptimallyExample05` (Unstable with ~22.9 iters. Increase `minEpochIterations` to e.g. 229)
    173|          110,590.00 |            9,042.41 |    1.7% |      0.01 | `LinearizeOptimallyExample06`
    174|           25,597.56 |           39,066.22 |    0.5% |      0.01 | `LinearizeOptimallyExample07`
    175|          187,075.00 |            5,345.45 |    1.3% |      0.01 | `LinearizeOptimallyExample08`
    176|           40,508.33 |           24,686.28 |    3.8% |      0.01 | `LinearizeOptimallyExample09`
    177|           28,385.29 |           35,229.51 |    2.1% |      0.01 | `LinearizeOptimallyExample10`
    178|      719,994,100.00 |                1.39 |    1.3% |      7.99 | `LinearizeOptimallyExample11`
    179|        1,006,700.00 |              993.34 |    0.9% |      0.01 | `LinearizeOptimallyExample12`
    180|          176,500.00 |            5,665.72 |    2.4% |      0.01 | `LinearizeOptimallyExample13`
    181|        1,143,000.00 |              874.89 |    2.1% |      0.01 | `LinearizeOptimallyExample14`
    182|       29,272,700.00 |               34.16 |    0.5% |      0.33 | `LinearizeOptimallyExample15`
    183|       20,853,100.00 |               47.95 |    0.3% |      0.23 | `LinearizeOptimallyExample16`
    184|       26,201,500.00 |               38.17 |    0.3% |      0.30 | `LinearizeOptimallyExample17`
    185|       26,541,500.00 |               37.68 |    0.7% |      0.30 | `LinearizeOptimallyExample18`
    186|       32,764,400.00 |               30.52 |    3.9% |      0.37 | `LinearizeOptimallyExample19`
    187|       39,456,100.00 |               25.34 |    4.0% |      0.50 | `LoadExternalBlockFile`
    188|           13,837.88 |           72,265.41 |    1.1% |      0.01 | `LogWithDebug`
    189|           22,309.09 |           44,824.78 |    1.1% |      0.01 | `LogWithThreadNames`
    190|                5.11 |      195,635,694.57 |    0.6% |      0.01 | `LogWithoutDebug`
    191|           21,524.39 |           46,458.92 |    1.0% |      0.01 | `LogWithoutThreadNames`
    192|               84.59 |       11,822,331.46 |    0.6% |      0.01 | `LogWithoutWriteToFile`
    193|      106,364,600.00 |                9.40 |    0.6% |      1.18 | `MempoolCheck`
    194|           93,475.00 |           10,698.05 |    6.3% |      0.01 | :wavy_dash: `MempoolCheckEphemeralSpends` (Unstable with ~11.1 iters. Increase `minEpochIterations` to e.g. 111)
    195|           78,840.00 |           12,683.92 |    3.3% |      0.01 | `MempoolEviction`
    196|            1,662.86 |          601,372.26 |    1.2% |      0.01 | `MergeLinearizations16TxWorstCase`
    197|            6,180.56 |          161,797.75 |    2.8% |      0.01 | `MergeLinearizations32TxWorstCase`
    198|           13,255.38 |           75,441.04 |    0.4% |      0.01 | `MergeLinearizations48TxWorstCase`
    199|           24,127.59 |           41,446.33 |    0.2% |      0.01 | `MergeLinearizations64TxWorstCase`
    200|           41,200.00 |           24,271.84 |    4.2% |      0.01 | `MergeLinearizations75TxWorstCase`
    201|           71,612.50 |           13,964.04 |    5.3% |      0.01 | :wavy_dash: `MergeLinearizations99TxWorstCase` (Unstable with ~13.7 iters. Increase `minEpochIterations` to e.g. 137)
    202
    203|             ns/leaf |              leaf/s |    err% |     total | benchmark
    204|--------------------:|--------------------:|--------:|----------:|:----------
    205|              803.73 |        1,244,194.40 |    1.7% |      0.08 | `MerkleRoot`
    206
    207|               ns/op |                op/s |    err% |     total | benchmark
    208|--------------------:|--------------------:|--------:|----------:|:----------
    209|           23,234.38 |           43,039.68 |    0.9% |      0.01 | `MuHash`
    210|           22,334.04 |           44,774.70 |    1.5% |      0.01 | `MuHashDiv`
    211|          118,775.00 |            8,419.28 |    0.4% |      0.01 | `MuHashFinalize`
    212|           24,059.38 |           41,563.84 |    7.7% |      0.01 | :wavy_dash: `MuHashMul` (Unstable with ~39.3 iters. Increase `minEpochIterations` to e.g. 393)
    213|            1,170.44 |          854,377.57 |    5.3% |      0.01 | :wavy_dash: `MuHashPrecompute` (Unstable with ~775.1 iters. Increase `minEpochIterations` to e.g. 7751)
    214
    215|             ns/byte |              byte/s |    err% |     total | benchmark
    216|--------------------:|--------------------:|--------:|----------:|:----------
    217|                0.08 |   13,208,359,679.74 |   15.8% |      0.01 | :wavy_dash: `ObfuscationBench` (Unstable with ~12,789.5 iters. Increase `minEpochIterations` to e.g. 127895)
    218
    219|               ns/op |                op/s |    err% |     total | benchmark
    220|--------------------:|--------------------:|--------:|----------:|:----------
    221|       25,839,500.00 |               38.70 |    0.0% |      0.03 | `OrphanageEraseForBlock`
    222|        8,382,700.00 |              119.29 |    0.0% |      0.01 | `OrphanageEraseForPeer`
    223|        8,739,700.00 |              114.42 |    0.0% |      0.01 | `OrphanageMultiPeerEviction`
    224|          914,900.00 |            1,093.02 |    0.0% |      0.00 | `OrphanageSinglePeerEviction`
    225
    226|             ns/byte |              byte/s |    err% |     total | benchmark
    227|--------------------:|--------------------:|--------:|----------:|:----------
    228|                1.01 |      987,731,725.70 |    1.0% |      0.01 | `POLY1305_1MB`
    229|                1.05 |      950,234,981.39 |    1.1% |      0.01 | `POLY1305_256BYTES`
    230|                1.23 |      810,674,540.92 |    0.2% |      0.01 | `POLY1305_64BYTES`
    231
    232|               ns/op |                op/s |    err% |     total | benchmark
    233|--------------------:|--------------------:|--------:|----------:|:----------
    234|               73.26 |       13,650,324.20 |    2.8% |      0.06 | `PoolAllocator_StdUnorderedMap`
    235|               20.40 |       49,028,347.30 |    0.3% |      0.02 | `PoolAllocator_StdUnorderedMapWithPoolResource`
    236|            1,630.94 |          613,143.28 |    9.8% |      0.01 | :wavy_dash: `PostLinearize16TxWorstCase` (Unstable with ~583.2 iters. Increase `minEpochIterations` to e.g. 5832)
    237|            5,243.22 |          190,722.64 |    4.4% |      0.01 | `PostLinearize32TxWorstCase`
    238|           10,507.06 |           95,174.11 |    2.0% |      0.01 | `PostLinearize48TxWorstCase`
    239|           17,806.78 |           56,158.39 |    0.2% |      0.01 | `PostLinearize64TxWorstCase`
    240|           26,935.48 |           37,125.75 |    1.0% |      0.01 | `PostLinearize75TxWorstCase`
    241|           45,540.00 |           21,958.72 |    0.9% |      0.01 | `PostLinearize99TxWorstCase`
    242|              348.53 |        2,869,175.24 |    0.9% |      0.01 | `PrePadded`
    243|               13.09 |       76,408,566.72 |    1.5% |      0.01 | `PrevectorClearNontrivial`
    244|               13.10 |       76,340,252.71 |    1.9% |      0.01 | `PrevectorClearTrivial`
    245|              513.70 |        1,946,661.48 |    0.9% |      0.01 | `PrevectorDeserializeNontrivial`
    246|               25.56 |       39,116,185.64 |    1.7% |      0.01 | `PrevectorDeserializeTrivial`
    247|               34.86 |       28,686,825.52 |    0.3% |      0.01 | `PrevectorDestructorNontrivial`
    248|               34.30 |       29,158,158.35 |    0.4% |      0.01 | `PrevectorDestructorTrivial`
    249|            2,955.97 |          338,298.76 |    0.5% |      0.01 | `PrevectorFillVectorDirectNontrivial`
    250|            1,062.68 |          941,018.49 |   16.4% |      0.01 | :wavy_dash: `PrevectorFillVectorDirectTrivial` (Unstable with ~878.6 iters. Increase `minEpochIterations` to e.g. 8786)
    251|           18,486.27 |           54,094.19 |    5.6% |      0.01 | :wavy_dash: `PrevectorFillVectorIndirectNontrivial` (Unstable with ~51.8 iters. Increase `minEpochIterations` to e.g. 518)
    252|           14,531.25 |           68,817.20 |    1.2% |      0.01 | `PrevectorFillVectorIndirectTrivial`
    253|                6.59 |      151,681,063.12 |    1.2% |      0.01 | `PrevectorResizeNontrivial`
    254|                6.52 |      153,458,755.43 |    0.9% |      0.01 | `PrevectorResizeTrivial`
    255|        9,865,300.00 |              101.37 |    5.8% |      0.12 | :wavy_dash: `ReadBlockBench` (Unstable with ~1.0 iters. Increase `minEpochIterations` to e.g. 10)
    256|        1,411,200.00 |              708.62 |    3.2% |      0.02 | `ReadRawBlockBench`
    257|              680.73 |        1,469,008.73 |    0.7% |      0.01 | `RegularPadded`
    258|              497.44 |        2,010,294.54 |    1.0% |      0.01 | `RollingBloom`
    259|           27,363.16 |           36,545.49 |    0.2% |      0.01 | `RollingBloomReset`
    260|       16,691,500.00 |               59.91 |    1.0% |      0.19 | `RpcMempool`
    261
    262|             ns/byte |              byte/s |    err% |     total | benchmark
    263|--------------------:|--------------------:|--------:|----------:|:----------
    264|                1.71 |      585,411,544.32 |    0.9% |      0.02 | `SHA1`
    265|               12.23 |       81,756,487.03 |    0.4% |      0.01 | `SHA256D64_1024_AVX2 using the 'standard' SHA256 implementation`
    266|               12.33 |       81,108,910.89 |    1.3% |      0.01 | `SHA256D64_1024_SHANI using the 'standard' SHA256 implementation`
    267|               12.65 |       79,025,684.31 |    3.4% |      0.01 | `SHA256D64_1024_SSE4 using the 'standard' SHA256 implementation`
    268|               12.27 |       81,512,437.81 |    0.6% |      0.01 | `SHA256D64_1024_STANDARD using the 'standard' SHA256 implementation`
    269|               10.94 |       91,389,499.39 |    1.2% |      0.01 | `SHA256_32b_AVX2 using the 'standard' SHA256 implementation`
    270|               11.19 |       89,345,293.33 |    3.5% |      0.01 | `SHA256_32b_SHANI using the 'standard' SHA256 implementation`
    271|               11.50 |       86,973,470.49 |    6.3% |      0.01 | :wavy_dash: `SHA256_32b_SSE4 using the 'standard' SHA256 implementation` (Unstable with ~2,799.7 iters. Increase `minEpochIterations` to e.g. 27997)
    272|               10.89 |       91,825,214.30 |    0.5% |      0.01 | `SHA256_32b_STANDARD using the 'standard' SHA256 implementation`
    273|                4.93 |      203,037,440.10 |    0.8% |      0.06 | `SHA256_AVX2 using the 'standard' SHA256 implementation`
    274|                5.06 |      197,526,962.43 |    3.1% |      0.06 | `SHA256_SHANI using the 'standard' SHA256 implementation`
    275|                5.04 |      198,558,465.54 |    2.8% |      0.06 | `SHA256_SSE4 using the 'standard' SHA256 implementation`
    276|                5.04 |      198,542,696.61 |    3.0% |      0.06 | `SHA256_STANDARD using the 'standard' SHA256 implementation`
    277|                4.22 |      236,910,684.67 |    3.4% |      0.05 | `SHA3_256_1M`
    278|                2.52 |      396,967,170.81 |    1.3% |      0.03 | `SHA512`
    279
    280|               ns/op |                op/s |    err% |     total | benchmark
    281|--------------------:|--------------------:|--------:|----------:|:----------
    282|          170,784.40 |            5,855.34 |    1.8% |      0.21 | `SignSchnorrWithMerkleRoot`
    283|          171,072.81 |            5,845.46 |    2.3% |      0.21 | `SignSchnorrWithNullMerkleRoot`
    284|          264,442.61 |            3,781.54 |    0.7% |      0.32 | `SignTransactionECDSA`
    285|          211,025.22 |            4,738.77 |    0.9% |      0.26 | `SignTransactionSchnorr`
    286|               30.11 |       33,210,919.73 |    1.6% |      0.01 | `SipHash_32b`
    287|                9.23 |      108,313,013.40 |    5.9% |      0.02 | :wavy_dash: `Trig` (Unstable with ~188,576.0 iters. Increase `minEpochIterations` to e.g. 1885760)
    288|       33,670,400.00 |               29.70 |    0.0% |      0.03 | `TxGraphTrim`
    289|          106,750.00 |            9,367.68 |    0.6% |      0.01 | `VerifyNestedIfScript`
    290|           67,992.31 |           14,707.55 |    1.3% |      0.01 | `VerifyScriptBench`
    291|      120,327,800.00 |                8.31 |    0.2% |      1.33 | `WalletAvailableCoins`
    292|            6,284.76 |          159,115.16 |    1.3% |      0.01 | `WalletBalanceClean`
    293|            6,926.72 |          144,368.53 |    0.9% |      0.01 | `WalletBalanceDirty`
    294|            6,308.93 |          158,505.52 |    1.1% |      0.01 | `WalletBalanceMine`
    295|               78.53 |       12,734,112.86 |    1.0% |      0.01 | `WalletBalanceWatch`
    296|    1,320,096,500.00 |                0.76 |    0.9% |     14.74 | `WalletCreateEncrypted`
    297|    1,000,096,500.00 |                1.00 |    1.8% |     11.01 | `WalletCreatePlain`
    298|        2,470,100.00 |              404.84 |    1.3% |      0.03 | `WalletCreateTxUseOnlyPresetInputs`
    299|      129,672,200.00 |                7.71 |    1.3% |      1.44 | `WalletCreateTxUsePresetInputsAndCoinSelection`
    300|              103.20 |        9,690,302.30 |    0.1% |      0.01 | `WalletIsMineDescriptors`
    301|              103.40 |        9,671,102.46 |    0.4% |      0.01 | `WalletIsMineMigratedDescriptors`
    302|      682,741,400.00 |                1.46 |    0.4% |      3.42 | `WalletLoadingDescriptors`
    303|    9,446,679,300.00 |                0.11 |    0.0% |      9.45 | `WalletMigration`
    304|       10,101,000.00 |               99.00 |    1.0% |      0.11 | `WriteBlockBench`
    
      0|               ns/op |                op/s |    err% |     total | benchmark
      1|--------------------:|--------------------:|--------:|----------:|:----------
      2|        1,451,472.73 |              688.96 |    4.7% |      0.16 | `AddAndRemoveDisconnectedBlockTransactions10`
      3|        1,147,027.27 |              871.82 |    0.5% |      0.14 | `AddAndRemoveDisconnectedBlockTransactions90`
      4|        1,431,420.00 |              698.61 |    2.7% |      0.18 | `AddAndRemoveDisconnectedBlockTransactionsAll`
      5|       53,722,500.00 |               18.61 |    0.5% |      0.60 | `AddrManAdd`
      6|      136,084,600.00 |                7.35 |    1.3% |      1.51 | `AddrManAddThenGood`
      7|          255,600.00 |            3,912.36 |    0.9% |      0.01 | `AddrManGetAddr`
      8|              289.15 |        3,458,382.18 |    2.2% |      0.01 | `AddrManSelect`
      9|        1,059,900.00 |              943.49 |   47.5% |      0.01 | :wavy_dash: `AddrManSelectByNetwork` (Unstable with ~1.1 iters. Increase `minEpochIterations` to e.g. 11)
     10|           79,000.00 |           12,658.23 |   29.1% |      0.01 | :wavy_dash: `AddrManSelectFromAlmostEmpty` (Unstable with ~12.2 iters. Increase `minEpochIterations` to e.g. 122)
     11|          581,250.00 |            1,720.43 |    4.1% |      0.01 | `AssembleBlock`
     12
     13|             ns/ecdh |              ecdh/s |    err% |     total | benchmark
     14|--------------------:|--------------------:|--------:|----------:|:----------
     15|           46,791.30 |           21,371.49 |    0.5% |      0.01 | `BIP324_ECDH`
     16
     17|             ns/byte |              byte/s |    err% |     total | benchmark
     18|--------------------:|--------------------:|--------:|----------:|:----------
     19|              113.44 |        8,815,521.49 |    0.5% |      0.01 | `Base58CheckEncode`
     20|               26.41 |       37,868,835.99 |    0.6% |      0.01 | `Base58Decode`
     21|               76.55 |       13,063,597.82 |    1.8% |      0.01 | `Base58Encode`
     22|                9.45 |      105,876,049.29 |    3.7% |      0.01 | `Bech32Decode`
     23|               17.65 |       56,659,019.81 |    0.6% |      0.01 | `Bech32Encode`
     24
     25|               ns/op |                op/s |    err% |     total | benchmark
     26|--------------------:|--------------------:|--------:|----------:|:----------
     27|              188.81 |        5,296,396.75 |    1.0% |      0.01 | `BenchLockedPool`
     28
     29|             ns/byte |              byte/s |    err% |     total | benchmark
     30|--------------------:|--------------------:|--------:|----------:|:----------
     31|                2.36 |      423,872,499.15 |    4.1% |      0.03 | `BenchRIPEMD160`
     32
     33|               ns/op |                op/s |    err% |     total | benchmark
     34|--------------------:|--------------------:|--------:|----------:|:----------
     35|               28.55 |       35,026,548.67 |    1.2% |      0.01 | `BenchTimeDeprecated`
     36|               27.32 |       36,609,274.56 |    0.9% |      0.01 | `BenchTimeMillis`
     37|               20.66 |       48,396,462.22 |    0.4% |      0.01 | `BenchTimeMillisSys`
     38|                2.17 |      460,582,963.96 |    1.0% |      0.01 | `BenchTimeMock`
     39|    1,448,861,600.00 |                0.69 |    0.4% |     15.91 | `BlockAssemblerAddPackageTxns`
     40|        2,555,100.00 |              391.37 |    1.1% |      0.03 | `BlockEncodingLargeExtra`
     41|        2,314,600.00 |              432.04 |    0.7% |      0.03 | `BlockEncodingNoExtra`
     42|        2,345,900.00 |              426.28 |    1.1% |      0.03 | `BlockEncodingStdExtra`
     43|    5,455,197,200.00 |                0.18 |    0.2% |    322.09 | `BlockFilterIndexSync`
     44|       45,462,500.00 |               22.00 |    1.0% |      0.51 | `BlockToJsonVerboseWrite`
     45|          442,400.00 |            2,260.40 |    0.4% |      0.01 | `BlockToJsonVerbosity1`
     46|       83,156,800.00 |               12.03 |    1.3% |      0.93 | `BlockToJsonVerbosity2`
     47|       82,647,900.00 |               12.10 |    0.4% |      0.92 | `BlockToJsonVerbosity3`
     48|          617,350.00 |            1,619.83 |    0.4% |      0.01 | `BnBExhaustion`
     49
     50|              ns/job |               job/s |    err% |     total | benchmark
     51|--------------------:|--------------------:|--------:|----------:|:----------
     52|              230.93 |        4,330,272.61 |    7.0% |      0.09 | :wavy_dash: `CCheckQueueSpeedPrevectorJob` (Unstable with ~10.9 iters. Increase `minEpochIterations` to e.g. 109)
     53
     54|               ns/op |                op/s |    err% |     total | benchmark
     55|--------------------:|--------------------:|--------:|----------:|:----------
     56|              683.83 |        1,462,358.04 |    3.1% |      0.01 | `CCoinsCaching`
     57
     58|             ns/byte |              byte/s |    err% |     total | benchmark
     59|--------------------:|--------------------:|--------:|----------:|:----------
     60|                1.67 |      599,666,018.53 |    0.5% |      0.02 | `CHACHA20_1MB`
     61|                1.73 |      577,714,344.81 |    0.8% |      0.01 | `CHACHA20_256BYTES`
     62|                2.00 |      500,654,679.58 |    2.6% |      0.01 | `CHACHA20_64BYTES`
     63
     64|               ns/op |                op/s |    err% |     total | benchmark
     65|--------------------:|--------------------:|--------:|----------:|:----------
     66|           91,781.82 |           10,895.40 |    1.7% |      0.01 | `CheckBlockIndex`
     67|       16,983,800.00 |               58.88 |    0.8% |      0.19 | `CoinSelection`
     68|      296,209,200.00 |                3.38 |    0.2% |      3.25 | `ComplexMemPool`
     69
     70|            ns/block |             block/s |    err% |     total | benchmark
     71|--------------------:|--------------------:|--------:|----------:|:----------
     72|       86,831,100.00 |               11.52 |    1.3% |      0.98 | `ConnectBlockAllEcdsa`
     73|       84,704,400.00 |               11.81 |    1.0% |      0.94 | `ConnectBlockAllSchnorr`
     74|       87,313,300.00 |               11.45 |    0.6% |      0.97 | `ConnectBlockMixedEcdsaSchnorr`
     75|        6,986,900.00 |              143.12 |    2.2% |      0.08 | `DeserializeAndCheckBlockTest`
     76|        5,289,800.00 |              189.04 |    6.4% |      0.06 | :wavy_dash: `DeserializeBlockTest` (Unstable with ~1.0 iters. Increase `minEpochIterations` to e.g. 10)
     77
     78|               ns/op |                op/s |    err% |     total | benchmark
     79|--------------------:|--------------------:|--------:|----------:|:----------
     80|        7,979,700.00 |              125.32 |    0.5% |      0.09 | `DuplicateInputs`
     81
     82|           ns/pubkey |            pubkey/s |    err% |     total | benchmark
     83|--------------------:|--------------------:|--------:|----------:|:----------
     84|           42,715.79 |           23,410.55 |    2.3% |      0.01 | `EllSwiftCreate`
     85
     86|               ns/op |                op/s |    err% |     total | benchmark
     87|--------------------:|--------------------:|--------:|----------:|:----------
     88|           17,945.28 |           55,724.95 |   13.8% |      0.01 | :wavy_dash: `EvictionProtection0Networks250Candidates` (Unstable with ~41.4 iters. Increase `minEpochIterations` to e.g. 414)
     89|           15,346.00 |           65,163.56 |   12.5% |      0.01 | :wavy_dash: `EvictionProtection1Networks250Candidates` (Unstable with ~60.7 iters. Increase `minEpochIterations` to e.g. 607)
     90|           21,886.36 |           45,690.55 |    9.2% |      0.01 | :wavy_dash: `EvictionProtection2Networks250Candidates` (Unstable with ~45.9 iters. Increase `minEpochIterations` to e.g. 459)
     91|            4,370.44 |          228,809.74 |    9.7% |      0.01 | :wavy_dash: `EvictionProtection3Networks050Candidates` (Unstable with ~222.7 iters. Increase `minEpochIterations` to e.g. 2227)
     92|           11,346.24 |           88,134.95 |    0.6% |      0.01 | `EvictionProtection3Networks100Candidates`
     93|           27,344.12 |           36,570.94 |    5.2% |      0.01 | :wavy_dash: `EvictionProtection3Networks250Candidates` (Unstable with ~36.3 iters. Increase `minEpochIterations` to e.g. 363)
     94|       21,228,500.00 |               47.11 |    1.2% |      0.23 | `ExpandDescriptor`
     95
     96|             ns/byte |              byte/s |    err% |     total | benchmark
     97|--------------------:|--------------------:|--------:|----------:|:----------
     98|                2.37 |      421,182,519.28 |    1.9% |      0.03 | `FSCHACHA20POLY1305_1MB`
     99|                3.20 |      312,461,857.68 |    2.6% |      0.01 | `FSCHACHA20POLY1305_256BYTES`
    100|                5.63 |      177,559,854.43 |    1.6% |      0.01 | `FSCHACHA20POLY1305_64BYTES`
    101
    102|           ns/number |            number/s |    err% |     total | benchmark
    103|--------------------:|--------------------:|--------:|----------:|:----------
    104|               10.98 |       91,078,985.96 |    0.4% |      0.01 | `FastRandom_rand32`
    105|               19.82 |       50,464,399.95 |    0.9% |      0.01 | `FastRandom_rand64`
    106|               12.52 |       79,874,882.70 |    2.2% |      0.01 | `FastRandom_randbits`
    107|                1.84 |      543,283,597.77 |    1.1% |      0.01 | `FastRandom_randbool`
    108|               11.42 |       87,556,632.60 |    0.8% |      0.01 | `FastRandom_randrange100`
    109|               12.19 |       82,008,200.82 |    1.4% |      0.01 | `FastRandom_randrange1000`
    110|               16.76 |       59,662,311.32 |    1.1% |      0.19 | `FastRandom_randrange1000000`
    111|               34.60 |       28,900,930.94 |    0.5% |      0.01 | `FastRandom_stdshuffle100`
    112
    113|               ns/op |                op/s |    err% |     total | benchmark
    114|--------------------:|--------------------:|--------:|----------:|:----------
    115|               15.03 |       66,527,760.60 |    2.1% |      0.01 | `FindByte`
    116|          499,850.00 |            2,000.60 |    0.7% |      0.01 | `GCSBlockFilterGetHash`
    117|       14,975,200.00 |               66.78 |    0.7% |      0.17 | `GCSFilterConstruct`
    118|        1,859,900.00 |              537.66 |    2.4% |      0.02 | `GCSFilterDecode`
    119|            5,623.89 |          177,812.90 |    0.9% |      0.01 | `GCSFilterDecodeSkipCheck`
    120|          212,120.00 |            4,714.31 |    0.5% |      0.01 | `GCSFilterMatch`
    121
    122|           ns/base16 |            base16/s |    err% |     total | benchmark
    123|--------------------:|--------------------:|--------:|----------:|:----------
    124|                3.24 |      308,399,366.09 |    0.3% |      0.01 | `HexParse`
    125
    126|             ns/byte |              byte/s |    err% |     total | benchmark
    127|--------------------:|--------------------:|--------:|----------:|:----------
    128|                0.94 |    1,064,388,971.68 |   12.4% |      0.01 | :wavy_dash: `HexStrBench` (Unstable with ~1.0 iters. Increase `minEpochIterations` to e.g. 10)
    129
    130|           ns/number |            number/s |    err% |     total | benchmark
    131|--------------------:|--------------------:|--------:|----------:|:----------
    132|                1.76 |      567,551,949.57 |    1.1% |      0.01 | `InsecureRandom_rand32`
    133|                2.10 |      477,100,915.78 |    3.0% |      0.01 | `InsecureRandom_rand64`
    134|                2.17 |      460,846,145.69 |    0.9% |      0.01 | `InsecureRandom_randbits`
    135|                1.47 |      680,678,296.67 |    0.8% |      0.01 | `InsecureRandom_randbool`
    136|                7.20 |      138,831,042.62 |    2.6% |      0.01 | `InsecureRandom_randrange100`
    137|                6.88 |      145,243,282.50 |    1.5% |      0.01 | `InsecureRandom_randrange1000`
    138|                7.39 |      135,382,116.02 |    0.9% |      0.08 | `InsecureRandom_randrange1000000`
    139|               16.31 |       61,325,847.55 |    0.5% |      0.01 | `InsecureRandom_stdshuffle100`
    140
    141|               ns/op |                op/s |    err% |     total | benchmark
    142|--------------------:|--------------------:|--------:|----------:|:----------
    143|            9,683.87 |          103,264.49 |    0.6% |      0.01 | `Linearize16TxWorstCase120Iters`
    144|            3,162.66 |          316,189.30 |    7.0% |      0.01 | :wavy_dash: `Linearize16TxWorstCase20Iters` (Unstable with ~278.6 iters. Increase `minEpochIterations` to e.g. 2786)
    145|        1,031,700.00 |              969.27 |   12.3% |      0.01 | :wavy_dash: `Linearize32TxWorstCase15000Iters` (Unstable with ~1.0 iters. Increase `minEpochIterations` to e.g. 10)
    146|          351,066.67 |            2,848.46 |    0.6% |      0.01 | `Linearize32TxWorstCase5000Iters`
    147|          874,500.00 |            1,143.51 |    0.3% |      0.01 | `Linearize48TxWorstCase15000Iters`
    148|          321,950.00 |            3,106.07 |    1.6% |      0.01 | `Linearize48TxWorstCase5000Iters`
    149|          939,900.00 |            1,063.94 |    5.9% |      0.01 | :wavy_dash: `Linearize64TxWorstCase15000Iters` (Unstable with ~1.0 iters. Increase `minEpochIterations` to e.g. 10)
    150|          370,600.00 |            2,698.33 |    1.3% |      0.01 | `Linearize64TxWorstCase5000Iters`
    151|        1,365,800.00 |              732.17 |    2.5% |      0.02 | `Linearize75TxWorstCase15000Iters`
    152|          538,750.00 |            1,856.15 |    1.2% |      0.01 | `Linearize75TxWorstCase5000Iters`
    153|        1,392,900.00 |              717.93 |    5.3% |      0.02 | :wavy_dash: `Linearize99TxWorstCase15000Iters` (Unstable with ~1.0 iters. Increase `minEpochIterations` to e.g. 10)
    154|          541,400.00 |            1,847.06 |    3.0% |      0.01 | `Linearize99TxWorstCase5000Iters`
    155|            1,451.48 |          688,953.18 |    0.6% |      0.01 | `LinearizeNoIters16TxWorstCaseAnc`
    156|            2,159.19 |          463,135.79 |    0.2% |      0.01 | `LinearizeNoIters16TxWorstCaseLIMO`
    157|            4,901.71 |          204,010.26 |    3.4% |      0.01 | `LinearizeNoIters32TxWorstCaseAnc`
    158|            8,484.00 |          117,868.93 |    8.8% |      0.01 | :wavy_dash: `LinearizeNoIters32TxWorstCaseLIMO` (Unstable with ~118.3 iters. Increase `minEpochIterations` to e.g. 1183)
    159|            8,153.04 |          122,653.58 |    1.5% |      0.01 | `LinearizeNoIters48TxWorstCaseAnc`
    160|           17,206.90 |           58,116.23 |    3.9% |      0.01 | `LinearizeNoIters48TxWorstCaseLIMO`
    161|           14,300.00 |           69,930.07 |    3.0% |      0.01 | `LinearizeNoIters64TxWorstCaseAnc`
    162|           30,121.87 |           33,198.46 |    1.8% |      0.01 | `LinearizeNoIters64TxWorstCaseLIMO`
    163|           21,540.00 |           46,425.26 |    0.5% |      0.01 | `LinearizeNoIters75TxWorstCaseAnc`
    164|           46,038.10 |           21,721.14 |    0.7% |      0.01 | `LinearizeNoIters75TxWorstCaseLIMO`
    165|           37,370.59 |           26,759.01 |    4.7% |      0.01 | `LinearizeNoIters99TxWorstCaseAnc`
    166|           80,030.00 |           12,495.31 |    1.9% |      0.01 | `LinearizeNoIters99TxWorstCaseLIMO`
    167|          117,644.44 |            8,500.19 |    1.1% |      0.01 | `LinearizeOptimallyExample00`
    168|          182,060.00 |            5,492.69 |    0.3% |      0.01 | `LinearizeOptimallyExample01`
    169|           88,050.00 |           11,357.18 |    1.8% |      0.01 | `LinearizeOptimallyExample02`
    170|          106,620.00 |            9,379.10 |    2.9% |      0.01 | `LinearizeOptimallyExample03`
    171|            4,921.03 |          203,209.67 |    0.6% |      0.01 | `LinearizeOptimallyExample04`
    172|           25,166.67 |           39,735.10 |    0.2% |      0.01 | `LinearizeOptimallyExample05`
    173|           70,709.09 |           14,142.45 |    1.2% |      0.01 | `LinearizeOptimallyExample06`
    174|           16,685.71 |           59,931.51 |    1.7% |      0.01 | `LinearizeOptimallyExample07`
    175|          138,250.00 |            7,233.27 |    1.5% |      0.01 | `LinearizeOptimallyExample08`
    176|           25,919.44 |           38,581.07 |    0.6% |      0.01 | `LinearizeOptimallyExample09`
    177|           18,258.18 |           54,769.97 |    0.5% |      0.01 | `LinearizeOptimallyExample10`
    178|      496,799,900.00 |                2.01 |    0.6% |      5.46 | `LinearizeOptimallyExample11`
    179|          787,500.00 |            1,269.84 |    1.5% |      0.01 | `LinearizeOptimallyExample12`
    180|          116,711.11 |            8,568.16 |    1.1% |      0.01 | `LinearizeOptimallyExample13`
    181|          718,800.00 |            1,391.21 |    3.8% |      0.01 | `LinearizeOptimallyExample14`
    182|       21,523,300.00 |               46.46 |    0.6% |      0.24 | `LinearizeOptimallyExample15`
    183|       14,895,300.00 |               67.14 |    1.1% |      0.17 | `LinearizeOptimallyExample16`
    184|       18,399,200.00 |               54.35 |    0.3% |      0.20 | `LinearizeOptimallyExample17`
    185|       18,561,100.00 |               53.88 |    0.3% |      0.21 | `LinearizeOptimallyExample18`
    186|       22,151,600.00 |               45.14 |    3.1% |      0.25 | `LinearizeOptimallyExample19`
    187|       38,314,200.00 |               26.10 |    3.5% |      0.43 | `LoadExternalBlockFile`
    188|           13,187.50 |           75,829.38 |    1.0% |      0.01 | `LogWithDebug`
    189|           21,370.21 |           46,794.11 |    6.2% |      0.01 | :wavy_dash: `LogWithThreadNames` (Unstable with ~45.1 iters. Increase `minEpochIterations` to e.g. 451)
    190|                5.64 |      177,250,274.97 |    1.9% |      0.01 | `LogWithoutDebug`
    191|           21,744.00 |           45,989.70 |    3.9% |      0.01 | `LogWithoutThreadNames`
    192|               82.91 |       12,061,834.77 |    0.3% |      0.01 | `LogWithoutWriteToFile`
    193|      127,724,700.00 |                7.83 |    0.3% |      1.41 | `MempoolCheck`
    194|           91,550.00 |           10,922.99 |    8.6% |      0.01 | :wavy_dash: `MempoolCheckEphemeralSpends` (Unstable with ~11.0 iters. Increase `minEpochIterations` to e.g. 110)
    195|          117,588.89 |            8,504.20 |    3.1% |      0.01 | `MempoolEviction`
    196|            1,328.90 |          752,501.92 |    1.3% |      0.01 | `MergeLinearizations16TxWorstCase`
    197|            4,865.80 |          205,515.92 |    1.8% |      0.01 | `MergeLinearizations32TxWorstCase`
    198|            9,940.95 |          100,593.98 |    0.4% |      0.01 | `MergeLinearizations48TxWorstCase`
    199|           18,200.00 |           54,945.05 |    0.9% |      0.01 | `MergeLinearizations64TxWorstCase`
    200|           29,572.73 |           33,814.94 |    4.4% |      0.01 | `MergeLinearizations75TxWorstCase`
    201|           50,065.00 |           19,974.03 |    1.4% |      0.01 | `MergeLinearizations99TxWorstCase`
    202
    203|             ns/leaf |              leaf/s |    err% |     total | benchmark
    204|--------------------:|--------------------:|--------:|----------:|:----------
    205|              613.15 |        1,630,911.40 |    2.6% |      0.06 | `MerkleRoot`
    206
    207|               ns/op |                op/s |    err% |     total | benchmark
    208|--------------------:|--------------------:|--------:|----------:|:----------
    209|           19,535.42 |           51,189.08 |    0.5% |      0.01 | `MuHash`
    210|           18,587.50 |           53,799.60 |    0.6% |      0.01 | `MuHashDiv`
    211|          104,680.00 |            9,552.92 |    0.2% |      0.01 | `MuHashFinalize`
    212|           19,165.12 |           52,178.13 |    4.1% |      0.01 | `MuHashMul`
    213|              932.36 |        1,072,542.51 |    4.9% |      0.01 | `MuHashPrecompute`
    214
    215|             ns/byte |              byte/s |    err% |     total | benchmark
    216|--------------------:|--------------------:|--------:|----------:|:----------
    217|                0.02 |   44,499,578,618.09 |    0.4% |      0.01 | `ObfuscationBench`
    218
    219|               ns/op |                op/s |    err% |     total | benchmark
    220|--------------------:|--------------------:|--------:|----------:|:----------
    221|       24,853,800.00 |               40.24 |    0.0% |      0.02 | `OrphanageEraseForBlock`
    222|        8,055,900.00 |              124.13 |    0.0% |      0.01 | `OrphanageEraseForPeer`
    223|        8,103,300.00 |              123.41 |    0.0% |      0.01 | `OrphanageMultiPeerEviction`
    224|          741,700.00 |            1,348.25 |    0.0% |      0.00 | `OrphanageSinglePeerEviction`
    225
    226|             ns/byte |              byte/s |    err% |     total | benchmark
    227|--------------------:|--------------------:|--------:|----------:|:----------
    228|                0.70 |    1,436,012,051.49 |    3.9% |      0.01 | `POLY1305_1MB`
    229|                0.75 |    1,337,172,194.27 |    1.5% |      0.01 | `POLY1305_256BYTES`
    230|                0.99 |    1,012,746,607.99 |    0.8% |      0.01 | `POLY1305_64BYTES`
    231
    232|               ns/op |                op/s |    err% |     total | benchmark
    233|--------------------:|--------------------:|--------:|----------:|:----------
    234|               74.43 |       13,435,935.02 |    2.8% |      0.05 | `PoolAllocator_StdUnorderedMap`
    235|               23.94 |       41,774,002.65 |    2.7% |      0.02 | `PoolAllocator_StdUnorderedMapWithPoolResource`
    236|              837.66 |        1,193,799.94 |    1.0% |      0.01 | `PostLinearize16TxWorstCase`
    237|            2,793.77 |          357,939.06 |    4.1% |      0.01 | `PostLinearize32TxWorstCase`
    238|            6,151.00 |          162,575.19 |    4.4% |      0.01 | `PostLinearize48TxWorstCase`
    239|           10,197.59 |           98,062.38 |    3.3% |      0.01 | `PostLinearize64TxWorstCase`
    240|           13,336.62 |           74,981.52 |    1.4% |      0.01 | `PostLinearize75TxWorstCase`
    241|           21,982.50 |           45,490.73 |    0.6% |      0.01 | `PostLinearize99TxWorstCase`
    242|              233.80 |        4,277,164.38 |    8.7% |      0.01 | :wavy_dash: `PrePadded` (Unstable with ~4,344.4 iters. Increase `minEpochIterations` to e.g. 43444)
    243|                8.78 |      113,914,290.53 |   12.8% |      0.01 | :wavy_dash: `PrevectorClearNontrivial` (Unstable with ~59,749.5 iters. Increase `minEpochIterations` to e.g. 597495)
    244|                6.34 |      157,752,831.72 |    3.6% |      0.01 | `PrevectorClearTrivial`
    245|              151.85 |        6,585,446.16 |    1.1% |      0.01 | `PrevectorDeserializeNontrivial`
    246|               12.26 |       81,573,896.35 |    1.7% |      0.01 | `PrevectorDeserializeTrivial`
    247|                   - |                   - |       - |         - | :boom: `PrevectorDestructorNontrivial` (iterations overflow. Maybe your code got optimized away?)
    248|                   - |                   - |       - |         - | :boom: `PrevectorDestructorTrivial` (iterations overflow. Maybe your code got optimized away?)
    249|            3,030.00 |          330,033.00 |    0.6% |      0.01 | `PrevectorFillVectorDirectNontrivial`
    250|              892.58 |        1,120,346.95 |    0.3% |      0.01 | `PrevectorFillVectorDirectTrivial`
    251|           15,746.00 |           63,508.19 |    1.3% |      0.01 | `PrevectorFillVectorIndirectNontrivial`
    252|           14,486.15 |           69,031.44 |    2.9% |      0.01 | `PrevectorFillVectorIndirectTrivial`
    253|                3.80 |      263,020,209.20 |    1.4% |      0.01 | `PrevectorResizeNontrivial`
    254|                3.09 |      323,837,259.10 |    0.7% |      0.01 | `PrevectorResizeTrivial`
    255|        6,568,900.00 |              152.23 |    1.1% |      0.08 | `ReadBlockBench`
    256|        1,615,300.00 |              619.08 |    9.6% |      0.02 | :wavy_dash: `ReadRawBlockBench` (Unstable with ~1.0 iters. Increase `minEpochIterations` to e.g. 10)
    257|              420.26 |        2,379,495.03 |    4.2% |      0.01 | `RegularPadded`
    258|              449.27 |        2,225,845.02 |    0.6% |      0.01 | `RollingBloom`
    259|           28,907.89 |           34,592.63 |    0.2% |      0.01 | `RollingBloomReset`
    260|       15,066,000.00 |               66.37 |    0.7% |      0.17 | `RpcMempool`
    261
    262|             ns/byte |              byte/s |    err% |     total | benchmark
    263|--------------------:|--------------------:|--------:|----------:|:----------
    264|                1.74 |      574,415,532.20 |    1.2% |      0.02 | `SHA1`
    265|                9.15 |      109,308,648.15 |    1.7% |      0.01 | `SHA256D64_1024_AVX2 using the 'sse4(1way)' SHA256 implementation`
    266|                9.16 |      109,117,549.12 |    2.1% |      0.01 | `SHA256D64_1024_SHANI using the 'sse4(1way)' SHA256 implementation`
    267|                9.04 |      110,618,617.60 |    0.8% |      0.01 | `SHA256D64_1024_SSE4 using the 'sse4(1way)' SHA256 implementation`
    268|               11.32 |       88,359,174.87 |    0.6% |      0.01 | `SHA256D64_1024_STANDARD using the 'standard' SHA256 implementation`
    269|                6.86 |      145,720,281.45 |    6.1% |      0.01 | :wavy_dash: `SHA256_32b_AVX2 using the 'sse4(1way)' SHA256 implementation` (Unstable with ~4,179.5 iters. Increase `minEpochIterations` to e.g. 41795)
    270|                6.75 |      148,211,720.90 |    3.9% |      0.01 | `SHA256_32b_SHANI using the 'sse4(1way)' SHA256 implementation`
    271|                6.50 |      153,826,170.01 |    0.3% |      0.01 | `SHA256_32b_SSE4 using the 'sse4(1way)' SHA256 implementation`
    272|                9.35 |      106,922,385.38 |    0.2% |      0.01 | `SHA256_32b_STANDARD using the 'standard' SHA256 implementation`
    273|                2.92 |      342,348,510.78 |    1.4% |      0.03 | `SHA256_AVX2 using the 'sse4(1way)' SHA256 implementation`
    274|                2.96 |      337,541,348.82 |    2.8% |      0.03 | `SHA256_SHANI using the 'sse4(1way)' SHA256 implementation`
    275|                2.95 |      339,523,987.37 |    1.7% |      0.03 | `SHA256_SSE4 using the 'sse4(1way)' SHA256 implementation`
    276|                4.36 |      229,247,380.85 |    1.1% |      0.05 | `SHA256_STANDARD using the 'standard' SHA256 implementation`
    277|                3.92 |      255,063,000.56 |    2.4% |      0.05 | `SHA3_256_1M`
    278|                2.60 |      385,015,208.10 |    2.6% |      0.03 | `SHA512`
    279
    280|               ns/op |                op/s |    err% |     total | benchmark
    281|--------------------:|--------------------:|--------:|----------:|:----------
    282|          108,296.49 |            9,233.91 |    0.4% |      0.13 | `SignSchnorrWithMerkleRoot`
    283|          108,620.59 |            9,206.36 |    0.8% |      0.13 | `SignSchnorrWithNullMerkleRoot`
    284|          190,794.39 |            5,241.24 |    3.0% |      0.23 | `SignTransactionECDSA`
    285|          137,775.24 |            7,258.20 |    0.5% |      0.17 | `SignTransactionSchnorr`
    286|               31.14 |       32,113,941.55 |    6.5% |      0.01 | :wavy_dash: `SipHash_32b` (Unstable with ~30,618.5 iters. Increase `minEpochIterations` to e.g. 306185)
    287|                9.23 |      108,384,801.58 |    6.0% |      0.02 | :wavy_dash: `Trig` (Unstable with ~187,765.5 iters. Increase `minEpochIterations` to e.g. 1877655)
    288|       28,278,000.00 |               35.36 |    0.0% |      0.03 | `TxGraphTrim`
    289|          102,250.00 |            9,779.95 |    0.5% |      0.01 | `VerifyNestedIfScript`
    290|           41,344.44 |           24,187.05 |    1.7% |      0.01 | `VerifyScriptBench`
    291|       72,342,700.00 |               13.82 |    0.3% |      0.80 | `WalletAvailableCoins`
    292|            6,493.75 |          153,994.23 |    4.4% |      0.01 | `WalletBalanceClean`
    293|            6,882.52 |          145,295.67 |    1.4% |      0.01 | `WalletBalanceDirty`
    294|            7,061.03 |          141,622.41 |   10.3% |      0.01 | :wavy_dash: `WalletBalanceMine` (Unstable with ~108.5 iters. Increase `minEpochIterations` to e.g. 1085)
    295|               78.27 |       12,776,287.80 |    0.7% |      0.01 | `WalletBalanceWatch`
    296|    1,101,592,500.00 |                0.91 |    0.3% |     12.15 | `WalletCreateEncrypted`
    297|      780,882,100.00 |                1.28 |    1.9% |      8.53 | `WalletCreatePlain`
    298|        1,724,300.00 |              579.95 |    1.5% |      0.02 | `WalletCreateTxUseOnlyPresetInputs`
    299|      125,178,300.00 |                7.99 |    2.7% |      1.40 | `WalletCreateTxUsePresetInputsAndCoinSelection`
    300|              104.93 |        9,529,737.21 |    0.3% |      0.01 | `WalletIsMineDescriptors`
    301|              104.95 |        9,527,988.87 |    0.3% |      0.01 | `WalletIsMineMigratedDescriptors`
    302|      445,204,800.00 |                2.25 |    0.5% |      2.22 | `WalletLoadingDescriptors`
    303|    7,056,696,700.00 |                0.14 |    0.0% |      7.06 | `WalletMigration`
    304|       10,330,300.00 |               96.80 |    2.1% |      0.11 | `WriteBlockBench`
    
  55. DrahtBot added the label Needs rebase on Nov 4, 2025
  56. hebasto force-pushed on Nov 4, 2025
  57. hebasto commented at 5:52 pm on November 4, 2025: member
    Rebased to resolve the conflict with the merged bitcoin/bitcoin#30595.
  58. DrahtBot removed the label Needs rebase on Nov 4, 2025
  59. DrahtBot added the label Needs rebase on Dec 1, 2025
  60. hebasto force-pushed on Dec 1, 2025
  61. hebasto commented at 11:04 am on December 1, 2025: member
    Rebased to resolve conflicts.
  62. in src/qt/CMakeLists.txt:156 in c8feaeeee8
    152@@ -153,7 +153,7 @@ target_link_libraries(bitcoinqt
    153     Boost::headers
    154     $<TARGET_NAME_IF_EXISTS:QRencode::QRencode>
    155     $<$<PLATFORM_ID:Darwin>:-framework\ AppKit>
    156-    $<$<CXX_COMPILER_ID:MSVC>:shlwapi>
    157+    $<$<PLATFORM_ID:Windows>:shlwapi>
    


    fanquake commented at 11:08 am on December 1, 2025:
    Is this going to be overlinking now?

    hebasto commented at 1:19 pm on January 22, 2026:
    Thanks! Reworked.
  63. in CMakeLists.txt:283 in c8feaeeee8
    279@@ -280,6 +280,8 @@ if(WIN32)
    280       /Zc:preprocessor
    281       /Zc:__cplusplus
    282       /sdl
    283+      # TODO: __int128 division when using clang-cl requires the builtins library.
    


    fanquake commented at 11:09 am on December 1, 2025:
    Why not use the builtins? Not sure I understand the TODO.

    hebasto commented at 4:10 pm on January 22, 2026:
    Reworked.
  64. in .github/workflows/ci.yml:225 in c8feaeeee8
    217@@ -218,11 +218,17 @@ jobs:
    218         job-type: [standard, fuzz]
    219         include:
    220           - job-type: standard
    221+            env_vars: {}
    222             generate-options: '-DBUILD_BENCH=ON -DBUILD_KERNEL_LIB=ON -DBUILD_UTIL_CHAINSTATE=ON -DWERROR=ON'
    223-            job-name: 'Windows native, VS 2022'
    224+            job-name: 'Windows native, MSVC'
    225+          - job-type: clang-cl
    226+            env_vars: { CXXFLAGS: '-Wno-return-type -Wno-unused-private-field -Wno-error=conditional-uninitialized -Wno-error=missing-braces' }
    


    fanquake commented at 11:10 am on December 1, 2025:

    -Wno-error=missing-braces -Wno-unused-private-field

    Why are these needed/are they being fixed?


    hebasto commented at 11:51 am on December 1, 2025:

    -Wno-error=missing-braces

    From https://github.com/bitcoin/bitcoin/actions/runs/19820405203/job/56781245720:

    0D:\a\bitcoin\bitcoin\src\test\i2p_tests.cpp(116,34): warning : suggest braces around initialization of subobject [-Wmissing-braces] [D:\a\bitcoin\bitcoin\build\src\test\test_bitcoin.vcxproj]
    1  C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared\ws2ipdef.h(251,33): note: expanded from macro 'IN6ADDR_LOOPBACK_INIT'
    2D:\a\bitcoin\bitcoin\src\test\i2p_tests.cpp(159,38): warning : suggest braces around initialization of subobject [-Wmissing-braces] [D:\a\bitcoin\bitcoin\build\src\test\test_bitcoin.vcxproj]
    3  C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared\ws2ipdef.h(251,33): note: expanded from macro 'IN6ADDR_LOOPBACK_INIT'
    4D:\a\bitcoin\bitcoin\src\test\netbase_tests.cpp(502,36): warning : suggest braces around initialization of subobject [-Wmissing-braces] [D:\a\bitcoin\bitcoin\build\src\test\test_bitcoin.vcxproj]
    5  C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared\ws2ipdef.h(251,33): note: expanded from macro 'IN6ADDR_LOOPBACK_INIT'
    6D:\a\bitcoin\bitcoin\src\test\netbase_tests.cpp(507,36): warning : suggest braces around initialization of subobject [-Wmissing-braces] [D:\a\bitcoin\bitcoin\build\src\test\test_bitcoin.vcxproj]
    7  C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared\ws2ipdef.h(251,33): note: expanded from macro 'IN6ADDR_LOOPBACK_INIT'
    8D:\a\bitcoin\bitcoin\src\test\netbase_tests.cpp(512,36): warning : suggest braces around initialization of subobject [-Wmissing-braces] [D:\a\bitcoin\bitcoin\build\src\test\test_bitcoin.vcxproj]
    9  C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared\ws2ipdef.h(251,33): note: expanded from macro 'IN6ADDR_LOOPBACK_INIT'
    

    -Wno-unused-private-field

    0D:\a\bitcoin\bitcoin\src\util/subprocess.h(759,10): warning : private field 'parent_' is not used [-Wunused-private-field] [D:\a\bitcoin\bitcoin\build\src\util\bitcoin_util.vcxproj]
    1D:\a\bitcoin\bitcoin\src\util/subprocess.h(760,7): warning : private field 'err_wr_pipe_' is not used [-Wunused-private-field] [D:\a\bitcoin\bitcoin\build\src\util\bitcoin_util.vcxproj]
    2D:\a\bitcoin\bitcoin\src\util/subprocess.h(1038,7): warning : private field 'child_pid_' is not used [-Wunused-private-field] [D:\a\bitcoin\bitcoin\build\src\util\bitcoin_util.vcxproj]
    

    Why are these needed/are they being fixed?

    I’m going to work on the fixes.


    maflcko commented at 5:33 pm on January 20, 2026:
    Would be good to make them -Wno-error, instead of a full -Wno-

    hebasto commented at 1:19 pm on January 22, 2026:

    Would be good to make them -Wno-error, instead of a full -Wno-

    Switched to -Wno-error=unused-private-field.


    hebasto commented at 10:38 pm on January 22, 2026:

    -Wno-unused-private-field

    A fix has been proposed in #34385.

  65. bitcoin deleted a comment on Dec 1, 2025
  66. bitcoin deleted a comment on Dec 1, 2025
  67. DrahtBot removed the label Needs rebase on Dec 1, 2025
  68. in src/netaddress.h:276 in 751f3b91d0
    271@@ -272,6 +272,13 @@ class CNetAddr
    272 
    273     friend class CSubNet;
    274 
    275+// Windows and POSIX provide differently braced forms of IN6ADDR_LOOPBACK_INIT.
    276+#ifdef _MSC_VER
    


    fanquake commented at 10:26 am on December 2, 2025:
    Should be in compat.h?

    hebasto commented at 12:15 pm on December 2, 2025:
    Thanks! Reworked.
  69. hebasto force-pushed on Dec 2, 2025
  70. sedited referenced this in commit d7fd8c6952 on Jan 22, 2026
  71. hebasto force-pushed on Jan 22, 2026
  72. hebasto force-pushed on Jan 22, 2026
  73. DrahtBot added the label CI failed on Jan 22, 2026
  74. DrahtBot removed the label CI failed on Jan 22, 2026
  75. hebasto force-pushed on Jan 22, 2026
  76. in CMakeLists.txt:287 in af37ba9839
    280@@ -281,6 +281,11 @@ if(WIN32)
    281       /Zc:__cplusplus
    282       /sdl
    283     )
    284+    target_link_libraries(core_interface INTERFACE
    285+      # __int128 division when using clang-cl requires the builtins library.
    286+      # See https://clang.llvm.org/docs/UsersManual.html#finding-clang-runtime-libraries.
    287+      $<$<CXX_COMPILER_ID:Clang>:clang_rt.builtins-x86_64>
    


    fanquake commented at 2:57 pm on January 22, 2026:
    Hardcoded architecture?

    hebasto commented at 4:10 pm on January 22, 2026:
    Thanks! Fixed.
  77. hebasto force-pushed on Jan 22, 2026
  78. DrahtBot added the label CI failed on Jan 22, 2026
  79. in .github/workflows/ci.yml:225 in 48521e9419
    217@@ -218,11 +218,17 @@ jobs:
    218         job-type: [standard, fuzz]
    219         include:
    220           - job-type: standard
    221+            env_vars: {}
    222             generate-options: '-DBUILD_BENCH=ON -DBUILD_KERNEL_LIB=ON -DBUILD_UTIL_CHAINSTATE=ON -DWERROR=ON'
    223-            job-name: 'Windows native, VS 2022'
    224+            job-name: 'Windows native, MSVC'
    225+          - job-type: clang-cl
    226+            env_vars: { CXXFLAGS: '-Wno-return-type -Wno-error=unused-private-field -Wno-error=conditional-uninitialized' }
    


    maflcko commented at 5:36 pm on January 22, 2026:

    What is the return type issue? All i can see in the logs is:

    0    ACTIONS_ORCHESTRATION_ID: 1fe30250-b534-498c-9285-7256c1d1e411.windows-native-dll.clang-cl_-Wno-return-type
    

    which seems a bit odd, but is probably just an upstream Github actions bug


    hebasto commented at 6:18 pm on January 22, 2026:

    This warning is very noisy on Windows, so the -Wno-return-type flag is used.

    All cases are highlighted here: https://github.com/hebasto/bitcoin/actions/runs/21259251206/job/61182273662.


    maflcko commented at 7:55 pm on January 22, 2026:

    It doesn’t look too verbose. Also, I wonder if this is a compiler bug, or a real warning.

    Someone on Windows should test if an assert(false) without a return at runtime causes UB, or a crash.

    If UB, then there is a bug to fix

    If a crash, then this is something to report upstream, or maybe assert can be replaced by Assert?



    maflcko commented at 3:39 pm on February 5, 2026:
    Right. I think it would be good to look into this. At least, to confirm there is no hidden UB

    maflcko commented at 1:44 pm on February 6, 2026:

    to clarify what needs to be done here:

    • Remove a case from a switch
    • Set -Wno-error=switch
    • Check the assert is hit, not a no-return UB

    hebasto commented at 9:59 pm on February 14, 2026:

    On Windows 11 Pro:

     0> cat test.cpp
     1#include <iostream>
     2#include <cassert>
     3
     4enum TestEnum {
     5    CASE_A,
     6    CASE_B,
     7    CASE_C
     8};
     9
    10int test_no_return_ub(TestEnum e) {
    11    switch (e) {
    12        case CASE_A:
    13                return 1;
    14        case CASE_B:
    15                return 2;
    16    // CASE_C is intentionally missing
    17    } // no default case, so the compiler can warn about missing cases
    18    assert(false);
    19}
    20
    21int main() {
    22    int result = test_no_return_ub(CASE_C);
    23    std::cout << "Result: " << result << std::endl;
    24    return 0;
    25}
    26> clang-cl.exe /std:c++20 -O2 test.cpp -o test.exe
    27test.cpp(11,13): warning: enumeration value 'CASE_C' not handled in switch [-Wswitch]
    28   11 |     switch (e) {
    29      |             ^
    30test.cpp(19,1): warning: non-void function does not return a value in all control paths [-Wreturn-type]
    31   19 | }
    32      | ^
    332 warnings generated.
    34> .\test.exe
    35Assertion failed: false, file test.cpp, line 18
    

    maflcko commented at 7:45 am on February 16, 2026:
    Thx. So I guess it is fine to proceed here. Would still be nice to report and fix this upstream and/or pick up #26504 again.
  80. DrahtBot removed the label CI failed on Jan 22, 2026
  81. hebasto force-pushed on Jan 22, 2026
  82. hebasto commented at 10:36 pm on January 22, 2026: member
    Rebased on top of #34385.
  83. DrahtBot added the label Needs rebase on Feb 5, 2026
  84. fanquake commented at 1:41 pm on February 6, 2026: member
    I think I’d be more concept-ACK here, if it included removing support for MSVC, at the same time.
  85. hebasto force-pushed on Feb 12, 2026
  86. DrahtBot removed the label Needs rebase on Feb 12, 2026
  87. DrahtBot added the label CI failed on Feb 12, 2026
  88. hebasto force-pushed on Feb 12, 2026
  89. DrahtBot removed the label CI failed on Feb 12, 2026
  90. in src/util/subprocess.h:741 in e3a1b1d927 outdated
    737@@ -738,6 +738,7 @@ struct ArgumentDeducer
    738   Popen* popen_ = nullptr;
    739 };
    740 
    741+#ifndef __USING_WINDOWS__
    


    maflcko commented at 12:37 pm on February 17, 2026:
    in theory, this could be sumbitted upstream?

    hebasto commented at 1:02 pm on February 17, 2026:
    I see you has already left a comment in https://github.com/arun11299/cpp-subprocess/pull/127 :)
  91. in CMakeLists.txt:440 in e3a1b1d927 outdated
    460-  target_compile_definitions(warn_interface INTERFACE
    461-    _CRT_SECURE_NO_WARNINGS
    462-    _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING
    463-  )
    464 else()
    465-  try_append_cxx_flags("-Wall" TARGET warn_interface SKIP_LINK)
    


    fanquake commented at 1:32 pm on February 17, 2026:
    Why is this being moved?

    hebasto commented at 5:16 pm on February 19, 2026:

    According to the docs: clang-cl treats -Wall as -Weverything. /W3 above brings -Wall.

    And this is specific to the MSVC-style options (covered by the MSVC variable), which includes MSVC and clang-cl.


    fanquake commented at 5:20 pm on February 19, 2026:
    I can see this getting very fragile and confusing, if flags are now being moved between various else branches of if(MSVC) and if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") calls, and sometimes that means “stuff for Clang” and sometimes it doesn’t.

    fanquake commented at 5:21 pm on February 19, 2026:
    (especially given nothing is being documented here)

    hebasto commented at 5:48 pm on February 19, 2026:

    (especially given nothing is being documented here)

    It’s a bit above: https://github.com/bitcoin/bitcoin/blob/a5a8b9a315f7e9ebb984ece3e940382095b7ffee/CMakeLists.txt#L445-L447


    fanquake commented at 5:50 pm on February 19, 2026:

    It’s a bit above:

    Yes, that is somewhat of an issue (documentation isn’t near where it’s needed/isn’t clear what it applies to), but the point of:

    I can see this getting very fragile and confusing, if flags are now being moved between various else branches of if(MSVC) and if(CMAKE_CXX_COMPILER_ID STREQUAL “MSVC”) calls, and sometimes that means “stuff for Clang” and sometimes it doesn’t.

    still stands regardless.


    hebasto commented at 7:04 pm on February 19, 2026:
    if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") is no longer used.
  92. sedited referenced this in commit 097c18239b on Feb 19, 2026
  93. hebasto force-pushed on Feb 19, 2026
  94. maflcko commented at 6:02 pm on February 19, 2026: member

    I think I’d be more concept-ACK here, if it included removing support for MSVC, at the same time.

    What is the status on this? If MSVC is kept, and MSVC ICEs are a motivation for this pull, it seems there is not much gain, because the ICEs still have to be dealt with. Though maybe I am missing a reason to keep MSVC?

  95. hebasto commented at 6:08 pm on February 19, 2026: member

    Though maybe I am missing a reason to keep MSVC?

    No, you are not. I’m working on it.

  96. hebasto force-pushed on Feb 19, 2026
  97. hebasto commented at 7:03 pm on February 19, 2026: member

    I think I’d be more concept-ACK here, if it included removing support for MSVC, at the same time.

    What is the status on this? If MSVC is kept, and MSVC ICEs are a motivation for this pull, it seems there is not much gain, because the ICEs still have to be dealt with. Though maybe I am missing a reason to keep MSVC?

    The support for MSVC has been removed.

  98. DrahtBot added the label CI failed on Feb 19, 2026
  99. in CMakeLists.txt:316 in 4f265f43d8 outdated
    328 
    329-  # Workaround producing large object files, which cannot be handled by the assembler.
    330-  # More likely to happen with no, or lower levels of optimisation.
    331-  # See discussion in https://github.com/bitcoin/bitcoin/issues/28109.
    332-  if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
    333-    try_append_cxx_flags("/bigobj" TARGET core_interface_debug SKIP_LINK)
    


    fanquake commented at 12:33 pm on February 20, 2026:
    Is this no-longer needed with Clang?

    hebasto commented at 11:44 am on February 23, 2026:

    Here are the logs for building with the “Debug” build configuration:

    The error from before is no longer present.


    fanquake commented at 10:40 am on February 24, 2026:
    Ok. Is that because it’s not needed with Clang, or the code was refactored, or something else?

    hebasto commented at 11:43 am on February 24, 2026:
    I couldn’t reproduce the issue when cross-compiling on Fedora 43 (using GCC 15.2.1) or compiling on Windows (using the older VS 17.x or the new VS 18.3). It’s probably safe to assume that recent code refactoring has rendered this workaround in the master branch obsolete: https://github.com/bitcoin/bitcoin/blob/ab8a7af74209e5d58203af14d9133d14de6a5776/CMakeLists.txt#L313-L321

    maflcko commented at 12:01 pm on February 24, 2026:
    May as well revert commit 1251a23642025e0440d85bb0d584be0e05d05699 for master then?

    hebasto commented at 2:11 pm on February 24, 2026:
    Apologies for the confusion, but the issue is still reproducible when cross-compiling on Fedora 43 (using GCC 15.2.1.
  100. fanquake commented at 12:34 pm on February 20, 2026: member

    The support for MSVC has been removed.

    Should probably add a release note, to state that only building with Clang is supported?

  101. maflcko commented at 12:41 pm on February 20, 2026: member

    and update doc/build-windows-msvc.md ?

    Maybe it seems better to merge this early for 32.0, than late for 31.0?

  102. hebasto commented at 12:43 pm on February 20, 2026: member

    Maybe it seems better to merge this early for 32.0, than late for 31.0?

    Yes, this seems prudent.

  103. DrahtBot added this to the milestone 32.0 on Feb 20, 2026
  104. fanquake added the label Needs release note on Feb 20, 2026
  105. hebasto force-pushed on Feb 23, 2026
  106. hebasto commented at 11:47 am on February 23, 2026: member

    The support for MSVC has been removed.

    Should probably add a release note, to state that only building with Clang is supported?

    Done.

    and update doc/build-windows-msvc.md ?

    Done as well.

  107. cmake: Always link `bitcoinqt` to `shlwapi` when building on Windows 394b12dd2b
  108. cmake: Link to clang-cl builtins library on Windows 472ad396be
  109. cmake: Adjust diagnostic flags for clang-cl
    Being compatible with cl.exe, clang-cl supports most of the same
    command-line options. These options are typically guarded by the `MSVC`
    CMake variable.
    
    Options not supported by clang-cl, such as `/wdNNN`, are now guarded by
    `CMAKE_CXX_COMPILER_ID STREQUAL "MSVC"`.
    
    Additionally, `-Wno-unused-member-function` is now used when compiling
    leveldb with clang-cl.
    42ccf58922
  110. cmake: Drop support for MSVC 046ce46b63
  111. doc: Add clang-cl release notes 9d3db80e44
  112. hebasto force-pushed on Feb 23, 2026
  113. fanquake removed the label Needs release note on Feb 24, 2026
  114. DrahtBot removed the label CI failed on Feb 24, 2026

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: 2026-02-26 03:13 UTC

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