{
 "number": 36042,
 "repo": "bitcoin/bitcoin",
 "url": "https://github.com/bitcoin/bitcoin/pull/36042",
 "title": "build: Bump g++ minimum supported version to 13",
 "author": "maflcko",
 "author_association": "MEMBER",
 "created_at": "2026-08-20T15:45:55Z",
 "updated_at": "2026-09-11T07:58:28Z",
 "age_days": 28,
 "draft": true,
 "labels": [
  "Build system",
  "Needs rebase"
 ],
 "milestone": null,
 "base": "master",
 "head_sha": "8ce1b34c8044c9d340851fb42c3dc760f52eb484",
 "head_ref": "2608-gcc-13",
 "head_repo": "maflcko/bitcoin-core",
 "head_history": [
  {
   "t": "2026-08-20T15:47:39Z",
   "sha": "97e41cf5defcc041b4ca8e3c80499a5c68e4ed81"
  },
  {
   "t": "2026-08-24T10:49:23Z",
   "sha": "8ce1b34c8044c9d340851fb42c3dc760f52eb484"
  }
 ],
 "additions": 150,
 "deletions": 110,
 "changed_files": 32,
 "commit_count": 8,
 "size_bucket": "M",
 "mergeable_state": "dirty",
 "bot": {
  "drahtbot": {
   "present": true,
   "reviews": {
    "concept_ack": [
     {
      "login": "hebasto",
      "url": "https://github.com/bitcoin/bitcoin/pull/36042#pullrequestreview-5007301478"
     }
    ]
   },
   "conflicts": [
    {
     "number": 36036,
     "title": "build: Bump clang minimum supported version to 19",
     "author": "maflcko"
    },
    {
     "number": 36033,
     "title": "[wip,nomerge,rfc] build: Require C++23 compiler",
     "author": "maflcko"
    },
    {
     "number": 35998,
     "title": "wallet: Handle or explicitly ignore `WalletBatch` write failures",
     "author": "achow101"
    },
    {
     "number": 35957,
     "title": "ci: Enable Boost.MultiIndex invariant-checking mode",
     "author": "hebasto"
    },
    {
     "number": 35468,
     "title": "ci, iwyu: Request IPC file generation explicitly",
     "author": "hebasto"
    },
    {
     "number": 34931,
     "title": "validation: abort on DB unreadable coins instead of treating them as missing",
     "author": "furszy"
    },
    {
     "number": 33593,
     "title": "guix: Use UCRT runtime for Windows release binaries",
     "author": "hebasto"
    }
   ]
  }
 },
 "acks_parsed": {
  "hebasto": {
   "kind": "concept_ack",
   "hash": null,
   "t": "2026-08-24T11:28:26Z",
   "stale": false
  }
 },
 "acks_tally": {
  "ack": 0,
  "stale_ack": 0,
  "concept_ack": 1,
  "approach_ack": 0,
  "nack": 0,
  "concept_nack": 0,
  "approach_nack": 0
 },
 "reviews": {
  "approved": 0,
  "changes_requested": 0,
  "distinct_reviewers": [
   "fanquake",
   "hebasto"
  ]
 },
 "signals": {
  "needs_rebase": true,
  "ci_failed": false,
  "mergeable_state": "dirty",
  "last_author_activity": "2026-08-24T10:49:23Z",
  "last_reviewer_activity": "2026-09-11T07:58:28Z",
  "last_reviewer": "hebasto",
  "author_silent_days": 24,
  "waiting_on_author_days": 6,
  "days_since_update": 6
 },
 "refs": {
  "mentioned": [],
  "depends_on": [],
  "fixes": [],
  "linked_issues": [],
  "references": [],
  "conflicts": [
   36036,
   36033,
   35998,
   35957,
   35468,
   34931,
   33593
  ]
 },
 "stack": {
  "shares_commits_with": [
   36052
  ],
  "based_on": [
   36052
  ],
  "base_for": []
 },
 "review_paths": [],
 "body": "At some point, it may be fine to [drop support for older vanilla systems](https://github.com/bitcoin/bitcoin/issues/34979) not shipping with at least GCC 13.\n\n(For this bump, only C++20 `std::format` will become available, but this bump should also pave the way for C++23.)\n\nThis patch will only be released in version 33.x, or later, next year (2027).\n\nFor reference:\n\n* https://packages.ubuntu.com/noble/g++ (g++-13)\n* https://packages.debian.org/trixie/g++ (g++-14)\n* CentOS-like 8/9/10 ship recent GCC via appstream (`dnf install -y gcc-toolset-15`)\n* Free/Open/Net*BSD ship a recent GCC\n* OpenSuse Leap and Tumbleweed ship with g++ 15 https://software.opensuse.org/package/gcc15-c++\n\nOn operating systems where the minimum GCC version is not shipped by default, the user would have to use Clang, or install GCC in a different way. For example:\n\n* Debian Bookworm could use https://packages.debian.org/bookworm/clang-22\n* Ubuntu 22.04 would have to use a general alternative:\n* [PPA](https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test), https://apt.llvm.org/ (for Clang), brew, nix, guix, or compile GCC from source, ...\n\nObviously, downloading pre-compiled releases or compiling previous release branches is unaffected by this change.",
 "commits": [
  {
   "sha": "fa5c10acec151b69b941964e5bd0b7b0f0a939c3",
   "date": "2026-08-21T11:16:07Z",
   "message": "ci: refactor: Use printf %q quoting for BITCOIN_CONFIG\n\nThis refactor turns a long manually formatted and quoted string into one\nformatted and quoted by printf."
  },
  {
   "sha": "fa03706fdef52e85b36b758c5867519acfc32a70",
   "date": "2026-08-21T11:18:27Z",
   "message": "ci: Doc: Move all config comments right next to the option they explain"
  },
  {
   "sha": "959d39513962b6277409f46d29a5420ed879c701",
   "date": "2026-08-24T10:45:36Z",
   "message": "Merge commit 'fa03706fdef52e85b36b758c5867519acfc32a70' into HEAD"
  },
  {
   "sha": "0fb039d7f638ad10896029e3fafa4214b1cebd73",
   "date": "2026-08-24T10:45:56Z",
   "message": "build: Bump g++ minimum supported version to 13"
  },
  {
   "sha": "7b1c915e8083c2dd0a2214d469defc5c8c698d3a",
   "date": "2026-08-24T10:45:56Z",
   "message": "bench: refactor: tfm->std::format\n\nMake an example replacement to use std::format. New code can use this\nnow, but old code can probably stay as-is for now."
  },
  {
   "sha": "6169d4b79a12104010c37239df9bf2ac6cda6514",
   "date": "2026-08-24T10:46:44Z",
   "message": "ci: Drop -Werror now that CMAKE_COMPILE_WARNING_AS_ERROR is available"
  },
  {
   "sha": "ceae7a7ba785577b1e3f73eafdb0ef6763f92948",
   "date": "2026-08-24T10:46:49Z",
   "message": "doc: Remove redundant GCC 13 note in build-windows.md"
  },
  {
   "sha": "8ce1b34c8044c9d340851fb42c3dc760f52eb484",
   "date": "2026-08-24T10:49:07Z",
   "message": "ci: NetBSD-cross: Use libstdc++-14"
  }
 ],
 "timeline": [
  {
   "t": "2026-08-20T15:47:39Z",
   "kind": "force_push",
   "who": "maflcko",
   "commit": "97e41cf5defcc041b4ca8e3c80499a5c68e4ed81"
  },
  {
   "t": "2026-08-20T16:33:56Z",
   "kind": "comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "text": "Hmm, looks like netbsd-cross is a CI blocker for this? Not sure how to proceed here, because netbsd ci coverage may be useful, but no real user is doing netbsd-cross (I expect all users are running on native netbsd). But native netbsd isn't an option for CI ... :man_shrugging:"
  },
  {
   "t": "2026-08-21T08:30:48Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nAre you saying this does work natively on NetBSD? I'd expect it to fail the same way (given NetBSD 11 ships GCC 12.5.0 which doesn't support std::format), and the CI here is giving us the coverage we want (showing this would break compilation for native NetBSD users)?"
  },
  {
   "t": "2026-08-21T09:02:41Z",
   "kind": "comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "text": "NetBSD also has recent GCC in packages, so it should work natively on NetBSD. But I don't really know an answer to the meta question, or how to proceed here, which is why this is in draft and removed from the milestone.\n\nReferences:\n\n* https://www.netbsd.org/docs/software/3rdparty/: \"gcc: Version in tree: \t12.5.0/14.3.0\"\n* https://wiki.netbsd.org/releng/netbsd-11/ marks \"netbsd-11 is not buildable with gcc 14 or newer\" as fixed, but https://mail-index.netbsd.org/port-alpha/2026/08/03/msg001496.html ... ?\n* Edit: https://gcc.gnu.org/gcc-12/: \"(This release series is no longer supported.)\" ..."
  },
  {
   "t": "2026-08-21T09:29:16Z",
   "kind": "comment",
   "who": "fanquake",
   "assoc": "MEMBER",
   "text": "I guess somebody (maybe @hebasto?) could test a newer version of GCC natively, to determine which compiler/flag combo is required for std::format, and then update the build instructions. Could be good to do in any case, if NetBSD users are currently using GCC 12.x."
  },
  {
   "t": "2026-08-22T14:26:08Z",
   "kind": "comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nYes, it's possible to install a newer GCC compiler and configure the build system to use it (similar to what was documented prior to 9b85c9814d1d5b1ef9caedc25dc336dacb887dcc).\n\nFor example, on my NetBSD 11.0 system:\n```console\n$ sudo pkgin install gcc15\n$ cmake --preset dev-mode -DCMAKE_C_COMPILER=/usr/pkg/gcc15/bin/gcc -DCMAKE_CXX_COMPILER=/usr/pkg/gcc15/bin/g++ -DWITH_USDT=OFF -DENABLE_IPC=OFF\n```\n\nHowever, there is a minor issue caused by the base system and `pkgsrc` using different versions of `libstdc++`:\n```console\n/usr/bin/ld: warning: libstdc++.so.9, needed by /usr/pkg/lib/libzmq.so, may conflict with libstdc++.so.7\n```\nand\n```console\n$ ldd build_dev_mode/bin/bitcoind\nbuild_dev_mode/bin/bitcoind:\n\t-lzmq.5 => /usr/pkg/lib/libzmq.so.5\n\t-lrt.1 => /usr/lib/librt.so.1\n\t-lc.12 => /usr/lib/libc.so.12\n\t-lpthread.1 => /usr/lib/libpthread.so.1\n\t-lstdc++.9 => /usr/lib/libstdc++.so.9\n\t-lm.0 => /usr/lib/libm.so.0\n\t-lgcc_s.1 => /usr/pkg/gcc15/lib/./libgcc_s.so.1\n\t/usr/pkg/lib/libsqlite3.so => /usr/pkg/lib/libsqlite3.so\n\t-lstdc++.7 => /usr/pkg/gcc15/lib/./libstdc++.so.7\n```"
  },
  {
   "t": "2026-08-22T14:29:52Z",
   "kind": "comment",
   "who": "maflcko",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nSo the same issue previously existed on NetBSD 10? So the only way to compile on NetBSD is with depends (or self-compiling all deps)?"
  },
  {
   "t": "2026-08-22T14:50:32Z",
   "kind": "comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "text": "[quoted text omitted]\n\nYes.\n\n[quoted text omitted]\nThose linker warnings seem harmless, though.\n\nAs for \"self-compiling all deps\", only the C++ deps from `pkgsrc` actually need to be rebuilt. For an example of this, see https://github.com/hebasto/bitcoin-core-nightly/pull/117."
  },
  {
   "t": "2026-08-24T10:49:23Z",
   "kind": "force_push",
   "who": "maflcko",
   "commit": "8ce1b34c8044c9d340851fb42c3dc760f52eb484"
  },
  {
   "t": "2026-08-24T11:28:26Z",
   "kind": "review",
   "who": "hebasto",
   "assoc": "MEMBER",
   "state": "COMMENTED",
   "commit": "8ce1b34c8044c9d340851fb42c3dc760f52eb484",
   "text": "Concept ACK."
  },
  {
   "t": "2026-09-11T07:58:28Z",
   "kind": "comment",
   "who": "hebasto",
   "assoc": "MEMBER",
   "text": "Related: https://gcc.gnu.org/pipermail/gcc/2026-September/248875.html:\n[quoted text omitted]"
  }
 ],
 "labels_log": [
  {
   "t": "2026-08-20T15:45:59Z",
   "action": "labeled",
   "label": "Build system",
   "who": "DrahtBot"
  },
  {
   "t": "2026-08-20T15:48:23Z",
   "action": "labeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-08-24T12:22:48Z",
   "action": "unlabeled",
   "label": "CI failed",
   "who": "DrahtBot"
  },
  {
   "t": "2026-09-08T17:59:58Z",
   "action": "labeled",
   "label": "Needs rebase",
   "who": "DrahtBot"
  }
 ],
 "state_log": [
  {
   "t": "2026-08-20T15:45:59Z",
   "kind": "renamed",
   "who": "DrahtBot",
   "from": " build: Bump g++ minimum supported version to 13 ",
   "to": "build: Bump g++ minimum supported version to 13"
  },
  {
   "t": "2026-08-20T15:46:01Z",
   "kind": "convert_to_draft",
   "who": "maflcko"
  },
  {
   "t": "2026-08-20T15:46:13Z",
   "kind": "milestoned",
   "who": "maflcko"
  },
  {
   "t": "2026-08-20T17:03:07Z",
   "kind": "demilestoned",
   "who": "maflcko"
  }
 ],
 "text_chars": 5045,
 "text_tokens_estimate": 1261,
 "changed_paths": [
  "ci/test/00_setup_env_arm.sh",
  "ci/test/00_setup_env_freebsd_cross.sh",
  "ci/test/00_setup_env_i686_no_ipc.sh",
  "ci/test/00_setup_env_mac_cross.sh",
  "ci/test/00_setup_env_mac_cross_intel.sh",
  "ci/test/00_setup_env_mac_native.sh",
  "ci/test/00_setup_env_mac_native_fuzz.sh",
  "ci/test/00_setup_env_native_alpine_musl.sh",
  "ci/test/00_setup_env_native_asan.sh",
  "ci/test/00_setup_env_native_chimera_lto.sh",
  "ci/test/00_setup_env_native_fuzz.sh",
  "ci/test/00_setup_env_native_fuzz_with_msan.sh",
  "ci/test/00_setup_env_native_fuzz_with_valgrind.sh",
  "ci/test/00_setup_env_native_iwyu.sh",
  "ci/test/00_setup_env_native_msan.sh",
  "ci/test/00_setup_env_native_nowallet.sh",
  "ci/test/00_setup_env_native_previous_releases.sh",
  "ci/test/00_setup_env_native_tidy.sh",
  "ci/test/00_setup_env_native_tsan.sh",
  "ci/test/00_setup_env_native_valgrind.sh",
  "ci/test/00_setup_env_netbsd_cross.sh",
  "ci/test/00_setup_env_openbsd_cross.sh",
  "ci/test/00_setup_env_riscv_bare_cross.sh",
  "ci/test/00_setup_env_s390x.sh",
  "ci/test/00_setup_env_win64.sh",
  "ci/test/00_setup_env_win64_msvcrt.sh",
  "ci/test/01_base_install.sh",
  "cmake/module/CheckCXXFeatures.cmake",
  "doc/build-windows.md",
  "doc/dependencies.md",
  "doc/release-notes-36042.md",
  "src/bench/wallet_migration.cpp"
 ],
 "files": [
  {
   "path": "ci/test/00_setup_env_arm.sh",
   "add": 5,
   "del": 5
  },
  {
   "path": "ci/test/00_setup_env_freebsd_cross.sh",
   "add": 3,
   "del": 3
  },
  {
   "path": "ci/test/00_setup_env_i686_no_ipc.sh",
   "add": 3,
   "del": 3
  },
  {
   "path": "ci/test/00_setup_env_mac_cross.sh",
   "add": 3,
   "del": 3
  },
  {
   "path": "ci/test/00_setup_env_mac_cross_intel.sh",
   "add": 3,
   "del": 3
  },
  {
   "path": "ci/test/00_setup_env_mac_native.sh",
   "add": 3,
   "del": 3
  },
  {
   "path": "ci/test/00_setup_env_mac_native_fuzz.sh",
   "add": 5,
   "del": 1
  },
  {
   "path": "ci/test/00_setup_env_native_alpine_musl.sh",
   "add": 3,
   "del": 3
  },
  {
   "path": "ci/test/00_setup_env_native_asan.sh",
   "add": 7,
   "del": 7
  },
  {
   "path": "ci/test/00_setup_env_native_chimera_lto.sh",
   "add": 3,
   "del": 3
  },
  {
   "path": "ci/test/00_setup_env_native_fuzz.sh",
   "add": 4,
   "del": 4
  },
  {
   "path": "ci/test/00_setup_env_native_fuzz_with_msan.sh",
   "add": 6,
   "del": 7
  },
  {
   "path": "ci/test/00_setup_env_native_fuzz_with_valgrind.sh",
   "add": 3,
   "del": 3
  },
  {
   "path": "ci/test/00_setup_env_native_iwyu.sh",
   "add": 3,
   "del": 3
  },
  {
   "path": "ci/test/00_setup_env_native_msan.sh",
   "add": 6,
   "del": 7
  },
  {
   "path": "ci/test/00_setup_env_native_nowallet.sh",
   "add": 3,
   "del": 3
  },
  {
   "path": "ci/test/00_setup_env_native_previous_releases.sh",
   "add": 11,
   "del": 12
  },
  {
   "path": "ci/test/00_setup_env_native_tidy.sh",
   "add": 4,
   "del": 4
  },
  {
   "path": "ci/test/00_setup_env_native_tsan.sh",
   "add": 3,
   "del": 3
  },
  {
   "path": "ci/test/00_setup_env_native_valgrind.sh",
   "add": 4,
   "del": 5
  },
  {
   "path": "ci/test/00_setup_env_netbsd_cross.sh",
   "add": 11,
   "del": 5
  },
  {
   "path": "ci/test/00_setup_env_openbsd_cross.sh",
   "add": 3,
   "del": 3
  },
  {
   "path": "ci/test/00_setup_env_riscv_bare_cross.sh",
   "add": 4,
   "del": 3
  },
  {
   "path": "ci/test/00_setup_env_s390x.sh",
   "add": 3,
   "del": 3
  },
  {
   "path": "ci/test/00_setup_env_win64.sh",
   "add": 3,
   "del": 3
  },
  {
   "path": "ci/test/00_setup_env_win64_msvcrt.sh",
   "add": 3,
   "del": 3
  },
  {
   "path": "ci/test/01_base_install.sh",
   "add": 12,
   "del": 0
  },
  {
   "path": "cmake/module/CheckCXXFeatures.cmake",
   "add": 18,
   "del": 0
  },
  {
   "path": "doc/build-windows.md",
   "add": 0,
   "del": 1
  },
  {
   "path": "doc/dependencies.md",
   "add": 1,
   "del": 1
  },
  {
   "path": "doc/release-notes-36042.md",
   "add": 4,
   "del": 0
  },
  {
   "path": "src/bench/wallet_migration.cpp",
   "add": 3,
   "del": 3
  }
 ],
 "test_lines": 235,
 "git": {
  "head": "8ce1b34c8044c9d340851fb42c3dc760f52eb484",
  "head_matches_backup": true,
  "base": "994c17d6c0a1453a1d7cc44ee2bbc49afa2d1155",
  "commits": [
   {
    "sha": "fa5c10acec",
    "subject": "ci: refactor: Use printf %q quoting for BITCOIN_CONFIG",
    "files": 26,
    "add": 95,
    "del": 90
   },
   {
    "sha": "fa03706fde",
    "subject": "ci: Doc: Move all config comments right next to the option they explain",
    "files": 6,
    "add": 9,
    "del": 12
   },
   {
    "sha": "959d395139",
    "subject": "Merge commit 'fa03706fdef52e85b36b758c5867519acfc32a70' into HEAD",
    "files": 26,
    "add": 101,
    "del": 99
   },
   {
    "sha": "0fb039d7f6",
    "subject": "build: Bump g++ minimum supported version to 13",
    "files": 4,
    "add": 27,
    "del": 5
   },
   {
    "sha": "7b1c915e80",
    "subject": "bench: refactor: tfm->std::format",
    "files": 1,
    "add": 3,
    "del": 3
   },
   {
    "sha": "6169d4b79a",
    "subject": "ci: Drop -Werror now that CMAKE_COMPILE_WARNING_AS_ERROR is available",
    "files": 1,
    "add": 2,
    "del": 3
   },
   {
    "sha": "ceae7a7ba7",
    "subject": "doc: Remove redundant GCC 13 note in build-windows.md",
    "files": 1,
    "add": 0,
    "del": 1
   },
   {
    "sha": "8ce1b34c80",
    "subject": "ci: NetBSD-cross: Use libstdc++-14",
    "files": 2,
    "add": 20,
    "del": 2
   }
  ],
  "patch_truncated": false
 },
 "input_hash": "4bbef68595fed646",
 "extracted_at": "2026-09-17T16:15:31+00:00"
}