GHCJSをDebian jessieにインストールしてみた

Posted on June 1, 2014

GHCJSをDebian jessieにインストールしてみたので手順を記録しておく。基本的な手順は公式と同じだけど、いくつか気を付けないといけないポイントがある。ちなみに、Vagrantを利用して、環境を汚さずにインストールする方法もあるらしい。

  1. GHC 7.8.xをインストールする

    $ ghc --version
    The Glorious Glasgow Haskell Compilation System, version 7.8.2
  2. 既存の~/.ghc~/.cabalをどこかに避難する

    $ mv ~/.ghc ~/dot.ghc
    $ mv ~/.cabal ~/dot.cabal
  3. cabal updateする

  4. ~/.cabal/configを編集して以下を追記する

    -- GHC 7.8.xからGHCiがシステムの動的リンカを使うようになったが、
    -- 現状ではデフォルトで動的ライブラリが生成されないため明示的に有効にする
    shared: True
    -- Cabal 1.20から並列ビルドがサポートされたが、おかしくなることがあるため
    -- ジョブ数を1にして回避する
    jobs: 1
  5. GHCJSのcabalをインストールする

    これは公式通り。

    $ git clone https://github.com/ghcjs/cabal.git
    $ cd cabal
    $ git checkout ghcjs
    $ cabal install ./Cabal ./cabal-install
  6. GHCJS本体をインストールする

    これも公式通り。

    $ git clone https://github.com/ghcjs/ghcjs.git
    $ cabal install ./ghcjs
  7. ghcjs-boot --initする

Fay, PureScript, Hasteなどと比べてGHCJSは超アグレッシブなアプローチを取っており、実用性はともかくとして未来感があってすばらしい。

ちなみに、GHCJSが生成するJavaScriptはランタイムを含むため必然的に巨大になるけど、Closure Compilerをかければ結構縮んだ記憶がある。速度はまあアレ。