The Year In Haskell
Spend some time to catch up on what’s been happening in Haskell this year. In this edition of the Web News, we look back on the major Haskell news of 2009. You can also read this edition in PDF form.
Haskell 2010: A major event in 2009 was the release of the Haskell 2010 standard — the first official revision to the language since Haskell ’98, and the first result of the Haskell Prime process. The new language standard will form the core of a rolling language upgrade in coming years.
The New Logo: Along with the new language standard came a new logo for Haskell – again, the first since Fritz Ruehr’s proposal back in the day. To produce the logo, a community competition was launched, and via anonymous condorcet voting from -cafe@ members, a winner was chosen!
Hackathons go global: For the past 3 years, a series of Haskell hackathons have been held in Europe, one or two a year, as the Hac series. In 2009, we held 4 hackathons, and for the first time, two in North America: in Portland, Edinburgh Philadelphia and Utrecht. The next Hackathon is in Zurich in March 2010.
New user groups: For a long time the Haskell community relied on conferences for our user groups. By the end of 2009 however, the Haskell user group concept has become widespread, with nearly 30 groups around the world, including ten groups in North America, and twelve in Europe, and six across Australia, Asia and South America.
Summer of Code: Haskell.org participated in the Google Summer of Code, for the fourth consecutive year. This year, Google funded development of 5 Haskell projects: Gergely Patai to improve space profiling, Isaac Dupree to work on Haddock, Niklas Broberg on Language.Haskell, Petr Ročkai on scaling Darcs to large repositories, and Thomas ten Cate on EclipseFP. In addition, Jane Street funded a Haskell project for the first time, under the Jane Street Summer Projects series, supporting development of the Lambda Cube 3D rendering engine.
Real World Haskell: a year ago, Real World Haskell was published, the first O’Reilly book on Haskell, the first Haskell book for professional programmers, and went on to win the Jolt Award for best technical book of the year. It has since also been translated into Japanese. It was notable also for having the entire book available in pre-pub and post-pub as a wiki.
LYAH: a quirky and accessible online book was produced, Learn You a Haskell for Great Good, becoming something of an internet sensation. LYAH is set to be published in book form in 2010.
Compilers and Infrastructure
GHC 6.12: Version 6.12 of the primary Haskell implementation, GHC, occured in 2009, with major improvements for parallel performance, support for ThreadScope profiling, dynamic linking on Linux, and with I/O libraries Unicode-aware. The improvements to parallel performance where benchmarked, and documented in the paper ”Runtime Support for Multicore Haskell“. The GHC team also published their latest status report.
An LLVM backend for GHC? In something of a tour de force, David Terei designed an LLVM backend for GHC, implemented and benchmarked it :: PDF, finding that the current code gen was competitive, but that LLVM wins out on the numeric-based loops typical in data parallel code.
Dataflow Optimizing Backend: Norman Ramsey and João Dias presented a new dataflow optimizing backend for GHC, making it easier to do some very aggressive low level optimizations late in the compilation phase.
Data Parallelism: Data Parallel Haskell progressed further, and GHC 6.12 is significantly better than prior GHC’s. The current status of the data parallel extensions to Haskell was described at the HIM.
Supercompilation for GHC? Yet more work on the optimization front, a design was developed for adding a supercompilation phase to GHC, making possible whole new classes of aggressive code transformation optimizations that were previously quite difficult.
GHC with shared libraries: Well-Typed, funded by the Industrial Haskell Group, completed the work of enabling shared libraries to be produced by GHC. That means “Hello world” in Haskell is now only an 11k executable using GHC.
JHC progress: There was a new major release of jhc, the whole program optimizing Haskell compiler.
UHC: At the Utrecht Hackathon on April, the first release of UHC, the Utrecht Haskell Compiler was announced, a new Haskell compiler with a GRIN-based intermediate representation, which makes extensive use of attribute grammars in its construction.
Libraries and Distribution
The Haskell Platform: in 2009, a major effort was launched to provide a single “batteries included” library suite for Haskell, suiting commercial, open source and research needs. The result is The Haskell Platform, (also now available in Debian), a single installer for a complete GHC-based Haskell system, including extensive libraries. By the year’s end there had been 450 thousand downloads of the binary installers!
Hackage: Hackage is the central repository for Haskell libraries and applications, and, along with Cabal, provides a publishing, distribution, and dependency resolution system for all Haskell code. Hackage continues to grow in 2009, faster than in 2008. There have been 3500+ package updates this year, so we now have 1750 Haskell packages available on Hackage in total, up from 750 a year ago. The size of Hackage is phenomenal, as you can see when you visualize the Haskell Universe. Earlier in the year, we reached one million Haskell downloads on Hackage. November 2009 was the first month with more than 100k downloads from Hackage in a single month.
The Industrial Haskell Group: For the first time, in 2009, a consortium of companies came together to fund continued development of Haskell and its toolchain. The result is the IHG, launched earlier in the year. The initial round of funding resulted in several improvements to the ecosystem. The group is seeking to expand membership in 2010 to further consolidate the commercial strength Haskell. The Birth of the IHG was presented at the “Commercial Users of Functional Programming” workshop.
CUFP: This year’s Commercial Users of Haskell workshop was held in Edinburgh, and included talks on Real World Haskell, teleconferencing on maps in Haskell, FP at Facebook. Next year’s CUFP will be held in Baltimore.
Industrial reports: As part of Galois‘ 10th birthday, Don Stewart presented a talk at the LondonHUG on Engineering Large Projects in Haskell, celebrating a decade of use of Haskell by Galois. TypLAB, a new startup talked about why they use Haskell. Facebook released its lex-pass tool to automate changes to a PHP codebase, by writing abstract-syntax-tree transformers in Haskell. And Starling Software described building a real time financial trading system in Haskell :: PDF. Tom Hawkin’s Atom EDSL for control systems went into production use in trucks and buses, and is starting to be used on a NASA runtime monitoring project. The Cryptol release got slashdotted. Tupil.com talked about their experiences building commercial web apps in Haskell.
The major conferences of the year were in Edinburgh, and for the first time we have video of the entire week, including videos of the International Conference of Functional Programming, the Haskell Symposium, the Commercial Users of Functional Programming, and the Haskell Implementors Meeting. Hooray for Malcolm Wallace for compiling these videos.
New IO library: the major news in libraries included a rewrite of the IO library (to support native unicode encodings on IO, in-memory IO buffers, and more). See Simon Marlow Wander Through GHC 6.12′s New IO Library.
Associated Types for Optimizations: Another popular post was on self-optimizing data structures, by Don Stewart, showing how to statically specialize the layout of Haskell container data types, improving data density and performance.
The Text Library: A major revision of the Haskell text library was announced by Bryan O’Sullivan, giving the Haskell community a packed, unicode text type suitable for large scale unicode text processing.
LLVM adventures: One of the most interesting new libraries of 2009 was the high level LLVM bindings for Haskell. Lennart Augustsson and Bryan O’Sullivan had various adventures with it, including beating GHC (and GCC) and producing a BASIC embedded in Haskell via LLVM.
Vacuum: The biggest tools of the year included vacuum, Matt Morrow’s tool for extracting graphs of heap objects in running Haskell processes. With it you can vizualize Haskell data structures live in GHCi.
The Leksah IDE:major announcement was made at the Utrecht Hackathon: Leksah, a Haskell IDE in Haskell by Juergen Nicklisch-Franken.
ThreadScope: Finally, another key new tool addresses the problem of profiling in a multicore setting. The result is threadscope (a tool for profiling concurrent and parallel Haskell programs). ThreadScope lets you visualize graphically events in the GHC runtime system, including GC, thread migration, execution, spark activity and more. You can watch this video to see it at work.
Haskell in New Domains
Linux Kernel: Thomas DuBuisson showed us how to write Linux Kernel Modules in Haskell.
seL4: the first machine-verified microkernel: the Secure Microkernel Project (seL4) announced it’s major result: the world’s first formal machine-checked proof of a kernel, and they used Haskell as a key part of their development methodology.
iPhones: GHC was modified to allow native Haskell on iPhone.
happstack: the happstack web framework (the Haskell equivalent of Django) was in active development, with happstack 0.4 released. happstack powers gitit, and patch-tag.com, amongst other things. You can also read about why Happstack scales, and SQL fails!
darcs: the darcs revision control system world was extremely active this year, with darcs 2.2 and darcs 2.3 released (along with a Summer of code project) and great strides in scalability via a new storage mechanism.
The top 7 tutorials of the year:
- What monads are not
- How you should(n’t) use Monads
- Haskell: The Confusing Parts
- A Neighborhood of Infinity: Where do monads come from?
- Parallelism ≠ Concurrency
- The Typeclassopedia
- Evolving faster Haskell programs
And finally, the most popular pieces of advocacy for the year:
- Hello Haskell, Goodbye Lisp
- The Haskell Rabbit Hole
- Haskell is beautiful in practice
- Everyone’s talking about Haskell
Haskell 10 years ago
And the news of 10 years ago? Here’s a selection of the top news in 1999.
Haskell 98: Simon Peyton-Jones announced that the Haskell 98 standard was done.
c2hs: Manuel Chakravarty announced the C->Haskell 0.7.2 – beta release
TclHaskell. Meurig Sage announced the TclHaskell, an FFI binding to Tcl.
This is just some of the new stuff that has happened in Haskell this year. You can stay up to date by following the Haskell Reddit. See you in 2010!
Filed under: News | 3 Comments
Tags: ghc, hackage, libraries, parallel, release