scala3profileというsbt/compiler pluginをリリースした

github.com

元々のコードというかアイデアは、昔blogに書いた以下のもの

xuwei-k.hatenablog.com

  • chrome trace形式で吐き出すようにした
  • tweetしたのは、Scala 3 compiler自体をprofileしたもの
  • 現状は、file単位で、(経験上遅くなりやすい)typerとinliningのphaseのみ
    • 原理上、他のphaseも出せるはずなので、後でもっと改造?
  • 特定のfile内部の、どのinline defやimplicitが遅いか?は、Scala 3 compiler側を改造しないと厳しいので、Scala 2のやつ参考にしつつ、本来Scala 3にpull req投げつけたい
    • Scala 2にはとても良い感じにchrome traceで吐き出す機能があるが、Scala 3のものはphase単位でテキストで出すだけで、現状はかなり微妙
  • 以前のblogに書いたが、NIGHTLYではないと動かないので注意
  • sbtのsub projectごとに吐き出したjsonを、雑にaggregateする機能などを追加したのでsbt pluginも作った