haskell-jp / random #100 at 2022-09-15 10:49:49 +0900

Hiromi ISHII / mr_konn
Haskell Language Server 1.8.0.0 がリリースされました :tada:
GHC 9.4 系の部分的なサポートやパフォーマンスの改善、Stan プラグインなど幾つか機能追加がありますが、Ubuntu 20.04 系だと GHCup がインストールする(VSCode extension のデフォルトの挙動) HLS 1.8.0 のバイナリが GLIBC のバージョンの違いにより動かないという問題があるようです。

https://github.com/haskell/haskell-language-server/issues/3160

長期的に解決される可能性はありますが、可能な短期的な解決策としては、上の issue で説明さているように GHCup に deb10 向けのバイナリを強制的にインストールさせる、という回避方法があります:

ghcup install hls -u  1.8.0.0

ただし、これによってビルドに使われている GHC がかわり、ABI の非互換が出ます。
たとえば、HLS 1.7.0.0 系 + GHC 9.0.2 を動かすためにこれまで GHC 9.0.2 のバイナリとして fedora27 向けの bindistをダウンロードさせて使っていた場合、GHCを入れ直さないと HLS 1.8.0.0 で動くようになりません。具体的には、以下の bindistを使って GHC をインストールさせればよいようです:

https://downloads.haskell.org/~ghcup/unofficial-bindists/ghc/9.0.2/ghc-9.0.2-x86_64-deb10-linux.tar.xz

例としては、stack を使っている場合、プロジェクトローカルの stack.yaml ないし ~/.stack/config.yaml に以下を追記した上で、 rm -rf ~/.stack/programs/x86_64-linux/ghc-tinfo6-9.0.2* してビルドし直せば HLS 1.8.0.0 + GHC 9.0.2 が動くようになります:

setup-info:
  ghc:
    linux64-tinfo6:
      9.0.2:
        url: ""
        sha256: a33263c3f819de606da079d191ddc3b86cbf503a14c6c0eec1a4ae1899008fdc

これが面倒だな、という場合は暫く HLS 1.7.0.0 を使うようにしておく、というのも一つの選択肢だと思います。この場合は、VSCodeだとsettings.json に以下を追加すれば、HLS 1.7 決め打ちになります:

    "haskell.toolchain": {
      "hls" : "1.7.0.0"
    }
Hiromi ISHII / mr_konn
こちらの HLS 1.8 + Ubuntu 20 の問題ですが、GHCup 側で対処が入ったようで、これから使う場合は GHCup に任せれば問題なく動くようになるはずです。