Supero
This is my effort to optimise Haskell. This project is also known as -O11, after the compiler flag in Yhc which will implement these features.
Related work
- Positive Supercompilation for a higher order call-by-value language, by Peter A. Jonsson - similar stuff, but for a strict language.
Downloads
- darcs get --partial http://www.cs.york.ac.uk/fp/darcs/supero
- Related blog posts
- A Supercompiler for Core Haskell - from IFL 2007 post proceedings (abstract)(hide abstract)Haskell is a functional language, with features such as higher order functions and lazy evaluation, which allow succinct programs. These high-level features present many challenges for optimising compilers. We report practical experiments using novel variants of supercompilation, with special attention to let bindings and the generalisation technique.(bibtex)(hide bibtex)@inproceedings{mitchell:supero_2008_5_1
,title = "A Supercompiler for Core {Haskell}"
,author = "Neil Mitchell and Colin Runciman"
,year = "2008"
,month = "May"
,day = "1"
,pages = "147--164
,booktitle = "IFL 2007"
,editor = "Olaf Chitil et al."
,series = "LNCS"
,volume = "5083"
,publisher = "Springer-Verlag"
,url = "\verb'http://www-users.cs.york.ac.uk/~ndm/downloads/paper-a_supercompiler_for_core_haskell-01_may_2008.pdf'"
} - Supero: Making Haskell Faster - from IFL 2007 (abstract)(hide abstract)Haskell is a functional language, with features such as higher order functions and lazy evaluation, which allow succinct programs. These high-level features are difficult for fast execution, but GHC is a mature and widely used optimising compiler. This paper presents a whole-program approach to optimisation, which produces speed improvements of between 10% and 60% when used with GHC, on eight benchmarks.(bibtex)(hide bibtex)@inproceedings{mitchell:supero_2007_9_27
,title = "Supero: Making {Haskell} Faster"
,author = "Neil Mitchell and Colin Runciman"
,year = "2007"
,month = "September"
,day = "27"
,booktitle = "IFL 2007: Draft Proceedings of the 19th International Symposium on Implementation and Application of Functional Languages"
,location = "Freiburg, Germany"
,publisher = "Tech. Report No. 12-07 of the Computing Laboratory, University of Kent, UK"
,editor = "Olaf Chitil"
,pages = "334--349
,url = "\verb'http://www-users.cs.york.ac.uk/~ndm/downloads/paper-supero_making_haskell_faster-27_sep_2007.pdf'"
} - Faster Haskell - from Anglo Haskell 2007 (bibtex)(hide bibtex)@misc{mitchell:supero_2007_8_10
,title = "Faster {Haskell}"
,author = "Neil Mitchell"
,year = "2007"
,month = "August"
,day = "10"
,note = "Presentation from Anglo Haskell 2007"
,url = "\verb'http://www-users.cs.york.ac.uk/~ndm/downloads/slides-faster_haskell-10_aug_2007.pdf'"
} - Fastest Lambda First - from PLASMA (bibtex)(hide bibtex)@misc{mitchell:supero_2007_5_30
,title = "Fastest Lambda First"
,author = "Neil Mitchell"
,year = "2007"
,month = "May"
,day = "30"
,note = "Presentation from PLASMA"
,url = "\verb'http://www-users.cs.york.ac.uk/~ndm/downloads/slides-fastest_lambda_first-30_may_2007.pdf'"
} - Haskell With Go Faster Stripes - from PLASMA (bibtex)(hide bibtex)@misc{mitchell:supero_2006_11_30
,title = "Haskell With Go Faster Stripes"
,author = "Neil Mitchell"
,year = "2006"
,month = "November"
,day = "30"
,note = "Presentation from PLASMA"
,url = "\verb'http://www-users.cs.york.ac.uk/~ndm/downloads/slides-haskell_with_go_faster_stripes-30_nov_2006.pdf'"
}