-
Notifications
You must be signed in to change notification settings - Fork 0
Improve hls runtime keep async only databse keys #26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Improve hls runtime keep async only databse keys #26
Conversation
… them to improve performance fix haskell#4381
…p error loading and cradle files
Renames getOptions to getOptionsWorker for clarity Removes redundant getOptionsLoop function Ensures session loading is called under the same `Action` context
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR makes significant changes to HLS runtime to only keep async operations for database keys that are not affected by dirty keys. The changes implement a sophisticated asynchronous task management system using worker queues and database state preservation to improve performance and reliability.
Key changes include:
- Refactored the shake database to use a worker queue-based architecture with async task management
- Added computation to preserve only unaffected async operations when restarting builds
- Improved VFS handling with additional language kind metadata
Reviewed Changes
Copilot reviewed 40 out of 41 changed files in this pull request and generated 5 comments.
Show a summary per file
File | Description |
---|---|
scripts/flaky-test-patterns.txt | Added pattern file for identifying flaky test cases |
scripts/flaky-test-loop.sh | New bash script for looping flaky tests with enhanced configuration and logging |
scripts/eventlog_dump.py | Python utility for dumping GHC RTS eventlogs with filtering capabilities |
plugins/hls-signature-help-plugin/test/Main.hs | Updated import to hide conflicting getSignatureHelp function |
plugins/hls-semantic-tokens-plugin/test/SemanticTokensTest.hs | Updated VirtualFile constructor call with language kind parameter |
plugins/hls-semantic-tokens-plugin/src/Ide/Plugin/SemanticTokens.hs | Added comment explaining semantic tokens functionality |
plugins/hls-class-plugin/src/Ide/Plugin/Class/Types.hs | Fixed GHC version compatibility for tidyOpenType function |
hls-test-utils/src/Test/Hls.hs | Added logStdErr configuration for test sessions |
hls-test-utils/src/Development/IDE/Test.hs | Commented out garbageCollectDirtyKeys function |
hls-graph/test/DatabaseSpec.hs | Refactored tests to use new itInThread helper and updated database initialization |
hls-graph/test/ActionSpec.hs | Major refactor to use worker thread architecture for database operations |
hls-graph/src/Development/IDE/WorkerThread.hs | New worker thread management module with task queues and lifetime control |
hls-graph/src/Development/IDE/Graph/Internal/Types.hs | Extensive changes to database types including async preservation and runtime reverse dependencies |
hls-graph/src/Development/IDE/Graph/Internal/Key.hs | Added Pretty instances and unionKyeSet function |
hls-graph/src/Development/IDE/Graph/Internal/Database.hs | Major refactor to async-based database operations with preservation logic |
hls-graph/src/Development/IDE/Graph/Internal/Action.hs | Updated to support database-based async operations |
hls-graph/src/Development/IDE/Graph/Database.hs | Added new database management functions for shutdown and preservation |
hls-graph/src/Development/IDE/Graph.hs | Removed actionFork from exports |
hls-graph/hls-graph.cabal | Added new dependencies for worker thread functionality |
ghcide/src/Development/IDE/Types/HscEnvEq.hs | Removed unused imports and simplified file cache handling |
ghcide/src/Development/IDE/Types/Action.hs | Added isActionQueueEmpty function |
ghcide/src/Development/IDE/Plugin/Test.hs | Updated to use stateValues instead of state |
ghcide/src/Development/IDE/Plugin/Completions/Logic.hs | Updated VirtualFile pattern matching |
ghcide/src/Development/IDE/Main.hs | Updated worker thread initialization |
ghcide/src/Development/IDE/LSP/LanguageServer.hs | Major refactor of LSP server initialization with proper shutdown handling |
ghcide/src/Development/IDE/Core/Shake.hs | Extensive changes to implement async-preserving restart logic |
ghcide/src/Development/IDE/Core/Rules.hs | Updated dependency logging and VFS handling |
ghcide/src/Development/IDE/Core/FileStore.hs | Updated for new task queue and VFS handling |
ghcide/src/Development/IDE/Core/Compile.hs | Updated indexing to use task queues |
ghcide/session-loader/Development/IDE/Session/OrderedSet.hs | New ordered set implementation using STM |
ghcide/session-loader/Development/IDE/Session/Ghc.hs | New GHC session management module |
ghcide/session-loader/Development/IDE/Session/Dependency.hs | New dependency tracking module |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
plugins/hls-semantic-tokens-plugin/src/Ide/Plugin/SemanticTokens.hs
Outdated
Show resolved
Hide resolved
54ec50a
to
f5a540a
Compare
- Refactor test workflow to simplify test commands. - Introduce TestReporting style for progress reporting in IDE options.
No description provided.