Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
136 commits
Select commit Hold shift + click to select a range
58b8b68
Refactor session loading to manage pending files so we can batch load…
soulomoon Nov 2, 2024
ea002d7
distribute errors to all pending files are being loading
soulomoon Nov 3, 2024
c78b197
better filter loading files
soulomoon Nov 3, 2024
b879375
fallback to non-batch load
soulomoon Nov 4, 2024
8953aec
typo
soulomoon Nov 4, 2024
4bdc2c8
update inline doc
soulomoon Nov 4, 2024
c4bb53a
update inline doc
soulomoon Nov 4, 2024
112bc95
add LogSessionReloadOnError to log errors during file reloads; cleanu…
soulomoon Nov 4, 2024
9a2aaf1
Merge branch 'master' into batch-load
soulomoon Nov 4, 2024
6e04d28
refactor loadSessionWithOptions to improve error handling and clarify…
soulomoon Nov 4, 2024
67aebc4
refactor loadSessionWithOptions to improve pending file handling and …
soulomoon Nov 4, 2024
98ae446
add doc about limitation
soulomoon Nov 4, 2024
f3eb580
absolute file at the beginning
soulomoon Nov 5, 2024
e7bd3d4
run session loader and worker in sperate
soulomoon Nov 7, 2024
1f97c40
cleanup
soulomoon Nov 7, 2024
4c998bd
rename LogGetSessionRetry to LogLookupSessionCache for clarity in log…
soulomoon Nov 8, 2024
79a43a0
extract attempt to load files from errors
soulomoon Nov 9, 2024
beb1764
refactor session loading to wait for pending files before cache check
soulomoon Nov 12, 2024
6139522
add LogTime to logging for improved time tracking during session loading
soulomoon Nov 18, 2024
7314509
refactor session loading to handle dependency checks more clearly
soulomoon Nov 19, 2024
cddcc55
Refactors session loading logic
soulomoon Nov 19, 2024
4c99c47
Merge branch 'master' into batch-load-multi-read
soulomoon Dec 6, 2024
bb78a36
delay the restart
soulomoon Dec 6, 2024
33f788c
Merge branch 'master' into batch-load-multi-read
soulomoon Jan 8, 2025
0913d2e
Merge branch 'master' into batch-load-multi-read
soulomoon Feb 4, 2025
58ec7ea
re-inline the old file instead of loading it twice
soulomoon Feb 17, 2025
60e8427
Merge branch 'master' into batch-load-multi-read
soulomoon Feb 17, 2025
d943963
update upload artifact action version
soulomoon Feb 18, 2025
5d01500
update hie-bios tag
soulomoon Feb 25, 2025
10a6f7e
Update hie-bios tag to latest commit
soulomoon Feb 26, 2025
de6d5f3
Merge branch 'master' into batch-load-multi-read
soulomoon Mar 2, 2025
45b1241
update hie-bios
soulomoon Mar 2, 2025
219db46
update index-state to reflect the latest project state
soulomoon Mar 2, 2025
2f86db0
update index-state to reflect the new date
soulomoon Mar 3, 2025
de98232
update fourmolu dependency version constraints
soulomoon Mar 6, 2025
f0a881d
remove ListT from library dependencies
soulomoon Mar 6, 2025
14f6a3b
update hie-bios to a new tag
soulomoon Mar 6, 2025
8b0e246
update fourmolu dependency version constraints to allow 0.16
soulomoon Mar 6, 2025
2dd71c0
add allow-newer constraint for Cabal-syntax
soulomoon Mar 6, 2025
b8406d6
remove allow-newer constraint for Cabal-syntax
soulomoon Mar 6, 2025
5ea3d87
bump actions/checkout and actions/upload-artifact to v3
soulomoon Mar 6, 2025
3e0c27b
Revert "bump actions/checkout and actions/upload-artifact to v3"
soulomoon Mar 6, 2025
8c27e34
add allow-older constraint for optparse-applicative in cabal.project
soulomoon Mar 7, 2025
bb0a541
Merge branch 'master' into batch-load-multi-read
soulomoon Mar 13, 2025
e491f60
Merge branch 'master' into batch-load-multi-read
soulomoon Mar 20, 2025
d5c2326
Merge branch 'master' into batch-load-multi-read
soulomoon Mar 27, 2025
9efcb2e
Merge branch 'master' into batch-load-multi-read
soulomoon Apr 6, 2025
c883a09
Merge branch 'master' into batch-load-multi-read
soulomoon Apr 16, 2025
9f9b8f7
Merge branch 'master' into batch-load-multi-read
soulomoon Apr 24, 2025
b0af634
update hie-bios
soulomoon Apr 24, 2025
06fa5de
introduce SessionState
soulomoon Apr 27, 2025
78e01a8
Merge branch 'master' into batch-load-multi-read
soulomoon Apr 27, 2025
80d0160
update hiebois
soulomoon Apr 27, 2025
24269f6
revert
soulomoon Apr 28, 2025
98999f5
restart the shake if cabal file changed
soulomoon Apr 28, 2025
21dd233
better error handling in session loader
soulomoon Apr 28, 2025
f140a2a
refactor error handling in loadSessionWithOptions to improve clarity …
soulomoon Apr 28, 2025
e339c1d
refactor SessionState management for improved batch loading logic
soulomoon Apr 28, 2025
1425289
refactor session loading error handling for improved clarity and sepa…
soulomoon Apr 28, 2025
de6eb9c
cleanup
soulomoon May 8, 2025
db18100
Merge branch 'master' into batch-load-multi-read
soulomoon May 8, 2025
c9926d4
fix
soulomoon May 8, 2025
48a46d1
add sessionLoadingPreferenceConfig var to SessionState
soulomoon May 8, 2025
90e1df1
Merge branch 'master' into batch-load-multi-read
soulomoon May 12, 2025
702e367
refactor SessionState to use Var instead of IORef for loaded and fail…
soulomoon May 14, 2025
09213d3
simplified
soulomoon May 19, 2025
4a78e6e
Merge branch 'master' into batch-load-multi-read
soulomoon May 26, 2025
4cb5a70
Merge branch 'master' into batch-load-multi-read
soulomoon Jun 3, 2025
005f573
Merge branch 'master' into batch-load-multi-read
soulomoon Jun 4, 2025
db8b1ac
Merge branch 'master' into batch-load-multi-read
soulomoon Jun 13, 2025
f768db0
Extract top-level functions for session initialisation
fendor Jun 21, 2025
a92ffb1
Merge branch 'master' into batch-load-multi-read
soulomoon Jun 23, 2025
d4fbc2c
Remove unused _removeInplacePackages function
fendor Jul 4, 2025
ff807c3
Introduce SessionM for bundling read-only variables
fendor Jul 4, 2025
1aa1e2c
Extract ghc specific functions into separate module
fendor Jul 4, 2025
aff67c0
Merge remote-tracking branch 'upstream/master' into batch-load-multi-…
fendor Jul 4, 2025
8957a42
Merge branch 'master' into batch-load-multi-read
soulomoon Jul 17, 2025
7d106cf
fix duplication
soulomoon Jul 18, 2025
ddef7d4
Remove RTS options from multi-unit configuration files
soulomoon Aug 4, 2025
3a4ddda
merge master
soulomoon Aug 4, 2025
d5632d6
format
soulomoon Aug 4, 2025
4c5bc35
apply the patch from https://github.com/haskell/haskell-language-serv…
soulomoon Aug 4, 2025
d943452
add comments for orderedSet
soulomoon Aug 4, 2025
bd79156
update comments for orderedSet
soulomoon Aug 4, 2025
dc34df6
fix import
soulomoon Aug 4, 2025
71d6575
refactor OrderedSet to use a record for better clarity and structure
soulomoon Aug 5, 2025
ac1d36d
Merge branch 'master' into batch-load-multi-read
soulomoon Aug 9, 2025
504d71d
merge master in
soulomoon Aug 11, 2025
dd6b562
merge master in
soulomoon Aug 11, 2025
24738d6
session: move handleBatchLoadSuccess inside
soulomoon Aug 19, 2025
468b992
Merge branch 'master' into batch-load-multi-read
soulomoon Aug 20, 2025
b1237d0
debug
soulomoon Aug 21, 2025
a9f4406
Merge branch 'batch-load-multi-read', remote-tracking branch 'origin'…
soulomoon Aug 22, 2025
1263b9f
Refactor garbage collection logic and improve logging in Shake module
soulomoon Sep 1, 2025
26aa9be
hls-graph: simplify AIO; scoped cancellation; fewer threads; safe cle…
soulomoon Sep 1, 2025
a219810
update hls-graph runtime
soulomoon Sep 5, 2025
df47889
Merge remote-tracking branch 'upstream/master' into improve-hls-runtime
soulomoon Sep 5, 2025
86fff58
exit
soulomoon Sep 6, 2025
558f861
debounce empty diags
soulomoon Sep 6, 2025
51c1ceb
refactor progress reporting: remove unused parameters and simplify fu…
soulomoon Sep 6, 2025
1ed5fcb
fix old actions runs because we did not increment the step
soulomoon Sep 6, 2025
df6a8f4
fix build
soulomoon Sep 6, 2025
80733e7
remove unused imports from various modules
soulomoon Sep 6, 2025
26045a1
upgrade lsp version
soulomoon Sep 6, 2025
f1fb7fe
Merge remote-tracking branch 'upstream/master' into improve-hls-runtime
soulomoon Sep 7, 2025
74e1909
fix build in older verions
soulomoon Sep 7, 2025
8f37379
prefer shakeRestart if there are others in queue
soulomoon Sep 7, 2025
1fd46bf
1. mergeMultiple restarts if they appear at once.
soulomoon Sep 7, 2025
f9e1023
prefer restart than other actions in shakeControlQueu
soulomoon Sep 7, 2025
b4d3c49
wait for shake restart only if needed
soulomoon Sep 8, 2025
7bf6fde
always wait for restart
soulomoon Sep 8, 2025
e963e61
cleanup
soulomoon Sep 9, 2025
c778f9d
refactor: streamline ShakeRestartArgs and enhance database queue access
soulomoon Sep 9, 2025
70c56ea
Revert "always wait for restart"
soulomoon Sep 9, 2025
296c385
refactor: enhance shakeRestart to use versioning for session management
soulomoon Sep 9, 2025
c207e5d
refactor: improve restart task handling with final check for pending …
soulomoon Sep 9, 2025
e26c066
before finer cleanup
soulomoon Sep 10, 2025
09890e7
Reapply "always wait for restart"
soulomoon Sep 10, 2025
eebf706
fix stuck
soulomoon Sep 11, 2025
2c771e1
fix session loader: mask_ to prevent swallow async exception
soulomoon Sep 11, 2025
09905ba
attempt to kill less thread
soulomoon Sep 12, 2025
4ec36f1
fix build
soulomoon Sep 12, 2025
3b0f4c8
refactor: update DeliverStatus handling in database operations
soulomoon Sep 12, 2025
eaff72e
fix job previous step job skipping
soulomoon Sep 12, 2025
2cc8c97
kill thread that actually needed to be killed
soulomoon Sep 12, 2025
f5a540a
fix hls-graph test
soulomoon Sep 12, 2025
28a52a0
add Debug.Trace import for traceEventIO usage
soulomoon Sep 13, 2025
fafcc68
fix wrong removal of databasevalues
soulomoon Sep 13, 2025
0059f69
prune finished threads
soulomoon Sep 13, 2025
538b1f6
prevent deletion of root key in pruneFinished function
soulomoon Sep 13, 2025
8689ff7
cleanup
soulomoon Sep 13, 2025
4ddcf49
fix computeReverseRuntimeMap
soulomoon Sep 13, 2025
0d548be
use hashmap to compute reverseDep
soulomoon Sep 13, 2025
28bff49
Enhance testing workflow and progress reporting
soulomoon Aug 28, 2025
ed74540
fix 9.6
soulomoon Sep 13, 2025
0cc888b
cleanup
soulomoon Sep 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ jobs:
- if: needs.pre_job.outputs.should_skip_ghcide != 'true' && matrix.test
name: Test ghcide
# run the tests without parallelism to avoid running out of memory
run: cabal test ghcide-tests || cabal test ghcide-tests
run: cabal test ghcide-tests

