-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Formally deprecate modules informally marked unstable in #146 #299
Comments
I do not believe that we should be giving "use
We want to expose these declarations in such a way that (1), (2), and (3) are both conveniently accessible to users and readily assigned semantically-meaningful version numbers. In my opinion this means that:
|
Just to fill in some context: The spreadsheet above was an initial study to assess what was currently in |
The modules which are not marked as ghc-internal should only be deprecated after their contents are available in a non ghc-internal location. Based on the discussion in the other proposal this seems like a oversight? Otherwise this seems sensible to me as written. |
Yes, users should be able to react to the deprecation warning. |
OK whew. I thought I might have been misreading it when I did my best attempt to guess what goes where :). But I guess not.
For Ben's (4), no --- some things are just completely internal/unstable and there need not be any other place to get them, But for the others 3 categories, yes, I agree! I have no idea what things are in which category; I just know they are |
For what it's worth, I don't see any harm with using a deprecation cycle for things in class (4); none of these deprecations are particularly urgent, as far as I can tell.
I'll try to come up with a concrete set of proposed changes to your list today. |
Oh I didn't mean no deprecation cycle; I the CLC still wants one. I just mean that the message rightly would say "Use
Great! I put it in a gist https://gist.github.com/Ericson2314/58ddea784f19705ef79651c0ad00141c in case that is useful for you :) |
I would strongly recommend to start with something as limited and uncontroversial as possible; we can always deprecate more modules in subsequent proposals. There is no reason to keep the proposal stalled until someone figures out the definitive list of modules to deprecate. |
@Bodigrim I'll gladly chop down my table, but I don't know what to chop. I don't know which things are controversial. I am not up to date with the contents of individual deprecations, nor do I particular want to be, I just want to see the process move forward. |
No one knows upfront what will happen to be perceived as controversial, even my reading of the room is often off. As a suggestion, the first table above seems most uncontroversial to me. It's a modest step, but a step forward nevertheless. |
@Bodigrim the big first table? |
@Ericson2314 yes. |
@Bodigrim OK I updated it (and the gist I linked before) |
Background
In #146 a number of modules (based on @bgamari's spreadsheet were documented as unstable.
GHC-internal modules in
base
#146 (comment) has the exact list of modules.https://gitlab.haskell.org/ghc/ghc/-/merge_requests/10422 is the implementation PR
However, these modules were not formally deprecated. I am not sure why this didn't happen.
In #295, I am proposing how to eventually remove them entirely, but there is unlikely to be consensus on how to do this imminently.
@Bodigrim suggested
@AndreasPK likewise suggests a first step of
I am therefore seeing consensus across CLC members and GHC devs that this is a good first step. Great! let's do it.
Proposal
Deprecate these modules. (Some things in #146 are already deprecated, and thus not included below.)
GHC.Arr
array
package`GHC.ArrayArray
GHC.Exts
bad suggestion because we want to get rid of that module too, but its what the docs say todayGHC.Conc.IO
GHC.Conc
, orghc-internal
for any unstable bits not inGHC.Conc
GHC.Encoding.UTF8
text
GHC.Exception
Control.Exception
, orghc-internals
for anything not in thereGHC.Exception.Type
GHC.Exception
GHC.Fingerprint.Type
GHC.Fingerprint
. If it is deprecated as per below, inline those instructions.GHC.InfoProv
ghc-internal
GHC.IO.Buffer
ghc-internal
GHC.IO.Device
ghc-internal
GHC.IO.Encoding
ghc-internal
GHC.IO.Exception
ghc-internal
GHC.IO.Handle.Text
ghc-internal
GHC.Stack.Types
GHC.Stack
GHC.TopHandler
GHC.Conc
orghc-internal
GHC.Event.TimeOut
ghc-internal
GHC.Float.RealFracMethods
ghc-internal
GHC.GHCi
ghc-internal
GHC.GHCi.Helpers
ghc-internal
GHC.IO.Handle.Internals
GHC.IO.Handle
orghc-internal
GHC.IO.Handle.Types
GHC.IO.Handle
orghc-internal
GHC.IO.SubSystem
ghc-internal
GHC.IOPort
ghc-internal
System.Posix.Internals
ghc-internal
Appendix: Excluded deprecations
These modules were additionally recommended by @bgamari but not marked in #146.
I see no reason why not to deprecate them too, but I am not proposing to do so yet, at @Bodigrim's suggestion.
GHC.Bits
Data.Bits
GHC.Char
Data.Char
, or regular==
and/==
fromPrelude
GHC.Fingerprint
Data.Typeable
orghc-internal
These modules were marked deprecated but it doesn't seem prudent to deprecate them at this time.
GHC.Conc
GHC.IO
GHC.RTS.Flags
GHC.Stats
ghc-experimental
, but can't do deprecrated module reexports yetGHC.ExecutionStack
ghc-experimental
, but can't do deprecrated module reexports yetThe text was updated successfully, but these errors were encountered: