Stricter solving preferences for deprecated packages and releases
- Dominant language
- Haskell
- Stars
- 1.7k
- Forks
- 750
- Avg merge
- 4d 3h
- Merged PRs (30d)
- 28
Description
*Context: https://github.com/haskell-unordered-containers/hashable/issues/310#issuecomment-2186236890*
From what I understand, the solver has a backtracking behaviour for flags and deprecation statuses, where it will switch flags to see if a particular combination is best suited for what the user has (sometimes unknowingly) asked.
If flags can be kept to a certain value with a freeze file, it's not the case with (transitive) dependencies that we know for sure don't want based on their deprecation status.
It would be interesting to explore the option of having a strict solving mode, optionally enabled of course, which give more expected results in terms of solver errors (“you tried to depend on a deprecated release or package”) rather than an unexpected solver success which nonetheless brings an unwanted dependency.
Contributor guide
Research direction
Start by reading the linked hashable discussion and the Cabal solver's existing handling of flags and deprecation statuses. The issue would be done when an optional strict solving mode is defined and implemented so deprecated packages or releases produce explicit solver errors instead of being silently selected.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- haskell
- Domain
- build-system, tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100