De-bounce linter analyzers and run them on a separate thread
- Dominant language
- Bicep
- Stars
- 3.6k
- Forks
- 830
- Avg merge
- 1d 4h
- Merged PRs (30d)
- 81
Description
Some of our linters are very CPU intensive; running them synchronously can result in a laggy overall experience. To address this, we should:
* Run them asynchronously on a different thread to avoid blocking the publishing of core diagnostics and introducing a lag.
* Consider de-bouncing them to avoid constant keystrokes from continuously invoking the linters (only run linters on the latest copy of a compilation, ~X seconds after it has been modified).
See #3636 for discussion on an example perf problem which this could help alleviate.
Contributor guide
Research direction
Start with the discussion in #3636 and trace where compilation updates invoke the CPU-intensive linters. Define the debounce interval and verify that core diagnostics are not delayed while linters run on a separate thread and only process the latest compilation.
Written by the indexing model from the issue text.
Assessment
- Domain
- performance, tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100