ScalazをDotty対応した知見

少し前に、こっそりと、かなりひさしぶりな(互換壊す)メジャーリリース?となる、7.3.0 finalをリリースしたけど全然リリースノート書いたり宣伝もしていないScalazですが、 もう最近自分しか開発していない感があり、猫のほうが明らかに流行っています。

が、それはそれとして、なにがあろうと、ゆったりとScalazの開発はやれる限り続けようと思うので、"そろそろいけるかな?"と思い、ScalazでのDotty対応をやってみたら(ごく一部を除いて)できたので、その知見をまとめました。

kind-projectorがとにかく辛かったけど、マクロは使っていないので、そういう意味ではまぁなんとかなりました・・・(?)

このblog書いてる時点のDotty 0.24.0-RC1時点の情報です。 Dotty 0.24.0-RC1でビルドしたscalazは7.4.0-M1としてpublish済です。 7.3や7.2にbackportしてのDotty対応は、クロスビルドしつつの互換考えると結構厳しいし、Dottyの安定度もわからない(7.2や7.3では、まだあまりDottyの仕様変更に振り回されたくない)ので、現状では、やるかどうかわかりません。

まだDottyのコンパイラは割と簡単にクラッシュしたりするので、Dottyがproduction readyになるのは結構時間かかりそうだなぁ、と思いました。

(nightlyビルド使ってもクラッシュする)

(tweetもしたけど、あるいはおそらく無限にthreadが終わらなくなる)

以前scalapropsに関して書いたものも合わせてどうぞ

xuwei-k.hatenablog.com

その他、移行の途中で気がついた点や感想

twitter.com

twitter.com

↑ これは諦めた

twitter.com

twitter.com

twitter.com

↑このblog書いてる時点でまだ報告できてない(scalaz.Unapply使うとたぶん発生する)