| Version 341 (modified by simonpj, 3 months ago) |
|---|
This page collects tickets that Simon PJ is interested in, so that he remembers them
Type inference
- #7558: Terrible error message in inaccessible code
- #5682: Parsing of pomoted kinds
- #6022: over-general types are inferred
- #5642: slow constraint solving
- #7346: Pedro's generics and deriving
- #5863: deriving Typeable for data families
- #5267, #5609, #5777, #344: bugs in arrows
- #7204: a class to controll FFI marshalling; and newtype deriving for classes with ATs
- #4175: better GHCi info for type-function 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
- #7520: Cardinality analysis
- #7619: make demand and CPR analysis cope with data families
- #6070, #5949, #5775, #4267, #5302, #6087: Demand analysis
- #5075, #3138: CPR for sum types (mostly done, needs finishing)
- #2289, #2387, #1600, #1855: nested CPR analysis
- #7596, #5996, #149, #2940, #947, #701, #5344: CSE opportunities
- #6040, #5945, #3458, #1216: lambda-lift functions with a few args, just before code gen
- #1171: strictness and exceptions (long, open ticket)
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
- #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
- #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
- #2840: top level unlifted string literals
- #3123: feature request: recursive inlining and peeling
- #4960: better inlining tests
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: Improve SpecConstr 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.
Tiresome arithmetic things
- #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
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)
- TypeFunctionsStatus
- #7503: Kind polymorphism and mutual recursion
- #6018, #4259: Injective type families and type family overlap
- #7259: Eta-expansion of products in System FC
- #4296: SkolemOccurs
- #816. #3108: extreme delicacy in solve order, involving fundeps
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: Newtype deriving and type families type soundness problem
- #2641: revise what -XExtendedDefaultRules does
Better error messages
- #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)
- #2900: Improve decomposition of function types
Template Haskell
- Blog post: http://hackage.haskell.org/trac/ghc/blog/Template%20Haskell%20Proposal
- #1012: mutually recursive modules and TH
- #5959: top level splices and renaming
- #5416: local modules
- #4364: type synonym loop
- #4372: better quasiquotation support
- #2041: Splicing in concrete syntax
- #1475: Allow TH to generate import declarations
- #2340: Better TH error recovery. Easy to do; change to signature of qRecover.
- #4222: design of reification for TH
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: 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
