もともとScalaの標準ライブラリのコレクションを継承して独自クラス作るのは結構なアンチパターンだと思ってるけど、Scala 2.13で色々変わることにより、より一層アレなので “絶対Scala標準ライブラリのコレクション継承して独自クラス作るなよ” くらいに言っていきたい
2018-03-06 11:31:30github.com/rickynils/scal… 2.13の新しいコレクション、ライブラリ作者にとってはやはり、だいぶ面倒そうだな・・・ "org.scala-lang" %% "scala-collection-compat" は用意するらしいので、コードの変更は必要とはいえどうにかクロスビルドは可能なのか
2018-03-29 18:53:16というか、やはり依存が色々と循環してるし、しかも(ソースコードもバイナリも両方?)互換壊れるし、前も一時的にそうなったけど、これやはりscalacheckのcodeを一旦全部コピペしてscala/scala本体に入れないと厳しいのではないだろうか
2018-03-29 23:36:21Scala 2.13.x の開発用 branch を新しいコレクションライブラリにする(数万行に及ぶ大幅な)変更 merge されたのか github.com/scala/scala/pu…
2018-04-12 03:42:31gist.github.com/xuwei-k/b0d712… 2.13.0-M4-pre-20d3c21 という version が maven central においてあるので scalaz ビルド試してるけど予想通り厳しい
2018-04-12 13:01:48scalaz 以外でも、そりゃ結構な確率でそのままではビルド不可能だろうなぁ、やはり github.com/scala/communit…
2018-04-13 15:56:10現状の2.13のコレクションまとめ CanBuildFrom消える(似たような?BuildFromというの出来る) TraversableOnceとTraversableなくなる(IterableOnceやIterable使う) StreamがLazyListに名前変更 デフォルトのSeqやIndexedSeqが今までは"型は読み取り専用で実態は不変/可変の両方ありえた"のが不変に変更
2018-04-13 16:09:54もっと他にも色々ある(自分も全部把握してない)し、そもそも公式のアナウンスというかドキュメントで色々マイグレーションガイドや、scalafixのツールも提供される予定だろうし、あとは 2.13.0 の final 出るまでには細かい部分変わる可能性もゼロではないだろうけど、あくまで自分が見た範囲では
2018-04-13 16:12:24github.com/scalaz/scalaz/… 例えばMapに関して - SortedMapとMapの共通化諦める - 2.12以前と2.13の共通化あきらめる - 提供する機能そもそも減らす - 新しいコレクション完璧に理解してすべてを解決する仕組みを作る(かなり無理そうだし、無理してやっても維持がつらそう) という状況でどうやっても辛い
2018-04-17 23:25:11Scala 2.13 、今のところ、やはり scala.collection.breakOut を書き換えずに済む方法が無さそうなので、それ考えると今のうちから使わないようにしたほうがいい可能性がある、辛い
2018-04-17 23:27:28scalazでの2.13.0-M4(まだ出てないがそろそろ出そう)の新しいcollection対応試した限り、少なくともこれ github.com/scala/scala-co… の最初のversion(2.13.0-M4と同時にリリース?) が出てからではないと辛いが、出たらすぐ対応出来る部分だけでないどころか、そうでない部分のほうが多そうなので頭痛い
2018-04-17 23:32:39github.com/scala/scala/bl… Scala 2.13 から lastIndexOfSlice の end が length から length - 1 に仕様変更(?)されてるのなに
2018-04-18 19:28:50ArrayStack の += が完全に逆に追加されるようになった、という違いもある(それのほうが本来あるべき姿な気もするから、意図した仕様変更だろうか)
2018-04-18 19:29:482.13 のソースコード中には github.com/scala/scala/bl… type CanBuildFrom[-From, -A, +C] = scala.collection.BuildFrom[From, A, C] となってるが、微妙に機能違うみたいなので、クロスビルドしようとすると、場合によっては邪魔でしか無いな、このalias。 つらい
2018-04-19 16:17:32scalaz 7.2 も 7.3 も Scala 2.13.0-M4-pre-20d3c21 に対応できる見込みたったが、今のうちから入れておくか、Scala 2.13.0-M4 が正式に出るまで待つべきか・・・?🤔 余計な変更に振り回される可能性はあるが、community-builds で検知可能になるし、publishすれば他のライブラリも試せるし、入れるか
2018-04-19 16:27:56github.com/scala/scala/bl… - CanBuildFrom に存在していた引数なしのapplyに相当するものがBuildFromではなくなってる - それはscala.collection.Factoryにある のでscala.collection.Factoryのほうをaliasにするべきかと一瞬思ったけどFactoryとBuildFromはどちらからも変換可能でもないのか、難しい
2018-04-19 16:55:40github.com/scala/scala-co… github.com/scala/scala-co… CanBuildFrom から BuildFrom も Factory も生成可能みたいなので、CanBuildFromの機能がBuildFromとFactoryに分割されたという理解で大体正しい気がするけど、それを理解したところで互換維持しつつクロスビルドする場合の問題はまた別なので難しい
2018-04-19 17:00:09新しく書き直したのに //TODO is uncheckedVariance sound here? というコメントあったり、そもそも uncheckedVariance それなりな量使われていて不安になるな github.com/scala/scala/bl…
2018-04-19 17:07:50Scala 2.13から加わるLazyList、単なるStreamの名前変えたものかと思いきやheadもlazyになったという動作の違いがあるらしく、単なるaliasではないのでdeprecatedなStreamは別実装として一旦残るらしい。しかし普通に2.12以前とcross buildするならStreamの非推奨の警告出たままにせざるを得ないし面倒
2018-04-24 12:30:56@ponkotuy (今のところ) Listになるみたいです pic.twitter.com/QE7tpjBpVJ
2018-04-24 15:11:57Scala 2.13 の LazyList さん lazy val 2つ使うようになって Stream より余計にメモリ消費しそうだし、それとは別に、よくやりがちなメモリリーク起こしそうな実装になってるなぁ。あとでissue報告かpull reqするか
2018-04-24 17:15:43