もう9年以上前に以下のようなものを書きましたが、それに関連する話。
続きを読むScalaにおける細かいclassの定義方法とインスタンス毎のサイズ
問題です。
以下の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 3.4から新たに警告やエラーになる予定の記法を雑にまとめ
これは 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
続きを読むsbtのevictedタスクの結果をsub projectごとにファイルに書き出す
そもそも任意のTaskのoutputをファイルに書き出すようなplugin作ればいいだけの可能性もあるが
(例。メンテされてない?) https://github.com/cb372/sbt-write-output-to-file
とりあえず深いことは考えずに、雑にevictedに限定して書き出す場合の方法。
続きを読むTeaVMのsbt pluginを作った 〜 酢豚とお茶の出合い 〜 ScalaからWebAssemblyへの変換
Twitterでは多少Tweetしてたのですが、やっとある程度形になったので、リリースしました。 以下、簡単な説明や、関連する余談など書いておきます
https://github.com/sbt-teavm/sbt-teavm
続きを読む