haskell / haskell/cabal

Stricter solving preferences for deprecated packages and releases

Open
#10,143 1 comment 1 reaction 0 assignees View on GitHub
re: deprecated packages and versions re: user experience type: RFC
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.