- if: matrix.test
name: Test hls-plugin-api
Expand Down
6 changes: 6 additions & 0 deletions cabal.project
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,9 @@ if impl(ghc >= 9.11)
allow-newer:
cabal-install-parsers:base,
cabal-install-parsers:time,

source-repository-package
type: git
location: https://github.com/soulomoon/lsp.git
tag: 640c7c755bf16128e3cb19c257688aa3305ff9f5
subdir: lsp lsp-types lsp-test
4 changes: 3 additions & 1 deletion ghcide/ghcide.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,6 @@ library
Development.IDE.Core.Shake
Development.IDE.Core.Tracing
Development.IDE.Core.UseStale
Development.IDE.Core.WorkerThread
Development.IDE.GHC.Compat
Development.IDE.GHC.Compat.Core
Development.IDE.GHC.Compat.CmdLine
Expand Down Expand Up @@ -179,7 +178,9 @@ library
Development.IDE.Plugin.Test
Development.IDE.Plugin.TypeLenses
Development.IDE.Session
Development.IDE.Session.Dependency
Development.IDE.Session.Diagnostics
Development.IDE.Session.Ghc
Development.IDE.Session.Implicit
Development.IDE.Spans.AtPoint
Development.IDE.Spans.Common
Expand All @@ -202,6 +203,7 @@ library
Development.IDE.GHC.CPP
Development.IDE.GHC.Warnings
Development.IDE.Types.Action
Development.IDE.Session.OrderedSet

