Cabal meeting (2025-06-05)
Previous meeting wrap-up
- Even older meeting wrap-up: old PRs are closed, as discussed some time ago and communicated on the PRs themselves in advance. ~30 closed.
Current affairs
Review needed
Food for thought
- Phil would like to get "Override imported package version equalities" work finished. PR-9150 was my original quick attempt at this. I'm not sure that the method used there will be the one to go with but I would like to get import version overrides available soon.
Cabal meeting (2025-05-22)
Only 2 attendees (geekosaur and grayjay), so very abbreviated meeting and no action.
Previous meeting wrap-up
Current affairs
- Matt asked about a number of PRs of his going back a month or so that haven't been reviewed yet. Are we missing things in our review-needed checks?
Review needed
Food for thought
Cabal meeting (2025-05-08)
Previous meeting wrap-up
Current affairs
- How is our triaging? Are PRs and issues waiting for our input a long time? Maybe today we could look at these tickets, not the usual needs-review.
- from browsing a few dozen, it turns out we are reasonably switft reacting to PRs and issues.
- Is the traging group still active? Can we help them? Maybe today we could look at these tickets, not the usual needs-review.
- f-a will go through all old PR (< 2022) and add the tag
propose-closing
.
Review needed
Food for thought
Cabal meeting (2025-04-24)
Previous meeting wrap-up
- Opinions on #10900 were given. If you have more thoughts, chime in! (Added by f-a, shepherded by Javier.)
Current affairs
- any fresh regressions? any complaints about 3.14.2?
- nothing worrisome so far, it seems \o/
hie-bios
uses now cabal path
, will be shipped with the next HLS
release
- Should reduce HLS startup time noticeably
Review needed
Food for thought
- Artem: please, consider adding your favorite short/middle-term tickets to the "Considered for 3.16" milestone.
Cabal meeting (2025-04-10)
Previous meeting wrap-up
- 3.14.2 released
- do we want to keep tagging at the start, as in 3.14.2 or move it to where it was, much later?
- supposedly there was some mixup with candidates and the tags, but Mikolaj can't remember anything
- trade-offs
- let the next release manager decide –- the current order seem to favour a more tight, but more laborious release
- LTS
- Brandon and others since discussed on Matrix and the agreement seems to be to postpone LTS to when we can reliably predict which release will work for many future GHCs, etc., etc. to avoid the 3.12 case that can't work with GHC 9.12 (and a couple more other changes make it problematic) so can't be LTS despite our hopes (and lots of great work backporting)
- we also need to rethink how to do an LTS and how to plan for it, e.g., given the frequent GHC releases and the tight coupling of cabal and GHC
Current affairs
Review needed
Food for thought
Cabal meeting (2025-03-27)
Attending: Kristen, Mikolaj
Previous meeting wrap-up
-
Is it time for cabal 3.14.2 yet?
-
Is 3.12 (still) the Long-Term Support release?
-
Do we (still) need the preferred version feature? Please anybody who knows, write the reason in this ticket: https://github.com/haskell/hackage-server/issues/1345
- Mikolaj will ask around at Well-Typed
- Kristen will open a separate ticket at hackage-server
Current affairs
Review needed
Food for thought
Cabal meeting (2025-03-13)
Previous meeting wrap-up
Current affairs
- Is it time for cabal 3.14.2 yet?
- It would be great to first review and merge and backport and merge the backports for the regression fixes that are ready. But let's ask around how urgent the existing fixes are for the users.
- Is 3.12 (still) the Long-Term Support release? Will it be still supported? See its mention in https://github.com/haskell/cabal/pull/10367
- Do we (still) need the preferred version feature? Please anybody who knows, write the reason in this ticket: https://github.com/haskell/hackage-server/issues/1345
Review needed
Food for thought
Cabal meeting (2025-02-27)
Previous meeting wrap-up
- We should block the GitHub Merge button for everyone but Admins. (Some discussion in #10714)
- Mikolaj failed to enact the change due to technical problems. Ideas welcome. This is not critical, is it?
- Actually it seems Mikolaj succeeded, see the ticket.
Current affairs
- Regressions. How are we doing?
Review needed
Food for thought
Cabal meeting (2025-02-13)
Previous meeting wrap-up
Current affairs
Review needed
Food for thought
Cabal meeting (2025-01-30)
Previous meeting wrap-up
Current affairs
Review needed
Food for thought
- Hécate: should we start recording cabal performance in a principled way? E.g. running benchmarks (that we apparently have)
- Mikolaj: sure, let's experiment!
- it seems, annotating master branch tip commit in the pipeline that runs after a PR merge may be a good start (and maybe end)
Cabal meeting (2025-01-16)
Previous meeting wrap-up
Current affairs
- Should we block the GitHub Merge button for everyone but Admins? (Some discussion in #10714)
- Could we agree to this transition away from lukko #10724 so that it can be marked "PR welcome"? No objections, so let's mark it
PR-welcome
.
Review needed
- Could be good if #10644 is merged ahead of #8889 (mentioned in meeting of 2025-01-02) as it fixes one of the problems mentioned with #8889 as it stands.
Food for thought
Cabal meeting (2025-01-02)
Previous meeting wrap-up
Current affairs
-
3.14.1.1 release
- Hécate: At this point, RCs have to be uploaded on Hackage (step 4)
- Mikolaj: let's remember to make Cabal-hooks one of the candidates, as per the wiki release checklist! It's only needed once per major version, though, I guess with .1.0 suffix, normally.
- Hécate: I want to take the habit of releasing regularly 3.14 for patch versions.
- announcements? yes, when they're available in GHCup
-
Regressions in 3.14
- Initial configuration of programs does not use build-tool-depends #10692
- Julian reported a regression w.r.t. relative paths in the
packages
field of the project file. But no one was able to reproduce it so far…
- the
haddock
subcommand is confused with sublibraries https://github.com/haskell/cabal/issues/9586; likely not a regression
Review needed
Food for thought
Cabal meeting (2024-12-19)
Previous meeting wrap-up
Current affairs
- 3.14.1 release –- is any help still needed, or is an announcement up already?
Review needed
Cabal meeting (2024-12-05)
Previous meeting wrap-up
- (Brandon) Re home-grown lenses: intentional and expected. It's not like we want a dependency on
lens
or even microlens
, and van Laarhoven lenses themselves are quite simple and easily defined on the fly (and are upwards compatible if at some point we do decide to eat a huge dependency). (Both of those are Profunctor
lenses, but all we need are twanvl's Functor
lenses. That said, even in lens
the basic Lens
type only requires Functor
; it's more advanced optics that need Profunctor
.)
- the others we should seriously consider fixing, though: can we use a glob library rather than hacking up our own slow one? How about
optparse-applicative
? Etc. (Mikołaj mentions logging as another.)
- Mikolaj is convinced by the argument above not to change our deps policy (only boot packages) until there's a pressing need, which there doesn't seem to be right now.
- Conclusion: consider GSoC or HSoC exploratory projects
Current affairs
-
3.14.1.0: will there be a post mortem? was there an announcement?
- the release is not yet complete; it looks like Hécate is still waiting on access to
downloads.haskell.org
so the release artifacts can be uploaded, then the Hackage candidates will be released and the announcements sent out
- Hécate: I need to pester Gershom
-
(f-a) PRs with extensions (like this one), what do we do about them? Do we accept? (I am especially talking about ViewPatterns
). I am not fond of extensions because of GHC monoculture and most importantly readability for future contributors. We could also decide to be more liberal in — say — cabal-install
and more strict on Cabal-syntax
/Cabal
.
- action: see if we have style guides we can cannibalise for extensions. Report back (f-a).
- note that as of #9718
Cabal
is GHC-only because it requires DataKinds
and the Symbol
kind. In particular, MicroHS
has no type level functionality and isn't intended to, so this places it out of its reach.
- we've also had one request for
OverloadedRecordDot
that got blocked by our support window
- @9999years: This is a great example I think;
OverloadedRecordDot
solves a big ergonomic issue with structs (field names being globally unique makes them really challenging to use), but also OverloadedRecordDot
brings its own pain points. It's better than the alternatives, at least…
- also, pretty much every recent submission by GHC folks used every GHC extension they could get CI to accept, so we will have an uphill battle there
- @9999years: I think this is less of an uphill battle than we'd think — it's not too hard to get CI to reject new language extensions & require explicit approval to add new ones.
- @9999years: I would be more concerned about a GHC monoculture if there was a competing compiler we could hypothetically be breaking compatibility with. Also in absence of a Haskell2020 report it feels unfair to tell people to keep writing the language like it was preserved in amber 15 years ago.
- I think we should add all/most of the GHC2021/GHC2024 extensions to the
.cabal
files and add a CI check that forces new extensions to be documented or justified.
- we have one, as mentioned previously:
MicroHS
. notable: no type level programming. (It does support OverloadedRecordDot
and a number of other non-type-level extensions. But lack of support in ghc 8.10.7 is still a problem, because that's still in our support window.)
- Mikołaj says we need a style guide
-
#10605: Recent work on shallow clones for source-repository-package
broke some invocations with abbreviated or non-canonical refs, which cannot be git fetch
ed directly.
- Consensus is we should revert the change and do a proper deprecation cycle, but it's not clear how to best do that on top of recent work. I'm (@9999years) in favor of a roll-forward fix to restore the old behavior without directly reverting the commit responsible.
Review needed
- #10573:
cabal-validate
: Better output verbosity defaults. +91 -97 lines, pretty straightforward and makes ./validate.sh
nicer to use.
- #9367: Use response files for
ghc
invocations. +191 −29 lines, comes with tests. Needs review from @mpickering.
- approved, currently in cooldown
Food for thought
Cabal meeting (2024-11-21)
Previous meeting wrap-up
Current affairs
cabal format
deprecation is blocked by Gershom. What's our way forward?
- Breaking changes
- Reject PRs without a template?
- Fixup the PR template: https://github.com/haskell/cabal/issues/10575
- Maybe have a job that comments on PRs if they're missing tests or release notes
- Testing third-party codebases like cabal-doctest in CI?
- Start small: Define particular APIs that respect back-compat etc.
- Find which APIs people use in Cabal-the-library
- Git property tests in
long-tests
- We can move them later in the
cabal-validate
pipeline, lower the count of properties generated
- Lots of home-grown internal libraries in Cabal: lenses, globs, CLI parsing, etc. etc.
Review needed
-
#10524: Add dependency provenance information to solver errors
- Huge diff (+2450 −1254) but mostly mechanical changes, threading through
- Errors look like this now:
rejecting: memory-0.18.0 (constraint from cabal.project requires ==0.17.0)
- Next: Line numbers in error messages??? E.g.
cabal.project:12 requires ...
- Kristen:
- I was surprised by some of the affected fields.
- Would it be possible to splitit somewhat?
-
#9367: Use response files for GHC invocations
- Fixes builds with very large packages (thousands of modules) which hit command-line argument length limits
- Finally ready after an extensive process fixing
--keep-tmp-files
, pretty small diff
-
#10562: Tracking issue for cabal-validate
devx
- I have a bunch of ideas to discuss here :)
- #10573: Better verbosity settings for
cabal-validate
output (skip printing config and build plan by default, show build and test output by default)
Food for thought
Cabal meeting (2024-11-07)
Previous meeting wrap-up
Current affairs
-
New regression found in 3.12.1.0: #10504: active-repositories: none
fails if ~/.cache/cabal/packages/hackage.haskell.org
doesn't exist
- Can fix it with a partial revert of #8944 (see #10506). But it blows out the whole idea of #8944, so, naturally, the author of #8944, Javier, doesn't want it.
- Artem doesn't have a strong opinion but leaning towards reverting because it looks like a nasty regression. Submitted the revert in #10506.
- Arguably, there's a workaround – to create the index with
cabal update
once and then get back to building with active-repositories: none
.
- Mikolaj: let's revert and think later. There may be good reasons to bring back some of this functionality, but anything that breaks needs to be reverted until then IMHO.
-
CLC suggests adding Cabal(-syntax?) into the set of "core libraries", which, effectively, gives emergency powers to the CLC in case Cabal maintenance experience a catastrophic failure.
-
Set of backports for 3.14.1 that need approval:
Review needed
- #10525: Make
source-repository-repo:
in cabal.project
a parse failure
- This is a backwards compatibility break; previously this was a warning, meaning it could easily get buried under compilation output.
- A warning is really bad UX here – a
source-repository-repo
being completely ignored means you're getting a version of a dependency you don't expect, which usually causes compilation errors which obscure the warning at the top of the output!
- When I hit this, I usually recompile again instinctually so the compilation errors aren't buried under a ton of
[1 of 3] Compiling Control.Concurrent.CacheVar.Internal (...)
output, and on the second run the warning isn't emitted at all! This makes it very frustrating to diagnose.
- Are we OK with this backwards compatibility break? This effectively means that in the future we won't be able to add a field (like
build-depends:
) with the same name as a stanza (like source-repository-repo
). If it's not OK, I can turn it into a warning.
Food for thought
- Artem wonders if our approach to auto-formatting can be improved. Maybe we shouldn't require it from contributors' PRs and instead have another pre-step in the release checklist: to reformat before cutting a branch. We already added "update fourmolu before cutting the branch", so it's effectively the same thing, just the diff will be larger, probably.
- The context is another unhappy contributor (link).
- Brandon thinks: the Ci job, instead of whine, could fix the formatting by itself.
- After more discussion on Matrix, people seem to be leaning towards scrapping auto-formatting altogether.
Cabal meeting (24/10/2024)
Previous meeting wrap-up
Current affairs
-
cabal-install 3.14 release, pending
- #10459
validate.yml
sync
- #10468 new ghc 9.12 options
- do we care about
-pgmJSP
, -optJSP
?
- (Brandon) what do I need to do to mark options as affecting artifacts / the store?
- we still need to find answers to these questions ^^^; Rodrigo will investigate
- it seems, unless somebody argues otherwise, this PR does not block the release of cabal-install (but it would be good to have)
- one more option will be coming but won't affect this PR
- or will it? it (well, its inverse) might affect the store but shouldn't make a practical difference
- 4 PRs have the "needs-backport 3.14" label
- #10290: a regression from 3.12 with
--program-suffix
-
Hécate: We need to have a documented deprecation process which mandates a period of three releases. I would like to suggest this: https://github.com/haskell/cabal/wiki/Deprecation-Process. This will help manage our own work, but also the users' expectations, and thus create more trust in us.
- Mikołaj: We should have a TL;DR with actionable items at the beginning.
- Hécate: We have decided to try it out with the deprecation of
cabal format
Review needed
- #10448 ensure sdist test runs on the correct ghcs
Food for thought
Cabal meeting (10/10/2024)
Previous meeting wrap-up
- Cabal 3.14 release redux, deferred from last meeting
- except Hécate won't be around again, so must defer again until next meeting
- (Brandon) I just noticed we don't have tags for the 3.14 release?
- (Artem) we probably could push the tags at least (provided we know which commit was HEAD at the time): people always come complaining about tags when we miss them
- Hécate: is the correct commit 1eaa6af21 or a370e62cd?
- (Brandon) Moved tagging to before making the Hackage release. I think in the past we've not only forgotten to tag, but sometimes the Hackage release isn't the one we tagged?
Current affairs
- (Brandon) #10431 Mergify require all-green CI (merged)
- originally intended to replace having to list everything in branch protection
- due to a confluence of GitHub and Mergify warts/bugs?, will hopefully fix Mergify merging PRs before CI finishes (cf. #10424)
- it didn't, so now I am waiting on Mergify.io to get back to me
- I have opened a bug against Mergify for merging before CI completes; sadly, they have not provided me with even a bug number, much less a link
- There is also a GitHub branch protection bug, which I haven't yet reported: when checking a PR, all jobs with the same name must pass for branch protection to be satisfied, but when merging only the first needs to pass
- this means the docs skip hack is risky without #10431 or other insurance against premature merging due to branch protection incorrectly going green too early.
Review needed
-
(Brandon) #10421 Makefile
rule to do local checks
- This rounds out answering Matt Pickering's round-tripping complaint #10263
- Needs one more review
hlint
is currently divorced from the action used by CI. The latter has some peculiarities that make me wary of switching CI to use this check instead
- The only other check that might make sense to do locally is the doctests, for which there is a bitrotted
Makefile
rule that needs to be updated if we want to add it.
- Should we? Or is that more along the lines of running
validate.sh
locally?
-
(Brandon) #10429 debug LTS prereleases
- the LTS prerelease I added has been being skipped for some reason; this is intended to debug it and will be followed up hopefully by a PR to fix it
- Needs one more review before it can be merged and backported so debugging can begin
-
(Rebecca) #10428 add --tasty-arg
to validate.sh
- This lets you do e.g.
./validate.sh --tasty-arg --keep-tmp-files
, which makes debugging failed tests much easier.
-
(Rebecca) #10427 Add --pattern
arg to cabal-testsuite
- This lets you do
./validate.sh -s cli-suite -p HaddockKeepTmpsCustom
to filter tests in cabal-testsuite
with the same grammar you can use to filter Tasty
tests. Super helpful for running tests locally.
-
(Rebecca) #10393 haddock-project
: add CommonSetupFlags
- Pickering has some questions about this: "Why are
haddock-project
options defined in Cabal
library at all.. I understand nothing to do with you but it's a cabal-install
command. I am not sure this is the right direction of travel"
- This matches the other commands, so it's beyond my knowledge of Cabal.
- This PR is the last blocker for #10292 (expand and unify
--keep-temp-files
), which itself is blocking #9367 (use response files for GHC arguments).
- (Brandon) Lots of these are old, review and ask if they're still alive? action: Brandon will take care of this.
Food for thought
-
(Brandon) #10372 overnight testing for tier 2 platforms
- What tests should be run for "tier 2" platforms (including those we currently only build at release time with no testing, such as FreeBSD and i386-linux)?
- Relatedly, are there any tests that would be better run at merge time rather than every time a PR is pushed to?
-
(Brandon) I intend to start parting out the validate workflow into individual actions, partially in support of the above and partially to make the workflow easier to digest.
-
(Artem) re: meeting notes: how about using one gigantic log of these notes in one document? Pros:
- don't need to wait until a new one is created to add an item;
- easier to review past notes with just "Find in page";
- helps discoverability: e.g. we can put the link to The Log document in many places (Matrix chat description, Calendar event, etc.)
- (f-a) Consider this: max doc-length on HackMD is 100,000 lines.
This document is 66 lines, so we have ≃ 58 years, given a fortnight format.
Cabal meeting (26/09/2024)
Previous meeting wrap-up
Current affairs
- Cabal 3.14 release redux
- Congrats!
- Big discussion postponed to another meeting.
Review needed
- #10376 (Brandon) Makefile targets for
fix-whitespace
- Javier asks whether it takes care of CRLF, is this enabled in our repo?
- #10363 (Brandon) switch back to Apple AArch64 builder
- Mac jobs are only a couple minutes slower than Ubuntu!
- #10372 overnight job to validate and make prereleases for Intel Macs, since older ghcs won't work on AArch64 runners
- this needs some additional work, since it was relying on state from the
validate
job
- is it really a good idea to waste GitHub cycles on rebuilding stuff over and over? also applies to #10274
- GitHub is a business. Yes, it is owned by Microsoft, but Microsoft is not in the business of giving free CI/CD to open source projects, and in particular both it and its subunits are expected to turn profits. As such, GitHub must buy its own runners, which are paid for by its commercial customers; we, as free users, get to use spare cycles on their runners as long as we don't interfere with their paying customers. Wasting cycles therefore impacts us both directly (our jobs compete with each other for those spare cycles) and indirectly (they compete with other free users the same way). Therefore, wasting cycles on constantly rebuilding things is only going to cause us problems.
- #10361 (Brandon) continue CI when tests fail
- the
Validate post job
will catch these and fail the build afterward, I think
- this has some interaction with above note, but I think not much because it's only tests and is not really different from the successful case
- #10273 (9999years) show why configuring dependencies failed
- helps debug nix (and other build system?) failures
- #10320 (9999years) convert
validate.sh
to Haskell, add more flexible test filtering
- #10314 (9999years) improve assertion messages for
testConfigOptionComments
- #10292 (9999years) unify multiple
--keep-temp-files
options between subcommands
- #10366 (jasagredo) create temp files in temp directory (Higher relevance for Windows users)
Food for thought
- #10379
system-filepath
won't install with ghc 8.0
- (Brandon) I think we need an old-ghcs job that tests
custom-setup
Cabal meeting (12-09-2024)
Previous meeting wrap-up
Current affairs
Review needed
- 22 PRs have the "attention: needs-review" label
Food for thought
- Brandon: are we ok we blowing an ℕ just for a “for GHC”?
It would be weird for users jumping from 3.12 to 3.16.
It could be a point release (e.g. 3.13.1.0).
- Brandon notes that this way of working with GHC (GHC release -> Cabal-the-library release -> next GHC -> rushing cabal-install release) will leave us with little time to do anything else.
A release takes effort and time, so Mikołaj thinks this way of releasing should not be a common occourrence.
- May need to reopen 3.12 backports and get Windows fixes in so the
io-classes
workaround will go in
- 3.12 still considered LTS
Past Cabal meetings
Past meetings were kept in individual notes, with back-links to earlier meetings. The last such is here.