sbtや、sbt pluginというのは所詮ただのScalaプログラムなので、普通に依存ライブラリが使えて、普通にScalaというか任意のJVM言語で書けば、そのまま呼び出せます。
しかし、普通に書いて普通に呼び出すのは、いくつかデメリットがあり得るので、代替として最近個人的に使うように至ったパターンの紹介をします。
続きを読む問題です。
以下のA2, B2, B3は、細かい定義方法は違うけれど、実際にはほとんど同じ定義ですが、インスタンス毎のサイズ(アロケーションされるメモリの量)、としては、どれが一番効率がいいでしょうか?どれも同じでしょうか?
この問題に完璧に答えられる自信がある人は、この先を読む必要がありません。
package example sealed abstract class A1(val x: Int) case class A2(y: String) extends A1(2) // 実用的には、その他のA1やB1のsub classやobjectも // あるかもしれないが、直接関係ないので省略 sealed abstract class B1 { def x: Int } case class B2(y: String) extends B1 { override def x: Int = 2 } case class B3(y: String) extends B1 { override val x: Int = 2 }続きを読む
これは Scala Advent Calendar 2023
の16日目です。
(あとから見たらこの日付が抜けていたので、あとから登録して埋めました)
これ書いている2023年12月現在、(RCなどの安定版以外も含めると) 3.4.0-RC1が最新で、3.4.0のfinalは出ていませんが、3.4.0から色々と変更点があるみたいなので、3.4.0-RC1時点の情報をざっくりまとめます。
あくまで自分が遭遇した、あるいはざっくりリリースノート見て書き出しただけなので、他にも大量にありそうですが、ひとまずこの程度にしておきます。
https://github.com/lampepfl/dotty/releases/tag/3.4.0-RC1
続きを読むそもそも任意のTaskのoutputをファイルに書き出すようなplugin作ればいいだけの可能性もあるが
(例。メンテされてない?) https://github.com/cb372/sbt-write-output-to-file
とりあえず深いことは考えずに、雑にevictedに限定して書き出す場合の方法。
続きを読むTwitterでは多少Tweetしてたのですが、やっとある程度形になったので、リリースしました。 以下、簡単な説明や、関連する余談など書いておきます
https://github.com/sbt-teavm/sbt-teavm
続きを読む