[nfc] Clean up recursive header dependencies #2039
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This should slightly improve compile speeds, especially under MSVC. To keep this change small this primarily affects headers, which should already allow us to eliminate many superfluous recursive includes.
Further potential to reduce recursive includes exists by refactoring async code so that coroutines are not always included, as well as isolating usage of large libc++ headers like <set> and <atomic>. I experimented with those and based on looking at preprocessed source code sizes in a more rigorous way this leads to larger improvements in include sizes, but the advantage in compile time is harder to evaluate.
This will likely require some include changes downstream which are still Work-In-Progress, but this should be final and ready for review.