if flag(pedantic)
ghc-options:
Expand Down
1,360 changes: 580 additions & 780 deletions ghcide/session-loader/Development/IDE/Session.hs

Large diffs are not rendered by default.

35 changes: 35 additions & 0 deletions ghcide/session-loader/Development/IDE/Session/Dependency.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
module Development.IDE.Session.Dependency where

Check warning on line 1 in ghcide/session-loader/Development/IDE/Session/Dependency.hs

View workflow job for this annotation

GitHub Actions / Hlint check run

Warning in module Development.IDE.Session.Dependency: Use module export list ▫︎ Found: "module Development.IDE.Session.Dependency where" ▫︎ Perhaps: "module Development.IDE.Session.Dependency (\n module Development.IDE.Session.Dependency\n ) where" ▫︎ Note: an explicit list is usually better

import Control.Exception.Safe as Safe
import Data.Either.Extra
import qualified Data.Map.Strict as Map
import Data.Time.Clock
import System.Directory

type DependencyInfo = Map.Map FilePath (Maybe UTCTime)

-- | Check if any dependency has been modified lately.
checkDependencyInfo :: DependencyInfo -> IO Bool
checkDependencyInfo old_di = do
di <- getDependencyInfo (Map.keys old_di)
return (di == old_di)

-- Note [Multi Cradle Dependency Info]
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- Why do we implement our own file modification tracking here?
-- The primary reason is that the custom caching logic is quite complicated and going into shake
-- adds even more complexity and more indirection. I did try for about 5 hours to work out how to
-- use shake rules rather than IO but eventually gave up.

-- | Computes a mapping from a filepath to its latest modification date.
-- See Note [Multi Cradle Dependency Info] why we do this ourselves instead
-- of letting shake take care of it.
getDependencyInfo :: [FilePath] -> IO DependencyInfo
getDependencyInfo fs = Map.fromList <$> mapM do_one fs

where
safeTryIO :: IO a -> IO (Either IOException a)
safeTryIO = Safe.try

do_one :: FilePath -> IO (FilePath, Maybe UTCTime)
do_one fp = (fp,) . eitherToMaybe <$> safeTryIO (getModificationTime fp)
Loading
Loading