merge-script 2db926f49c
Merge bitcoin/bitcoin#30889: log: Use ConstevalFormatString
facbcd4cef8890ae18976fb53b67ea56b3c04454 log: Use ConstevalFormatString (MarcoFalke)
fae9b60c4ffef38d9725f42f992b1f38765312a3 test: Use LogPrintStr to test m_log_sourcelocations (MarcoFalke)
fa39b1ca63874db8ef8bc16b87e2699e8e1b67be doc: move-only logging warning (MarcoFalke)

Pull request description:

  This changes all logging (including the wallet logging) to produce a
  `ConstevalFormatString` at compile time, so that the format string can be
  validated at compile-time.

  I tested with `clang` and found that the compiler will use less than 1% more of time and memory.

  When an error is found, the compile-time error depends on the compiler, but it may look similar to:

  ```
  src/util/string.h: In function ‘int main(int, char**)’:
  src/bitcoind.cpp:265:5:   in ‘constexpr’ expansion of ‘util::ConstevalFormatString<1>(((const char*)"Hi %s %s"))’
  src/util/string.h:38:98:   in ‘constexpr’ expansion of ‘util::ConstevalFormatString<1>::Detail_CheckNumFormatSpecifiers(std::basic_string_view<char>(((const char*)((util::ConstevalFormatString<1>*)this)->util::ConstevalFormatString<1>::fmt)))’
  src/util/string.h:78:34: error: expression ‘<throw-expression>’ is not a constant expression
     78 |         if (num_params != count) throw "Format specifier count must match the argument count!";
        |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  ```

  This refactor does not change behavior of the compiled executables.

ACKs for top commit:
  hodlinator:
    re-ACK facbcd4cef8890ae18976fb53b67ea56b3c04454
  l0rinc:
    ACK facbcd4cef8890ae18976fb53b67ea56b3c04454
  ryanofsky:
    Code review ACK facbcd4cef8890ae18976fb53b67ea56b3c04454
  pablomartin4btc:
    re-ACK facbcd4cef8890ae18976fb53b67ea56b3c04454
  stickies-v:
    Approach ACK and code LGTM facbcd4cef8890ae18976fb53b67ea56b3c04454 modulo a `tinyformat::format_error` concern.

Tree-SHA512: 852f74d360897020f0d0f6e5064edc5e7f7dacc2bec1d5feff22c634a2fcd2eb535aa75be0b7191d9053728be6108484c737154b02d68ad3186a2e5544ba0db8
2024-09-19 12:17:14 +01:00
..
2024-09-17 18:21:23 +02:00
2024-08-29 13:49:57 +02:00
2024-08-29 13:49:57 +02:00
2024-08-06 01:38:10 +02:00
2024-09-17 09:54:18 +02:00
2024-08-06 01:38:10 +02:00
2024-08-04 08:51:36 +02:00
2024-09-12 19:33:46 +02:00
2024-09-17 18:21:23 +02:00
2024-05-20 16:48:19 +00:00
2024-07-08 11:12:01 +02:00
2024-09-10 11:20:40 -03:00
2024-08-29 13:49:57 +02:00
2024-07-08 11:12:01 +02:00
2024-08-29 13:49:57 +02:00
2024-07-08 11:12:01 +02:00
2024-08-29 13:49:57 +02:00
2024-09-06 17:36:18 +02:00