Repository navigation
Conversation
The improved-plan cache held the improved plan and the elaborated plan it was made from, beside the elaborated-plan cache that already holds the latter. The improved plan is the elaborated plan with the units found in the store marked as installed, so improved-plan now holds only which of the plan's units are in the store, and the marking is redone from that set on each run. The store directory is monitored as before. Co-Authored-By: Claude Fable 5.2 <[email protected]>
A dependency is planned until it is in the store and planned again once it is removed from there, with the project unchanged. OfflineFlag covers the first half; nothing covered the second. Co-Authored-By: Claude Fable 5.2 <[email protected]>
Co-Authored-By: Claude Fable 5.2 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 removes the duplicate plans from
cache/improved-plan. On master, the build cache holds every unit of the install plan three times: once inelaborated-planand twice inimproved-plan. The improved plan is the elaborated plan with units found in the store marked as installed.improved-plannow holds the set of the plan's units that are in the store, keyed by the set of configured units. The store directory is monitored as before, and the marking is redone from the set on each run. Animproved-planwritten by an older cabal is treated as stale and overwritten without re-solving.This is the follow-up I offered on #12463. It applies with or without #12464 and #12500. Each unit still keeps its own copy of the finalized
PackageDescription, the follow-up already named in #12464.I measured HLS at
bc2bbb8ewith the method from #12464, using GHC 9.12.4,-O1, assertions enabled and a populated dependency store. These are medians of six order-balancedcabal build all --dry-runruns on a shared macOS development machine. I applied the diff to0687f8d2f. For the last column, I added one entry to the store between runs.improved-plancache/0687f8d2fThe dry-run build list and
plan.jsonwere identical with and without the PR on every run, including after store additions and removals and toggling--disable-testsand back.AI disclosure: written with Claude Code (Fable 5.2 and Opus 5.5).
significance: significantin the changelog file.StoreUnitRemoved)QA Notes
Build a project with a dependency from Hackage;
dist-newstyle/cache/improved-planis a few KB. Build again; the second build is up to date. Delete the dependency's directory from the store;cabal build --dry-runlists it again.StoreUnitRemovedcovers this.