haskell / haskell/core-libraries-committee

Stable alternatives for widely used GHC.* APIs

Open
#407 4 comments 0 reactions 0 assignees View on GitHub
awaits-proposal
Dominant language
Haskell
Stars
109
Forks
20
PR merge metrics
No merged PRs in 30d

Description

@TeofilC identified the following GHC.* modules which are slated for deprecated as widely used so we should find or design alternatives to them:

- GHC.Exception -- 42 uses on Hackage
- GHC.IO.Buffer -- 22 uses on Hackage
- GHC.IO.Device -- 39 uses on Hackage
- GHC.IO.Encoding -- 132 uses on Hackage
- GHC.IO.Exception -- 287 uses on Hackage

How should we go about this? We could methodically go through all these uses and try to find common functionality, then design APIs which are as small as possible which can still efficiently provide that functionality. Perhaps the first step then is to get a full list. I could find some on Serokell's Hackage search tool, but how did you originally find these uses @TeofilC?

I do worry about how we can be certain that the alternative APIs are complete. We could make patches for each affected package. That sounds like a lot of work but it may be doable within a reasonable time frame. Honestly, I do enjoy refactoring things like this.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by building the full list of Hackage uses for GHC.Exception, GHC.IO.Buffer, GHC.IO.Device, GHC.IO.Encoding, and GHC.IO.Exception, using Serokell's Hackage search tool or the discovery method mentioned in the issue. Compare those usages to identify common functionality and assess whether stable alternatives are complete; done requires agreed replacement APIs and, if pursued, patches for affected packages.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
tooling
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.