wiki:Status/SLPJ-Tickets

Version 128 (modified by simonpj, 4 years ago) (diff)

--

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

Performance

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
  • #2762: arity analysis would fix a space leak
  • #2902: an excellent example of the need for arity analysis
  • #2823: another arity expansion bug (related to dictionaries)
  • #2440: bad code with type families; I believe this is also arity-related
  • #2762: Arity analysis
  • #2831: error expressions and arities

Inlining

  • #3781: inlining for local functions: discount for scrutinising free vars
  • #3765: CONLIKE things and case expressions (need two unfoldings)
  • #3755: idea for "wrapper peeling" for join points.
  • #3586: inlining default methods
  • #3526: Inliner behaviour confusing (waiting on Bryan)
  • #3181: check unboxing regression fixed in Big INLINE Patch
  • #3073 and Commentary/Compiler/DesugaringInstances: better desugaring for instances
  • #2422: interaction of inlining and specialisation
  • #2396: default class method not inlined
  • #2354: NOINLINE pragma ignored
  • #2353: GHC inliner doesn't inline (with follow-up from Ross)
  • #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
  • #3969: better loops
  • #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
  • #3969: bad code for tight loop
  • #4090: failed getRegister in asm codegen

Other performance

  • #3138: returning a known constructor (Lennart's cmonad package)
  • #2988: better float-in
  • #2940: do CSE after CorePrep
  • #2670: record selectors behaving badly wrt optimisation
  • #1434: Slow conversion Double to Int
  • #2439: Strict dictionaries
  • #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
  • #2092: Possible quadratic-sized Eq instances. Does it really go quadratic, or does the join-point inlining machinery prevent it? Still to check: delicacy wrt case-of-case
  • #2255, #3767, #2642, #3831: Improve SpecConstr for free variables, and for join points.
  • #2374: SAT and MutableByteArray Max?
  • #3065: better code in quot/rem

Compiler performance

  • #1969: quadratic behaviour in the specialiser
  • #2346: desugaring let-bindings
  • Use wildcards for dead variables in interface files.

Tiresome arithmetic things

  • #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
  • #2271: floor, ceiling, round :: Double -> Int are awesomely slow
  • #1434: slow conversion Double to Int
  • #2270: gcd specialisation

GHCi

  • #4017: unhelpful GHCi message


Outright bugs

  • #1148, #2267, #1074, #2436, #1792, (related #3082): “Unused import” warnings should be generated from RdrNames
  • #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
  • #1954: Incorrect “defined but not used” msg

New constraint simplifier

  • #4178: unnecessary skolem escape check
  • #4174: bad error message
  • #4093: constraint simplifier loops
  • #2296: position info for fundep message
  • #2683: muttering about boxy type ASSERT
  • #4044, #4045: these were crashes something to do with type functions when building GHC
  • #3064: performance of constraint simplifier
  • TypeFunctionsStatus
  • #3927, #4139: overlap warnings with GADTs
  • #3851: type family expansion
  • #3826: equality reasoning failure
  • #3692: bogus error message with constraint after arrow
  • #3742: implication constraints and inference
  • #3731: recursive dictionaries
  • #3738: don't float MethodInsts out of INLINE right hand sides.
  • #2256: Incomplete inference due to lack of quantification over implication constraints. Also, see “BUG WARNING” in TcSimplify line 717 or thereabouts. fdPredsOfInsts is returning preds that mention quantified variables, which is quite wrong Manuel
  • #2239: Lack of improvement with type functions Manuel
  • #700: universals in pattern matching
  • #3696: better error message fr missing signature
  • #4175: better GHCi info for type-function instances

Types and type inference

  • #3490: superclasses and ambiguity
  • #3638: rules and rigidity for GADTs
  • #3632: better update for records with existentials
  • #1496: 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.
  • #2859: optimise coercion terms
  • #2641: revise what -XExtendedDefaultRules does
  • #1634: deep skolemisation; also this one #3592
  • #3018: be lazier about solving class instances
  • #3108: interaction of fundeps and type class solving
  • #2357: Implement the Haskell Prime proposal for polymorphic pattern bindings

Impredicativity

  • #2846: polymorphism leaking into constraints
  • #2193: Bad error message with impredicative types
  • #1330: another bad error message (Church2)

Better error messages

  • #3440: type families and GADT error message
  • #3169: better occurs-check error message
  • #2648: Report out of date interface files robustly
  • #2599: Better error message for non-rigid types
  • #2588: Better error message about ‘forall’
  • #2360: Better location info in occurs-check message.
  • #1856: Better error message for mutually recursive modules
  • #1928: Confusing type error message (Claus makes suggestions)
  • #2534: Another confusing type error message
  • #2442: Better error message heuristics for “not in scope” Max B’s patch
  • #2900: Improve decomposition of function types
  • #3023: Apply fundeps before printing error

Template Haskell

  • #3492: refactor TyThing to HsSyn code
  • #3497: Template Haskell support for GADTs
  • #3507: use "type T" instead of ''T
  • #1475: Allow TH to generate import declarations
  • #2340: Better TH error recovery. Easy to do; change to signature of qRecover.

Features

  • #595: pattern-match overlap checking
  • #3843: Add plugins
  • #3701: Implicitly declared existentials: a class as a type
  • #3480: Fingerprints in TypeRep
  • #3217: better flag handling for GHCi
  • #788: Class aliases
  • #2806: Require bang patterns on unlifted let-bindings
  • #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
  • #2116: GHCi should load as much of the module as it can
  • #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: divergence in simplifier
  • #4005: generational GC pathalogical case
  • #1349: strict function argument types