wiki:Status/SLPJ-Tickets

Version 205 (modified by daniel.is.fischer, 3 years ago) (diff)

Corrected ticket number for slow x2

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

New typechecker things to fix (with Dimitrios)

  • #5321: slow constraint solving
  • #4347: rigid type signatures for impredicativity
  • #4310: deferred equalities and forall types (needs Brent's work)
  • #5320: overlap delicacy

Arity

  • #3924: weak arity leads to weak strictness
  • #3698: arity analysis again
  • #3697: class method selectors
  • #3034: divInt and arity
  • #3627: profiling and eta expansion
  • #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

Inlining

  • #4833: finding the right loop breaker
  • #3781, #3755: inlining for local functions: discount for scrutinising free vars
  • #3765: CONLIKE things and case expressions (need two unfoldings)
  • #3073 and Commentary/Compiler/DesugaringInstances: better desugaring for instances
  • #2396: default class method not inlined
  • #2078: INLINing improvement; ask Christian.Maeder@… to see if it improves CASL
  • #2840: top level unlifted string literals
  • #3123: feature request: recursive inlining and peeling

New code generator

  • New code generator tickets
  • #4065: forward propagation
  • #3132: fix cgCase of PrimAlts
  • #3458, #1216: undesirable allocation of something that is nearly a let-no-escape
  • #3462: allocate large objects with allocateLocal()
  • #2253: NCG could do better. Look at this when John D’s ncg is working
  • #783: SRTs getting big
  • #2289: cheap check at start of case alternatives
  • #2731: avoiding unnecessary evaluation when unpacking constructors
  • #3940: propagate fix

Optimiser

  • #5262: seq magic
  • #605: strict/unboxed enumerations
  • #2607: space leak: inlining defeats selector thunk optimisation
  • #4470: merge identical counters
  • #2439: Strict dictionaries
  • #3138: returning a known constructor (Lennart's cmonad package)
  • #2988: better float-in
  • #2940: do CSE after CorePrep
  • #2132: Optimise nested comparisons: if you know x>0 then you know x>=1 etc. Maybe a special pass that knows about arithmetic?
  • #149: float-out/CSE
  • #2289, #2387, #1600: nested CPR analysis
  • #2255, #3767, #2642, #3831, #4941: Improve SpecConstr for free variables, and for join points.
  • #2374: SAT and MutableByteArray Max?
  • #5363: profiling worsens space behaviour

Compiler performance

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

Tiresome arithmetic things

  • #5237: x squared is too slow
  • #2281: properFraction implemented with modf primitive?
  • #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

GHCi

  • #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

New constraint simplifier

Types and type inference

  • #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: Newtype deriving and type families type soundness problem
  • #1897: Ambiguity: don't infer a type that can't be checked if the type is given as a signature (this one is important). See SPJ's mailbox: Haskell type system/Ambiguity.
  • #2641: revise what -XExtendedDefaultRules does
  • #3592: deep skolemisation
  • #2357: Implement the Haskell Prime proposal for polymorphic pattern bindings

Better error messages

  • #4921: ambiguous type variables
  • #1330: another bad error message (Church2)
  • #2648: Report out of date interface files robustly
  • #2588: Better error message about ‘forall’
  • #2360: Better location info in occurs-check message.
  • #1928: Confusing type error message (Claus makes suggestions)
  • #2534: Another confusing type error message
  • #2900: Improve decomposition of function types

Template Haskell

Features

  • #5429: docase and joinads
  • #5391: better deriving Typeable
  • #5248: Infer context in type signatures
  • #5144: pattern synonyms
  • #5073: blockST and friends
  • #788, #2895: Class aliases
  • #2595: record updates
  • #4823: strength reduction for array indexing
  • #4479: type directed name resolution (TDNR)
  • #4426: simpler rule for implicit quantification
  • #4372: better quasiquotes
  • #4359: lambda case
  • #4148: improvements to mdo syntax
  • #595: pattern-match overlap checking
  • #3843: Add plugins
  • #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

  • #2284: the state-hack "optimisation" causes much re-computation
  • #3872,#5400: loop in simplifier inliner
  • #4005: generational GC pathalogical case
  • #1349: strict function argument types