mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-04-14 17:48:01 +02:00
Merge bitcoin/bitcoin#34639: iwyu: Document or remove some pragma: export and other improvements
0fe6fccec2doc: Document rationale for using `IWYU pragma: export` (Hennadii Stepanov)cfa3b10d50iwyu, doc: Document `IWYU pragma: export` for `<logging/categories.h>` (Hennadii Stepanov)015bea05e6iwyu, doc: Document `IWYU pragma: export` for `<chrono>` (Hennadii Stepanov)48bfcfedeciwyu, doc: Document `IWYU pragma: export` for `<threadsafety.h>` (Hennadii Stepanov)179abb387frefactor: Move `StdMutex` to its own header (Hennadii Stepanov)6d2952c3c3serialize: Add missing `<span>` header (Hennadii Stepanov) Pull request description: This PR is a prerequisite for https://github.com/bitcoin/bitcoin/pull/34448. It was split into a separate PR to limit the scope and minimize potential merge conflicts. The first commit improves the accuracy of IWYU suggestions within our heavily templated code. Note that, for now, the `serialize.h` header itself is excluded from IWYU inspection because it lacks a corresponding source file. The remaining commits follow the Developer Notes [guidance](https://github.com/bitcoin/bitcoin/blob/master/doc/developer-notes.md#using-iwyu): > Use `IWYU pragma: export` very sparingly, as this enforces transitive inclusion of headers and undermines the specific purpose of IWYU. ACKs for top commit: maflcko: review ACK0fe6fccec2👤 ajtowns: utACK0fe6fccec2Tree-SHA512: dc2d4e3ff78b9707a1a26cb9b1c0a456de0d33c59e773bbf692344c2fceaff8936317479c5e898038f29134bc0e5d9d1ef7350e53512dd8e262f46ede578c4f9
This commit is contained in:
@@ -542,6 +542,13 @@ to a function that accepts a `std::string` parameter. An implicit conversion occ
|
||||
Use `IWYU pragma: export` very sparingly, as this enforces transitive inclusion of headers
|
||||
and undermines the specific purpose of IWYU.
|
||||
|
||||
The acceptable cases for using `IWYU pragma: export` are:
|
||||
1. Facade headers. For example, see [`compat/compat.h`](/src/compat/compat.h).
|
||||
2. Drop-in replacement headers. For example, see [`util/time.h`](/src/util/time.h).
|
||||
3. Presenting a complete interface across multiple headers.
|
||||
|
||||
A comment explaining the rationale is required for every use of `IWYU pragma: export`.
|
||||
|
||||
### Performance profiling with perf
|
||||
|
||||
Profiling is a good way to get a precise idea of where time is being spent in
|
||||
|
||||
Reference in New Issue
Block a user