[ghc-steering-committee] Language Extension Policy – Round 2
Simon Marlow
marlowsd at gmail.com
Thu Apr 27 07:34:43 UTC 2023
This is interesting. I find myself answering "no" to "do you believe this
use-case is best served by extensions" for almost all use-cases, the only
exception being for experimental/unstable language features and language
features with a performance impact. Everything else can be served by either
GHC20xx or warnings. Yes that means being less fine-grained in some cases,
but that might be a good tradeoff between flexibility for users and
complexity in the compiler - fewer combinations of extensions to consider
would simplify things and leave less room for bugs.
Answers below:
On Wed, 19 Apr 2023 at 13:21, Arnaud Spiwack <arnaud.spiwack at tweag.io>
wrote:
>
> X.1: do you believe that this a use-case that GHC should support? (yes/no)
> X.2: regardless of your answer in X.1, if GHC supports this use-case,
> do you believe that this use-case is best served by extensions. (yes/no)
> X.2.Y: Do you believe that GHC20xx helps support this use-case (yes/no)
> X.2.N: if you've answered “no” to X.2: what mechanism would you rather
> see supporting this use-case (free form)
>
> The 13 use-cases are
>
> 1. Gain early access to experimental or unstable features
> (e.g. because they're working on a research prototype, or because
> the feature is valuable enough to them to forgo some stability)
>
1. yes
2. yes
2.Y no
> 2. Restrict the use of more complex features (e.g. for easier
> onboarding of new developers or as educators to teach a
> well-delimited subset of the language)
>
1. yes
2. no
2.N warnings, -Werror=feature
> 3. Restrict the use of novel features since the last established
> standard/report.
>
1. yes
2. no
2.N -XHaskell2010 and/or warnings
> 4. Restrict the use to features that they don't like (e.g. controversial
> features like RecordWildcard or ImplicitParameters)
>
1. yes
2. no
2.N warnings
> 5. Name/refer to a particular feature when talking/writing/searching
> about it.
>
1. yes
2. no - we don't need to support extensions to be able to name language
features.
2.N continue to use the names we have now, but without supporting -XFoo for
all extensions
> 6. Restrict the use of features which require support from outside
> the Haskell ecosystem that can't be taken for granted (I think this
> concerns only UnicodeSyntax)
>
1. yes
2. no
2.N warnings
> 7. As library authors, to signal which features the library actually
> uses, hence which version of GHC the library is compatible with.
>
1. yes
2. no
2.N GHC20xx
> 8. Retain access to deprecated features to smooth out migration over
> the deprecation period.
>
1. yes
2.no
2.N GHC20xx
> 9. Retain access to deprecated features indefinitely.
>
1. no
> 10. Change the default behaviour of (part of) the language
> (e.g. StrictData, I think some of the dependent Haskell work falls
> in this category, but I can't pinpoint an example)
>
1. yes
2. no
2.N GHC20xx
> 11. Extend the language in a way that is not backward compatible
> (e.g. OverloadedList, probably some dependent Haskell things too)
>
1. yes
2. no
2.N GHC20xx
> 12. Enable features whose mere presence has a performance impact
> (e.g. Template Haskell, and that's probably it)
>
1. yes
2. yes
2.Y no
> 13. CPP (this one is very unique isn't it?)
>
1. yes
2. no
2.N it should probably be a flag
> _______________________________________________
> ghc-steering-committee mailing list
> ghc-steering-committee at haskell.org
> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-steering-committee/attachments/20230427/8f7ab546/attachment-0001.html>
More information about the ghc-steering-committee
mailing list