Meeting URL: https://meet.jit.si/StableHaskellMeetBiWeekly
Previous meeting notes
-
John Ericson's
base
reform proposalbase
contains lots of stuff; merit in separating these- Basic types like Char
- I/O library stuff...
- ...some of which is platform specific
- Parts of GHC internals (if you are going to depend on these, you should do so consciously; see CLC issue #105.
- Danger of revolution: high risk of breaking stuff
- Try to make incremental progress as a way to de-risk
- e.g. keep
base
as a wrapper that re-exports a number of smaller, more focused libraries - Will incur costs as we design what goes where -- and may change our minds over time.
- It would help to have a mechanical check that we have not accidentally change the API.
- Why separate packages rather than just exposed/not-exposed? Answer: because people really do sometimes want to depend on GHC-specific internals.
- Thought: Enhance cabal check to allow a pvp check as a way to mechanically enforce stability with this change.
- SPJ asks: any actions here?
- Explore funding the cabal enhancement?
- Chris will post a summary of this converation to the thread.
- HF technical proposals process is the driving force here.
-
The response thread to the GHC medium-term priorities
- Release cadence /= breakage cadence
- SPJ wonders: what % of the breakage is due to
- library changes (addressable by head.hackage mechanism)
- incompatible language changes, not protected by a language pragma.
- tools lagging the compiler version We could really do with more specifics, precision, war stories.
- David: often you transitively depend on something that is somehow closely coupled to GHC internals. [SPJ: it's hard to see how to avoid that.]
- Key goal: being able to write code that works on old and new (preferably without CPP, but even with CPP is bearable).
- A serious cost of a faster release cadence is maintaining and applying backports.
- A "release" means a curated branch, which the GHC team is committed to
- proactively testing on multiple architectures, and testing against multiple libraries across Hackage.
- bug-fixing, back-porting bug-fixes from HEAD, and re-releasing
- GHC team simply cannot do a faster cadence of releases (minor releases come out every 2 months anyway)
- If you want a fast cadence, use nightly builds.
- If the nightly builds don't do the job for you, let's talk about would make them better for you.
- A "release" means a curated branch, which the GHC team is committed to
- Moritz Angermann explains in detail the problems that breaking changes cause for industrial users:
-
Small breaking changes: are some breaking changes too small to matter?
- With reference to
stToIo
- With reference to
-
David will talk to Julian about ghcup and nightlies. It should be easy to get a nightly-build GHC onto your machine.
-
GHC.X.Hackage has a role to play here; if a new release of GHC comes with a Hackage overlay for a signficant fraction (by usage) of Hackage, that would make the painful-upgrade problem way way easier.
-
GHC API discussed previously
- Previously holding the token: David
- Moving, but slowly
-
What is the stable API of base
- Preliminary result of discussions: All of base is a stable API and will use CLC to make changes (that might consist of extracting guts from
base
- no complete conclusion is found, but a crowdsourced effort is premature)
- Preliminary result of discussions: All of base is a stable API and will use CLC to make changes (that might consist of extracting guts from
-
Update on Language/compiler features to help stability, specifically #4879
- Previously holding the token: David + Simon
-
Bulletin discussed previously
- Previously holding the token: Chris
-
GHC warning policy document as discussed previously
- Previously holding the token: Chris
-
Creating and maintaining a set of hlint rules to promote stability
- Previously holding the token: Trevis
- Opened issue asking if we can write rules for typeclasses.