ABCDEFGHIJKLMNOPQRSTUVWXYZAAABAC
1
DescriptionStabilityNeg Stability
Included from
Excluded fromNotesImplied byImplies
2
AllowAmbiguousTypesAllow the user to write ambiguous types, and the type inference engine to infer them.TBC: Experimental?StableUsually better to use visible forall; unimplemented proposal to allow AMBIGUOUS pragmas instead
3
AlternativeLayoutRuleDeprecatedStableUndocumented https://gitlab.haskell.org/ghc/ghc/-/issues/11359
4
AlternativeLayoutRuleTransitional
DeprecatedStableUndocumented https://gitlab.haskell.org/ghc/ghc/-/issues/11359
5
ApplicativeDoEnable Applicative do-notation desugaringExperimentalStableProposed alternative ApplicativeComprehensions https://github.com/ghc-proposals/ghc-proposals/pull/526 and looks somewhat complex/buggy https://gitlab.haskell.org/ghc/ghc/-/issues/17768
6
ArrowsEnable arrow notation extensionExperimentalStableLongstanding bugs https://gitlab.haskell.org/ghc/ghc/-/issues/344
7
AutoDeriveTypeableDeprecated; now default. Automatically derive Typeable for all user-defined datatypesTBCDeprecatedAlwaysUndocumented. Cannot be disabled since GHC 8.2
8
BangPatternsEnable bang patterns.StableStableGHC2021
9
BinaryLiteralsEnable support for binary literals.StableStableGHC2021
10
BlockArgumentsAllow do blocks and other constructs as function arguments.StableStable
11
CApiFFIEnable the CAPI calling convention.StableStableCandidate for GHC2024?
12
ConstrainedClassMethodsEnable constrained class methods.StableStableGHC2021MultiParamTypeClasses
13
ConstraintKindsEnable a kind of constraints.StableStableGHC2021
14
CPPEnable the C preprocessor.StableStable
15
CUSKsEnable detection of complete user-supplied kind signatures.LegacyStableHaskell2010StandaloneKindSignatures is a better alternative
16
DataKindsEnable datatype promotion.StableStableGHC2024TypeData is a partial alternative; proposal under review to split out TypeLevelLiterals
17
DatatypeContextsAllow contexts on data types.LegacyStableHaskell2010Command-line flag emits a deprecation warning already, but part of Haskell2010, so cannot be removed for now
18
DeepSubsumptionEnable deep subsumptionLegacyStableHaskell98GHC2021For backwards compatibility with pre-simplified subsumption code
19
DefaultSignaturesEnable default signatures.StableStableRichard's proposal excludes from Stable2024
20
DeriveAnyClassEnable deriving for any class.StableStableRichard's proposal excludes from Stable2024
21
DeriveDataTypeableEnable deriving for the Data class.StableStableGHC2021Rename to DeriveData, since Typeable is now auto-derived?
22
DeriveFoldableEnable deriving for the Foldable class.StableStableGHC2021DeriveTraversable
23
DeriveFunctorEnable deriving for the Functor class.StableStableGHC2021DeriveTraversable
24
DeriveGenericEnable deriving for the Generic class.StableStableGHC2021
25
DeriveLiftEnable deriving for the Lift classStableStableGHC2021
26
DeriveTraversableEnable deriving for the Traversable class.StableStableGHC2021DeriveFunctor, DeriveFoldable
27
DerivingStrategiesEnables deriving strategies.StableStableGHC2024
28
DerivingViaEnable deriving instances via types of the same runtime representation.StableStableDerivingStrategies
29
DisambiguateRecordFieldsEnable record field disambiguation.StableStableGHC2024RecordWildCards
30
DoAndIfThenElseAllow unindented if-then-else inside do notationStableLegacyHaskell2010Undocumented but part of Haskell2010 and later, so probably best to keep it (https://gitlab.haskell.org/ghc/ghc/-/issues/18631#note_540744)
31
DoRecTBC: Deprecated?StableUndocumented, replaced by RecursiveDoRecursiveDo
32
DuplicateRecordFieldsAllow definition of record types with identically-named fields.TBC: Experimental?StableRichard's proposal includes in Stable2024
33
EmptyCaseAllow empty case alternatives.StableStableGHC2021
34
EmptyDataDeclsAllow definition of empty data types.StableStableGHC2021
35
EmptyDataDerivingAllow deriving instances of standard type classes for empty data types.StableStableGHC2021
36
ExistentialQuantificationAllow existentially quantified type variables in types.StableStableGHC2021
37
ExplicitForAllEnable explicit universal quantification.StableStableGHC2021ScopedTypeVariables, LiberalTypeSynonyms, RankNTypes, ExistentialQuantification
38
ExplicitNamespacesEnable using the keyword type to specify the namespace of entries in imports and exports (Explicit namespaces in import/export).TBC: Stable?StableGHC2024Proposals to add features (but backwards-compatible), still okay to be Stable?TypeOperators, TypeFamilies
39
ExtendedDefaultRulesUse GHCi's extended default rules in a normal module.StableStableOn by default in GHCi
40
ExtendedLiteralsAllows defining unboxed numeric primitive values through #Type suffixesTBC: Experimental?StableNew in GHC 9.8. Richard's proposal includes in Stable2024
41
FieldSelectorsControl visibility of field selector functions.StableTBCHaskell98Richard proposes using NoFieldSelectors by default
42
FlexibleContextsRemove some restrictions on class contextsStableStableGHC2021
43
FlexibleInstancesEnable flexible instances.StableStableGHC2021TypeSynonymInstances
44
ForeignFunctionInterfaceEnable foreign function interface.StableStableHaskell2010
45
FunctionalDependenciesEnable functional dependencies.TBC: Experimental?StableDark corners of FunDeps + MPTCs + overlapping instances should be Experimental because the semantics is not well-defined. But MPTCs are Stable, and overlapping instances are available without an extension, so that implies FunDeps need to be ExperimentalMultiParamTypeClasses
46
GADTsEnable generalised algebraic data types.StableStableGHC2024Not formally part of GHC2021, although GADTSyntax and ExistentialQuantification areGADTSyntax, MonoLocalBinds
47
GADTSyntaxEnable generalised algebraic data type syntax.StableStableGHC2021
48
GeneralisedNewtypeDerivingEnable newtype deriving.StableStableGHC2021
49
GHCForeignImportPrimEnable prim calling convention. Intended for internal use only.ExperimentalStableDocumentation states "This feature is not intended for use outside of the core libraries that come with GHC." Richard's proposal allows in Stable2024.
50
HexFloatLiteralsEnable support for hexadecimal floating point literals.StableStableGHC2021
51
ImplicitParamsEnable Implicit Parameters.StableStable
52
ImplicitPreludeDon't implicitly import Prelude.StableStableHaskell98(Negatively) RebindableSyntax
53
ImportQualifiedPostAllows the syntax import M qualifiedStableStableGHC2021
54
ImpredicativeTypesEnable impredicative types.ExperimentalStableRichard's proposal allows in Stable2024RankNTypes
55
IncoherentInstancesEnable incoherent instances.ExperimentalStableMostly replaced by INCOHERENT pragmas, but still needed for given/wanted incoherence and role annotations on classes. Should be split and only partly Deprecated. Richard's proposal allows in Stable2024.OverlappingInstances
56
InstanceSigsEnable instance signatures.StableStableGHC2021
57
InterruptibleFFIEnable interruptible FFI.StableStable
58
JavaScriptFFIExperimentalStable
Undocumented and doesn't do anything https://gitlab.haskell.org/ghc/ghc/-/issues/23940
InterruptibleFFI
59
KindSignaturesEnable kind signatures.StableStableGHC2021TypeFamilies, PolyKinds
60
LambdaCaseEnable lambda-case expressions.StableStableGHC2024
61
LexicalNegationUse whitespace to determine whether the minus sign stands for negation or subtraction.TBCStable
62
LiberalTypeSynonymsEnable liberalised type synonyms.StableStable
63
LinearTypesEnable linear types.ExperimentalStable
64
MagicHashAllow # as a postfix modifier on identifiers.StableStable
65
MonadComprehensionsEnable monad comprehensions.StableStable
66
MonoLocalBindsDo not generalise local bindings.StableLegacyGHC2024Not part of GHC2021 although ExistentialQuantification and GADTSyntax are. NoMonoLocalBinds is discouraged but remains Legacy due to widespread useTypeFamilies, GADTs
67
MonomorphismRestrictionDisable the monomorphism restriction.StableStableHaskell98Switched off in GHCi
68
MultiParamTypeClassesEnable multi parameter type classes.StableStableGHC2021FunctionalDependenciesConstrainedClassMethods
69
MultiWayIfEnable multi-way if-expressions.StableStable
70
NamedFieldPunsEnable record puns.StableStableGHC2021
71
NamedWildCardsEnable named wildcards.StableStableGHC2021Proposal to tweak design of wildcards, but part of GHC2021 so Stable
72
NegativeLiteralsEnable support for negative literals.TBC: Stable?StableIs this being replaced by LexicalNegation? Status unclear
73
NondecreasingIndentationAllow nested contexts to be at the same indentation level as its enclosing context.LegacyStableHaskell98Haskell2010Documentation not very clear about status. Used by H98 only. Error messages include "Suggested fix: Perhaps you intended to use NondecreasingIndentation" when perhaps it should not be suggested? Richard excludes from Stable2024
74
NPlusKPatternsEnable support for n+k patterns.LegacyStableHaskell98
75
NullaryTypeClassesDeprecatedStableDocumentation claims "Deprecated, does nothing. nullary (no parameter) type classes are now enabled using MultiParamTypeClasses." but actually it does still enable nullary type classes.
76
NumDecimalsEnable support for 'fractional' integer literals.StableStable
77
NumericUnderscoresEnable support for numeric underscores.StableStableGHC2021
78
OverlappingInstancesEnable overlapping instances.DeprecatedStableUse OVERLAP* pragmas instead
79
OverloadedLabelsEnable overloaded labels.StableStable
80
OverloadedListsEnable overloaded lists.StableStable
81
OverloadedRecordDotRecord '.' syntaxStableStable
82
OverloadedRecordUpdateRecord '.' syntax record updatesExperimentalStableChange to Experimental after implementation of https://github.com/ghc-proposals/ghc-proposals/pull/583
83
OverloadedStringsEnable overloaded string literals.StableStable
84
PackageImportsEnable package-qualified imports.TBC: Deprecated?StableUnclear if this should be Legacy or Deprecated; see https://gitlab.haskell.org/ghc/ghc/-/issues/25025 and https://gitlab.haskell.org/ghc/ghc/-/issues/24227
85
ParallelArraysDeprecatedStableUndocumented. Presumably a leftover of DPH. Only effect is enabling ParallelListComp. Enabled by base.ParallelListComp
86
ParallelListCompEnable parallel list comprehensions.StableStable
87
PartialTypeSignaturesEnable partial type signatures.StableStable
88
PatternGuardsEnable pattern guards.StableStableHaskell98
89
PatternSignaturesDeprecated synonym for ScopedTypeVariablesExperimentalStableChanges proposed https://github.com/ghc-proposals/ghc-proposals/pull/608ScopedTypeVariables
90
PatternSynonymsEnable pattern synonyms.StableStable
91
PolyKindsEnable kind polymorphism.StableStableGHC2021KindSignatures
92
PolymorphicComponentsDeprecatedStableUndocumented, synonym for RankNTypes
93
PostfixOperatorsEnable postfix operators.StableStableGHC2021
94
QualifiedDoEnable qualified do-notation desugaring.TBC: Experimental?Stable
95
QuantifiedConstraintsAllow forall quantifiers in constraints.TBC: Experimental?Stable
96
QuasiQuotesEnable quasiquotation.TBC: Stable?StableIdeas to change quasiquotes to support antiquotation
97
Rank2TypesEnable rank-2 types. Synonym for RankNTypes.DeprecatedStableRank 2 has type inference properties that rank N doesn't, but this doesn't actually enable rank-2 polymorphism only
98
RankNTypesEnable rank-N types.StableStableGHC2021ImpredicativeTypesExplicitForAll
99
RebindableSyntaxEmploy rebindable syntax.ExperimentalStableDocumentation is quite pessimistic about stability but is this justified since the rewrite to expand RebindableSyntax in the renamer? From https://gitlab.haskell.org/ghc/ghc/-/wikis/Rebindable-syntax it looks like there is still stabilisation work ongoing.NoImplicitPrelude
100
RecordPunsObsolete name for NamedFieldPunsDeprecatedStablehttps://gitlab.haskell.org/ghc/ghc/-/issues/2320NamedFieldPuns