sbt 1.4からのpipeline機能を試したら3割compile時間短縮された

3割というのは、もちろんprojectの構成だったり、計測方法やその他色々によるわけですが、とにかく自分が計測した場合には3割短縮されました。114秒が80秒になりました。

続きを読む

GitHub Actionsとscala-stewardを組み合わせてtokenやbot accountの用意すらせずにpull reqを送ってもらう方法

追記:

つらい

github.community

JDK14のRecordsに対するshapeless.Generic自動生成マクロを書いた

TODO:

  • あとでLabelledGenericとかその他色々も作りたい LabelledGenericは実装した
  • 実装が雑なので細かい部分バグがあるかもしれない
  • ライブラリにしてpublishする・・・? リリースした

あと、Recordsだけではなく、JDK15のSealed Classes (JEP 360)にも対応させました

https://openjdk.java.net/jeps/360

github.com

DottyのMatch Typeを使ってコンパイル時にFibonacciを計算する

見た目通りで、あまり難しくないので、特に説明することがない。 macroさえ使わずに書けますね。 shapelessにあったような色々な機能が標準で装備されています。

みなさん、Match Type使ってもっと複雑な色々な計算書いてみましょう。

ちなみに、この単純な実装だと、大きい数渡すと(コンパイル時に)大変なことになるのでご注意ください。

続きを読む

Scala 2.13で-Xsource:3を指定すると変更される挙動一覧

Scalaコンパイラには、ある程度最近のversionから -Xsource:バージョン という、少し将来のversionの挙動に近づけるオプションがあります。

Scala 2.13.3時点で -Xsource:3 を指定できるわけですが、その場合の挙動の変更一覧を、scala/scalaをgit grepしてコンパイラのコードを読んで調べたので書いておきます。

ちなみに、当初2.14が出る予定だったので、Scala 2.13の最初の方は -Xsource:2.14 という指定方法だったのですが、2.14無くなったので、dottyに向けて -Xsource:3 となりました。

続きを読む