What’s new in Haskell? December 2009
What’s been happening with the Haskell programming language for the past month, as voted by readers of The Haskell Reddit. This is the first edition of the Web News, so feedback on the content, schedule and goals is welcome. Read more about the goals for the project on the about page.
The biggest news of November for the Haskell community was the announcement of the release of the new Haskell language revision: Haskell 2010. The Haskell Prime process, which produced this revision, calls for regular releases of newly standardised extensions, and this first revision declared as standard Haskell:
The end of n+k patterns in standard Haskell completes one of the longest sagas in the language’s history, with efforts to remove the feature more than 10 years ago .
The next steps for the standard are a revised language report, and for compilers to adopt the features. The Haskell 2011 group is also forming to investigate the next round of standardisation. (And see the Haskell 2010 slashdotting for fun…)
There are more than 1700 packages on Hackage now, with some quite complicated dependencies set up. Duncan Coutts looked at how to construct a maximal install plan, such that the largest fraction of Hackage could be installed without conflict. He found that a small number of key packages cause “splits” in the install scheme, as significant numbers of packages depend on incompatible versions of these conflicters (e.g. HaXml 1.13. or 1.19). Duncan was able to find a coherent install plan on unix for 1453 packages in the end, and since then a new stable version of HaXml has been released, which will further improve the overall coherency.
Designing the perfect array library in Haskell has been a hot topic for the last couple of years, and a number of competitors have emerged looking for the right balance of performance, flexibility and a rich API. Roman Leschinskiy announced a project, NoSlow, to methodically compare the performance of the various array libraries, with published results based on Bryan O’Sullivan’s criterion benchmarking tool.
An LLVM backend for GHC :: PDF
David Terei published his undergraduate honors thesis, “LLVM for GHC”, at the University of New South Wales, describing his design for porting GHC to use LLVM for code generation, finding that it mapped “remarkably well”. He then goes on to implement and benchmark the resulting compiler, finding that LLVM was generally similar to the existing code generator for the majority of programs, with the exception of array benchmarks, which were significantly better under LLVM. An amazing achievement for such a short project!
The second release candidate for the GHC 6.12 series was announced, including installers for Windows and OS X. The upcoming 6.12 release features some significant improvements to data parallel arrays, new profiling tools, including support for ThreadScope, full support for shared libraries (as funded by the IHG), improvements to the performance of parallel and concurrent programs in general, and support for unicode Handles (as well as other encodings directly in the Handle layer).
Interviews and Media
In the broader media, we saw an interview with John Hughes at InfoQ, contrasting Erlang and Haskell as well as a surprise Haskell talk at Supercomputing 09, where Haskell was used for high performance computational biology.
In November, there were 287 package released on Hackage, bringing the total number of Haskell packages to 1720. We had a record 143 thousand downloads from Hackage in November, breaking the previous monthly record of 95 thousand set in October 2009, and bringing the total downloads from Hackage to 1.53M.
The top 15 most popular libraries in November were:
And the top 15 most popular applications are:
- Project Raincat : a brilliant Haskell game involving rain and wet cats!
- LambdaCube: a Haskell 3D rendering engine
Articles and Tutorials
The most popular new Haskell articles and tutorials online this month were:
- What monads are not – the name says it all.
- Programming with impossible functions, or how to get along without monads — imagining a world without monads
- Is static type checking a redundant testing mechanism? — thoughts on static typing and/or comprehensive test suites
- Optional laziness doesn’t quite cut it — why by-default strict languages fail in expressivity
- Enjoying Haskell — a new user experience
- Technical debt (or, mortgages in Haskell) — modelling your mortgage with Haskell
- A compiler for Lambda Calculus to LLVM: Part 1, Part II and Part III. — using LLVM to write a compiler
You shouldn’t do that
And, finally, news that perhaps shouldn’t have been:
Next edition: a 2009 Haskell retrospective.
Filed under: News | 2 Comments
Tags: arrays, ghc, hackage, libraries, llvm, packages