on 7fefa89 help sign in
all commits
7245290Some tiny RTS optimisationsEdwin Brady bbbe563Merge pull request #114 from raichoo/wordEdwin Brady f6451efword 8/16 primitive typesraichoo 06283b6Improve evaluation of projection By caching result of evaluation, so that it's already evaluated when next projection happens.Edwin Brady bbe9dc1Minor fixes for inlining and integer literalsEdwin Brady 64fc043Fix overenthuiastic unused argument removal problem (Wasn't checking case analysis where the scrutinee was the result of a projection)Edwin Brady 56223efDon't normalise everywhere!Edwin Brady a52bb30Separate compile time and run time inlinings Run time can be more aggressive - compile time needs to be careful since over aggressive inline can make the termination check harder, especially for type class instances.Edwin Brady 9e58e28Type safe message passing concurrencyEdwin Brady 7508b64'par' primitive in builtins (not yet implemented)Edwin Brady 2541a16No need to store original patternsEdwin Brady 9affb75Totality checker improvements Now does a better job of checking type class instances for totality, by inlining dictionaries where possible. Added %default total declarations to some libraries where possibleEdwin Brady 54ad219Add size change termination Now deals with recursive functions (still only simple structural size changes spotted, however)Edwin Brady bf8685eSeparate "productive" and "total" in totality checker Productive can call Total, but not vice versa. This is still a temporary solution - don't rely on anything yet!Edwin Brady 30e4ed8Added simple productivity checker for coinductive definitions Recursive calls must be an argument to a coinductive constructorEdwin Brady 5692e48Added "codata" Constructors of coinductive types evaluate arguments lazily. Corecursive functions do not reduce at compile time.Edwin Brady 8063cfdAdded --dumpcases <file> option for dumping case trees on compilingEdwin Brady 0f957f6Add Proj operator to runtime version of TT Allows extracting arguments without checking constructor first which will make erasing unused values easier shortlyEdwin Brady bb76c6cMore aggressive simplification; fix case generation bugEdwin Brady 16027ddFix with parsing bugEdwin Brady 6b46ffcNew RTS almost ready, but for garbage collection problemEdwin Brady c30e6ceNo need to qualify unambiguous names on :pEdwin Brady 19495edCheck patterns are inaccessibleEdwin Brady 489ea6fPass pattern variable names to match compilerEdwin Brady dca8f9fNormalise types before applying forcingEdwin Brady 3f13043Make compile time evaluator take advantage of laziness again (And update test001 to catch it if it goes wrong again)Edwin Brady cd38cefEvaluator tinkeringEdwin Brady a5b7eedAdded a 'boredom threshold' to the evaluator If it takes too long (probably because it's evaluating a non-terminating function) just returns the input. This is hopefully temporary until the totality checker works better...Edwin Brady 4bcfa68Tinker with specialisationEdwin Brady 09f2abdFix let overloading bug with do blocksEdwin Brady 00d7c69Work towards making {static} arguments and specialisation work properlyEdwin Brady 7142d7eTotality checker tweaksEdwin Brady 7fb7decImproved termination check (gets ackermann now, but still no mutual recursive definitions)Edwin Brady 392c225Check definitions structurally as well as by name in conversionEdwin Brady fc6eb53Bug fixes; checking type names in data declsEdwin Brady de6bb41Added 'total' keyword and positivity checkEdwin Brady ae4be75Well founded recursion checkEdwin Brady 6807cf4Unreachable case warningEdwin Brady 1112fe4Coverage checker Not quite complete - a bug (which I know how to fix) makes some things appear not covering even though they are. Results currently used only for pruning case trees in compiled code. There is a small performance penalty - coverage checking can be disable with --nocoverageEdwin Brady 10ea548Inline type class applications where possible to reduce overheadEdwin Brady baaba44Run-time forcing optimisationEdwin Brady 02881b1Implemented forcing optimisation Constructor arguments which are inferrable from the indices in the constructor type are erased both at compile-time and run-timeEdwin Brady 201ade9Fixed accessibility bug; added some library functionsEdwin Brady d6c53d9Fix pattern name bug where name is already a CAFEdwin Brady 9265e7cAdded 'public', 'abstract' and 'private' modifiers 'public' means export everything (name and definition) 'abstract' means export just the name 'private' means export nothing for data types and classes, 'abstract' means export the type/class name but not the members.Edwin Brady 8ea902dAdded %hide and %freeze directivesEdwin Brady dccbc43Generate bytecode so that files don't need to be rechecked every time they're loadedEdwin Brady 8f77986Added some serialisationEdwin Brady fa5f1cdNamespacesEdwin Brady 8cd093fChanged lookup to return a list (preparation for namespaces)Edwin Brady