#5526 (multiple _public_ libraries) is in, but there are still a few things to add and polish #### Visibility enforcement * [x] **Add a visibility field to sublibraries** :fire: :fire: :fire: :exclamation: :exclamation: :exclamation: * [x] add the field * [x] update ghc-pkg * [x] populate the field * [x] enforce the field: #5848 #### cabal-install integration * [x] Make the solver multilibs-aware #6039 * [x] Enforce visibility at the solver level #6047 #6836 * [x] Extend the compatibility to GHC<8.8 when using cabal-install #6836 * [ ] Handle installed packages * [ ] Update `cabal init` to take into account sublibraries when populating build-depends #### Tests * [x] Add tests * [x] positive (ghc>=8.8) (isssue #6409) * [x] negative (all ghcs) (done in #5848) #### Documentation * [x] Update changelog 4d2ca5255c859821cd34e6c52f626b6edc9610a3 * [x] #6362 Also update the cabal spec changelog, which I forgot * [x] #8364 Update the Cabal and cabal-install docs (can be adapted from [my post](https://fgaz.me/posts/2019-11-14-cabal-multiple-libraries/)) #### Bugfixes * [x] #6038 (cannot depend on public sublibrary when the package does not contain a main library too) * [ ] #8095 same but with `Setup.hs`/`Cabal` and installed packages * [ ] #7375 (same as #8095??) * [x] #5846 (boundless dependency fails to parse) * [x] #6083 (edge case with the old syntax) * [x] `mylib:{ } ^>= 42` syntax is accepted, though docs say it is not (#6083 related, makes sense to fix at the same time?) - fixedin 9b3686fb7c2bc1b7b9ea735d23f32cfe47c22353 * [x] #6281 (parse failure with mixins) * [ ] #6358 Reconfiguration avoidance not affected by library visibility change * [x] :fire: #7270 :fire: Cabal's simple solver may not pick up sublibraries unless --dependency is used? * [ ] Deprecate `lookupDependency` in favor of `lookupInternalDependency` and maybe a new `lookupPackageDependency` that looks up all libraries of a package #### Ecosystem changes * [ ] Make hackage render sublibraries too * [ ] haddock * [ ] cabal #5949 * [x] hackage https://github.com/haskell/hackage-server/issues/1119 * [ ] Nix https://github.com/NixOS/cabal2nix/issues/539
#5526 (multiple public libraries) is in, but there are still a few things to add and polish
Visibility enforcement
cabal-install integration
cabal initto take into account sublibraries when populating build-dependsTests
Documentation
Bugfixes
Setup.hs/Cabaland installed packagesmylib:{ } ^>= 42syntax is accepted, though docs say it is not (Cabal 3: in build-depends, package name gets treated as internal library name ("legacy" syntax) even when using the pkg:lib qualified syntax #6083 related, makes sense to fix at the same time?) - fixedin 9b3686flookupDependencyin favor oflookupInternalDependencyand maybe a newlookupPackageDependencythat looks up all libraries of a packageEcosystem changes