wiki:Status/SLPJ-Tickets

Version 358 (modified by simonpj, 10 months ago) (diff)

--

This page collects tickets that Simon PJ is interested in, so that he remembers them

Type inference

  • #7259: Eta-expansion of products in System FC
  • #7558: Terrible error message in inaccessible code
  • #5682: Parsing of pomoted kinds
  • #6022: over-general types are inferred
  • #5642: slow constraint solving
  • #7346, #7878: Pedro's generics and deriving
  • #7828, #5267, #5777, #5333, #344: bugs in arrows
  • #7204: a class to controll FFI marshalling; and newtype deriving for classes with ATs
  • #7862: overlap beween givens and instances
  • #7643: dark corner of sub-kinding and unsafeCoerce#

Template Haskell

See also TemplateHaskell

  • #1475: allow splicing of import declarations (5 in cc list)
  • #4364: cycle in type declarations
  • #4429: reinerp work on newName and export reorganisation
  • #7021: make TH catch up with constraint kinds
  • #7484: TH allows you to build invalid names

Demand analysis and CSE

Optimisation

  • #7561: profiled program runs faster than un-profiled one
  • #7378: (a) identical-alts when the RHSs are bigger; (b) nested comparisions (cf #2132)
  • #7511: inlining can make programs allocate MORE!!
  • #7307: low hanging fruit for shrinking code size for string constants and top-level indirections
  • #7206, #7309: avoid excessive sharing of enumerations
  • #3872, #5400, #5448, #5722, #7057, #7369: contravariant data type loop in simplifier inliner
  • #5954: performance regression. Duplication of primops?
  • #6047: GHC retains unnecessary binding
  • #6135: unboxed booleans
  • #2439: Strict dictionaries
  • #5916: runST isn't free
  • #5522, #6092: liberate-case runs out of memory
  • #3990, #7647: UNPACK for data families, and with phantom types, needs data con wrapper refactoring
  • #5928: running Specialise more than once

Compile time

  • #7898: SpecConstr blowup
  • #7450, #7258: deriving Read generates gigantic code. Better now, but still not linear.
  • #7428: Non-linear compile time: addFingerprint??

Features

  • #5972: option to suppress record selectors

Arity

  • #7542: optimisation of eta expansion/reduction
  • #5809: arity analysis could be better
  • #3924: weak arity leads to weak strictness
  • #3698: arity analysis again
  • #3697: class method selectors
  • #3034: divInt and arity
  • #2915: arity too small
  • #2823: another arity expansion bug (related to dictionaries)
  • #2440: bad code with type families; I believe this is also arity-related
  • #1547: profiling and arity
  • #5587, #7364: eta-expansion can imcrease termination. These tickets are closed because we don't know how to fix them properly, not becuase they are really fixed.

Inlining

New code generator

  • Summary ticket: #4258, and wiki page
  • #3462: allocate large objects with allocateLocal()
  • #2289: cheap check at start of case alternatives
  • #2731: avoiding unnecessary evaluation when unpacking constructors

Optimiser

  • #5059: specialise on value arguments
  • #5974: casts, RULES, and parametricity
  • #5262: seq magic
  • #605: strict/unboxed enumerations
  • #2607: space leak: inlining defeats selector thunk optimisation
  • #4470: merge identical counters
  • #2988: better float-in
  • #2255, #3767, #2642, #3831, #4941, #2598: Improve SpecConstr in various ways, including for free variables, and for join points.
  • #2374: SAT and MutableByteArray Max?
  • #7080: inconsistent treatment of RULES and SPECIALISE
  • #876: make length into a good consumer. Perhaps using foldl?

Compiler performance

  • #2346: desugaring let-bindings
  • Use wildcards for dead variables in interface files.

Better numerics

  • #7858: abs on negative zero
  • #5615: poor code for div with powers of 2
  • #4101: constant folding for (**)
  • #3676: realToFrac conversions
  • #3744: comparisons against minBound and maxBound are not optimised away
  • #3065: quot is sub-optimal
  • #2269: Word type to Double or Float conversions
  • #3070: NaNs and divide-by-zero

GHCi

  • #7586: :kind on a name should perhaps behave like :info
  • #4017: unhelpful GHCi message


Outright bugs

  • #2182: GHCi session retains instance after removing a module from scope
  • #1241: Lifting the Coverage Condition for functional dependencies isn’t the Right Thing Manuel

Type inference (longer term)

Types and type inference

  • #6065: GHC suggests a type signature that it then rejects
  • #5320, #7296: overlap delicacy
  • #4347, #4295, #7264: impredicativity
  • #1965: make existentials have a really cheap implementation
  • #5224: make it cheaper to check for inconsistent type family instances
  • #4466, #5296: explicit type application
  • #3714: distinguish type parameters from indices
  • #4259: overlapping type family instances
  • #3490: superclasses and ambiguity
  • #3632: better update for records with existentials
  • #1496, #4846, #7148, #7269: Newtype deriving and type families type soundness problem
  • #2641: revise what -XExtendedDefaultRules does

Better error messages

  • #7856: function type decomposed a bit too eagerly => worse error
  • #4921: ambiguous type variables
  • #1330: another bad error message (Church2)
  • #2648: Report out of date interface files robustly
  • #1928: Confusing type error message (Claus makes suggestions)

Template Haskell

Features

  • #5462: deriving for arbitrary classes
  • #6024: allow defining a kind without also getting the corresponding type
  • #5927: Constraints with universal quantification
  • #5630: External core needs love
  • #5429: docase and joinads
  • #5391: better deriving Typeable
  • #5248: Infer context in type signatures
  • #5144: pattern synonyms
  • #5073: blockST and friends
  • #2895: Class aliases
  • #2595: record updates
  • #4823: strength reduction for array indexing
  • #4479: type directed name resolution (TDNR)
  • #4426: simpler rule for implicit quantification
  • #595, #5728, #3927, #5724, #5762, #4139, #6124, #7669, #322: pattern-match overlap checking, including with GADTs
  • #3701: Implicitly declared existentials: a class as a type
  • #3217: better flag handling for GHCi
  • #2600, #2110: Bind type variables and constraints in RULES
  • #1930: Infix type operators: a+b.
  • #960: Generate local info for ‘undefined’. Implicit location parameters in general
  • #2135: Warn when exporting a function whose type mentions a type constructor defined locally but not itself exported
  • #2526: Add -fwarn-missing-export-signatures
  • #2119: Explicitly importing deprecated symbols should generate deprecation warnings
  • #2207: Load interfaces for GHC.* even without -O
  • #1231: Better deprecations

Not sure what to do about these

  • #7897: make the fingerprint in a TypeRep be a proper fingerprint, including the type definition all the way down (see Recompilation avoidance)
  • #2284, #1168, #7561: the state-hack "optimisation" causes much re-computation
  • #4005: generational GC pathalogical case
  • #1349: strict function argument types