-
Notifications
You must be signed in to change notification settings - Fork 2
Description
Where should we keep a list of all the things that would be nice to have? Is this a good place?
None of these are easy to implement, but the research has at least (with the exception of the last) already been done.
Dealing with many versions
-
Deprecated reexports (individual items and entire modules) https://gitlab.haskell.org/ghc/ghc/-/issues/4879
-
CPP checking multiple combinations https://www.youtube.com/watch?v=YupkE1vsZ4o, https://www.cs.cmu.edu/~ckaestne/pdf/FOSD10-typechef.pdf, https://web.engr.oregonstate.edu/~erwig/CC/index.html (Rust also interested https://github.com/rust-lang/rfcs/blob/master/text/1868-portability-lint.md)
-
Enriched hi files preserving configuration conditionality info. Can align with CPP variable "model" to make sure downstream packages abide by upstream CPP, wherever it leaks into the interface.
-
Extract backpack "signatures" from regular modules. Good to avoid relying on hi files too much.
-
Compare two signatures / hi files, lint PVP violations. (
cabal-diffon steroids.) -
Leverage all the above to check cabal metadata doing an "all combinations" type check.
-
Leverage all of the above to CI plausible max bound increases when new versions are released, if CI passes notify maintainers/trustees.
-
Less need for breakage in the first place
- https://gitlab.haskell.org/ghc/ghc/-/issues/19507 Permit bundling pattern synonyms with type synonyms
Avoiding churn in the first place
-
Private dependencies, to make version solving more forgiving Private dependencies haskell/cabal#4035
-
Better exporting https://gitlab.haskell.org/ghc/ghc/-/issues/19507 and other issues.
-
Make Orphans OK so dependencies can be fewer (and thus downstream breakage less cascading) https://gitlab.haskell.org/ghc/ghc/-/wikis/Rehabilitating-Orphans-with-Order-theory