Cabal の dep hell 解消プロジェクト

Haskell で使われているパッケージ管理システムは Cabal といいます。Haskell のライブラリは小さく、更新が速いので、依存関係地獄(dep hell)が発生しやすいです。これは Haskell に限った問題ではありませんが、Haskell では表面化しやすいということです。これを解決するプロジェクトの話。
2
山本和彦 @kazu_yamamoto

.@tanakh Cabal の dep hell を解決するプロジェクトは頓挫したらしいです。で、僕が代わりに担当しようと思っているんですが、Nix とか hellno とかについて何か言っておきたいことはありませんか?

2013-04-15 12:12:05
山本和彦 @kazu_yamamoto

Haskell では Nix 方式を採用しても完全に dep hell を解決することはできないらしい。他のライブラリのモジュールを export できるからだそうだ。

2013-04-15 12:15:23
Hideyuki Tanaka @tanakh

@kazu_yamamoto nixのような仕組みは大がかりだし、hellnoは実装がいまいち(Linux向けのハードコーディングされてる部分とか)でしたが、解法としては良かったと思います。

2013-04-15 12:15:36
shelarcy(しぇらーしぃ) @shelarcy

あら……GSoCMultipleInstances の人が最近 https://t.co/ExbzNKpmwi を作っているのを見て、細々とプロジェクト続いているんだなとおもってましたが……頓挫してましたか。

2013-04-15 12:18:24
Hideyuki Tanaka @tanakh

@kazu_yamamoto あと、依存例の解決が未だしょぼいので、SATソルバを使えば良い物になると思います。Haskellで書かれた効率的な実装はありませんが、minisatあたりを(C++なんでめんどそうですけど)同梱できたら良いのかなあとか。

2013-04-15 12:18:38
山本和彦 @kazu_yamamoto

.@tanakh とりあえず、hellno をプラットフォーム非依存にしてから育てて行く方がよさそうってこと?

2013-04-15 12:18:46
山本和彦 @kazu_yamamoto

.@tanakh SAT ですか。ちょうど勉強したいと思っていた所なので、モチが高まります。

2013-04-15 12:20:09
Hideyuki Tanaka @tanakh

@kazu_yamamoto すくなくとも、Linuxで適当に試していたところ、hellnoはとてもうまく動いていました。試す価値はあると思います。

2013-04-15 12:20:19
Hideyuki Tanaka @tanakh

@kazu_yamamoto いまのSATソルバは、Haskellの総パッケージ数程度(数千~万)の節数なら余裕で充足解を見つける性能があるので(典型的なパッケージは依存関係もっとずっと少ないですし)、こういう用途には特に向いていると思います。

2013-04-15 12:22:12
shelarcy(しぇらーしぃ) @shelarcy

あっ、同じバージョンのパッケージを複数インストールできるようにする試みです。念のため > GSoCMultipleInstances http://t.co/bbBxdId6B8 https://t.co/HkeT1FXq3f https://t.co/J2iaLtmzDT

2013-04-15 12:23:45
(「・ω・)「ガオー @bicycle1885

愛用しているhellnoが育てられるときいて期待してる。

2013-04-15 12:44:17
Mitsutoshi Aoe/maoe @ma0e

cabalの依存地獄、現状でもcabal-devかつ--reorder-goalsしてればハマることは無い。遅いのが難点。

2013-04-15 12:53:41
shelarcy(しぇらーしぃ) @shelarcy

そういえば、そろそろ cabal-install の sandbox 機能も完成間近でしたっけ。 - [cabal-devel] - Close to release candidate : http://t.co/zToUQnuBrW #miteru

2013-04-15 13:20:42
日比野 啓 (Kei Hibino) @khibino

つまり、そのパッケージ自身のコードを変更していなくても、コンパイル仕直すだけでインターフェースが変わる可能性がある

2013-04-15 15:14:16
日比野 啓 (Kei Hibino) @khibino

コンパイル仕直すだけで はちょっと違うな。そのパッケージ自身のコードを変更していなくても、使っているモジュールのバージョンを変えるだけでインターフェースが変わることがある

2013-04-15 15:20:06