Following up on #53275, there are a few more improvements I'd like to make to pull diagnostics so that they are comparable in performance to push diagnostics, at which point we can enable them by default:
- Rewrite the bottom-up graph traversal of analysis nodes: in the common case, all dependency information will be a cache hit (including memoized keys and encoded summaries in the file cache). Therefore, the bottom-up traversal of the full graph is a significant overhead when repeatedly querying diagnostics.
- Rewrite the bottom-up graph traversal to build package handles, for similar reasons.
- Refactor the fact decoder to operate on shallow fact encoding, so that facts in transitive dependencies can be retrieved (and decoded) on demand. (This could have a huge impact on performance).
- Add support for go.mod and go.work diagnostics (requires refactoring the way we diagnose the workspace).
CC @adonovan
Following up on #53275, there are a few more improvements I'd like to make to pull diagnostics so that they are comparable in performance to push diagnostics, at which point we can enable them by default:
CC @adonovan