Skip to content
0:00 / 0:00

#ghc#cabal#hackage

The GHC Packaging Ecosystem - Duncan Coutts - 2023 GHC Contributor's Workshop

The Haskell Foundation

1.3K subscribers • 2 videos on Hallway

YouTube
  • Recommended by 2 people: 2 in engineering communities.
  • Presented by Duncan Coutts

Advanced. Deep dive for people who know the field.

961 views3 years ago2 recommendations

Systems programmingTools and practiceBuild systems and packagingCompilers and interpreters

Duncan Coutts details the history, design constraints, and relationship between GHC, Cabal, Hackage, and compiled libraries on disk.

This talk provides a detailed description of the relationship between GHC and Haskell packages, including the history of packaging and distribution of Haskell libraries, a description of the design constraints that led to the current implementation, the relationship between Hackage source packages and compiled libraries on disk, and the Cabal library. This talk was presented at the 2023 GHC Contributor's Workshop in Rapperswil, Switzerland, colocated with Zurihac. The workshop was arranged by the Haskell Foundation, OST Eastern Switzerland University of Applied Sciences, and the GHC development team. Duncan has been using Haskell since the end of the last century, founded a Haskell consultancy company fifteen years ago, and has had a hand in various Haskell libraries and tools over the years.

Why it's here

2 people recommend this

What people say. Recommended for its detailed explanation of Haskell's packaging model and the design of Cabal.

u/fridofridoin r/haskell • Recommends

The GHC Packaging Ecosystem - Duncan Coutts - 2023 GHC Contributor's Workshop

u/ysangkokin r/haskell • Recommends

On “Lies in the Cabal docs”

Did you see Duncan's Cabal talk from the GHC Contributor's Workshop? I think it explains some of the overloading of the 'package' concept. > I can't give you a Haskell library package, not even in source form, and have it be usable in your environment! You seem to have a particular interpretation of 'usable' that requires that storage lookup is somehow disambiguated. But why? All the packaging systems of the world at least require DNS to work. So if that is taken for granted, why can't we also be fine with 'package lookup by name' to be abstracted away? How is a `cabal.project` file specifying the exact location if the package different from DNS specifying how to connect to Github or Sou…