Skip to content

Should we make the happy-* packages public library components of happy? #288

Closed
@sgraf812

Description

@sgraf812

Cabal 3.0 introduced the library:visibility field.
Should we use it to define the single-library-component happy-* packages as "sublibraries"? Depending on such a library is exemplified here: haskell/cabal#9480 (comment). For us it would lead to names such as happy:tabular.
Defining such public sublibraries is exemplified here: https://github.com/BlockScope/plugins-for-blobs/blob/develop/plugins-for-blobs.cabal. Note the visibility: public fields.

Pros:

  • No separate .cabal file, change log, package description, supported versions, etc. for each package to maintain. I think this is huge, because maintainer time is scarce.

Cons:

  • Needs Cabal 3.0 (released in 2019).

Given that

  1. we already decided to lock into the GHC ecosystem
  2. cabal-install is easily buildable with older GHCs
  3. older happy versions will continue to build with ancient GHCs and accept the same .y-file syntax,

I don't think requiring Cabal 3.0 is much of a drawback. On the other hand I do see the real costs associated with release management if we stick to one executable package and 5 library packages, all of which need to keep their versions in sync etc.

This decision has potential to lock us in for quite a long time, as happy-tabular is a library name (technically a package name which implicitly denotes the default library) than happy:tabular. I would like to have the Go from @int-index, @Ericson2314 and @andreasabel on this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions