haskell / haskell/cabal

Cabal exact printer in stages? (and other grand design questions)

Open
#11,227 46 comments 4 reactions 0 assignees View on GitHub
exact-print type: RFC
Dominant language
Haskell
Stars
1.7k
Forks
750
Avg merge
4d 3h
Merged PRs (30d)
28

Description

_Previous take: https://github.com/haskell/cabal/issues/7544_

---

Hello 👋🏽
Good news!

I've gotten commitment from Haskell Foundation to start working on the [exact printer](https://github.com/haskellfoundation/tech-proposals/blob/df4a374fcd7babae4b99eb6b2c33e3dea3f983ac/proposals/0000-cabal-exact-printer.md). @leana8959 has agreed to help, she'll do the most work and I'll support her when she gets stuck or lost.

Recently I've encountered a better idea when working on HIE files then the timeline described in the proposal.
We can split up the exact print work into smaller PR's, which should make it easier to review them, for example:

+ Add comment parsing support (without printing, just store it in the tree)
+ Refactor common stanzas to be supported by a generic package description, instead of being merged and "forgotten".

If those features could be added independently, the exact printer PR itself no longer has to modify the parser, and it no longer has to do major refactors, so it becomes a lot smaller!
Furthermore, these PR's on their own will make it easier to study performance impact.

Do the maintainers think these two features are useful independently of the exact printer?
Or do you think it's preferable to make one big, exact print PR?

Contributor guide

Open the contributing guide

Research direction

Start by reading the linked exact-printer proposal and the previous Cabal issue. Review the discussion about comment parsing, generic package descriptions, HIE files, and whether these should be separate changes. The issue is ready for implementation only once maintainers decide between staged PRs and one larger exact-printer change.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
build-system
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.