GHC 7.8.1 rc1 導入のすゝめ

GHC 7.8.1 のRelease Candidate versionが出ました! 安定版ではないのですが、積極的に使っていくべきだと思います!

現在の安定版 7.6.3 との大きな違いは IO Manager が改良され、マルチコア環境での並列実行性能が向上しています。 実際に WarpHaskell のHTTP Server) で計測してみるとこんな値が出ます。

f:id:amothic:20140214095132p:plain

7.6.3 では6コア以降なぜか性能が低下してしまうというおかしな結果になってしまいます。

IO Managerの改良についてはこちらの論文に詳しく書いてあります。

Mio: A High-Performance Multicore IO Manager for GHC

GHC 7.8.1 rc1 のインストール

まず、ここから対応するOSのghcソースコードを取得します。

http://www.haskell.org/ghc/dist/7.8.1-rc1/

インストールにあたって特に気をつけることはないのですが、glibcの2.15を要求するので、少し古いOSだとインストールできません。

glibcの入れ替えは苦行だと感じたのであまりオススメはしません…何か新しいバージョンのOSを入れるほうが早いと思います。 また、rc2では、glibc 2.13に対応するとのことですので、少し待ってもいいかもしれません。

Cabal

Fedora 19 に GHC 7.8.1 rc1を入れた時いくつかのライブラリのインストールが上手くいきませんでした。 この解決法が正しいのかは分かりませんが、Cabal と cabal-install をgithubから取ってきてインストールすることで問題を回避することができます。

https://github.com/haskell/cabal/

取ってきた後、Cabalのディレクトリで、

$ cabal install

cabal-installのディレクトリで、

$ sh bootstrap.sh

とやることで無事新しいCabalに置き換えることができます。 WarpやYesodが入れられない方はこちらの方法を試してみてください。