2021-01-01から1年間の記事一覧

自分が出したpull reqがconflictしていたら通知するGitHub Action君

というのを作った。 仕事で自分が関わっている特定のリポジトリでは、以前からそういうの作ってbotがpull reqに直接コメントするようにしている。(自分のものだけではなく、そのリポジトリのpull req全てに対して) そうではなく、自分が出したOSS含めた任意…

2021年の最新技術を使った場合のScalaのコンパイル速度

ここでいう最新技術とは以下です。 JDK8や11よりも、17の方が速い? M1 Macが速い?(2021年最新のM1 Maxではなく、2020のMacbook Pro 13インチのM1です・・・。M1 Max欲しい!!! => 最後に追記したぞ) Scala 2より3の方が速い? 自分の最近の経験上、それ…

Scala 2のJDK17対応状況

最新情報は以下の公式の情報をご覧ください。で終わるのですが、これ書いている2021年9月現在の情報を簡単にまとめておきます(ただのtweet貼り付け) https://github.com/scala/bug/issues?q=label%3Ajdk17 公式のJDK17関連のbug https://docs.scala-lang.org…

sbtでtaskAllという独自コマンドを作った

sbt

仕事でsbtのsub projectが100個以上あるので、こういう指定だけでもダルいので

Scala 3でMatchableに推論されたら警告かエラーにするcompiler plugin

scala.Matchable自体の解説はしませんが、AnyValやAnyやAnyRefや Product with Serializable と同様に、それに推論されたら、わりとミスなことが多い気がするので、作ってみました。

MockitoのwhenとScala 3の型推論

Scala 2ではcompile errorなのにScala 3では実行時にClassCastExceptionやその他変なエラーになる。 なるほど・・・Scala 3のcompilerはあまり悪くない気がするから、よけいに辛い・・・

Scala 3のmacroによる型安全かつ実行時にリフレクションにならないClose型クラス(ローンパターン)の実装

というのがおそらく作成できたけれど、もっと書き方改善可能なところあったら教えて下さい。 このくらいすでに、Scala 3でも前例が存在する気もするけど、とりあえず(あまり前例は調査はせずに)自作しました。 テスト書いてあるとおり、指定されたcloseメソ…

Scala 3でcase classのcompanionがFunctionNを継承しなくなっていて互換がないことへの対策

数日前の記事と、対になる(?)もの xuwei-k.hatenablog.com

Scala 2と3でcase classのコンパニオンのunapply(Tupleへの変換)が互換がないことの解決案

まずは以下をご覧ください github.com

2021年5月時点のScala 3.0.0と2.13.5のコンパイル速度比較

結論: Scala 3.0.0はScala 2.13.5の半分以下(4割)の時間でコンパイル終わる!!! (scalazでのベンチマーク) 半年前のDotty 0.27の時点でやった方法とだいたい同じ方法で計測し直した結果です。

sbt 1.4以降でgraphviz使ったsvgなどのdependency graphの出力

sbt

sbt 1.4から標準にdependency graphが取り込まれた https://github.com/sbt/sbt/pull/5883 https://github.com/sbt/sbt/pull/5880 標準で(拡張子的にはhtmlだが)svgで出力するやつがある https://github.com/sbt/sbt/blob/7969a155b0978a925d3bd4aeefcb2ace1…

GitHub Actionsで祝日だったらcron実行をskipする

https://gist.github.com/xuwei-k/3fd8d9bdc9ecde473244de40da2fecf0

Google Cloud Functionsをunfiltered scalaで書く

Google Cloud Functionsに関しては詳しくないので、各自ググってください。 cloud.google.com 最近は、原理上、任意のJVM言語で書けるらしいです。 www.publickey1.jp 言いたいことを凝縮すると、以下の1 tweetなわけですが

packageとdirectoryに整合性がなかったら強制的にファイル移動するscalafixのrule作った

以前、チェックする君だけ作ったのですが、それを雑に改造して、強制移動する君に改良しました。 細かい部分が雑なので、読みにくいし、バグってる可能性もありますが、ご自由にお使いください。 既知の問題として、packageが2行にわかれて書かれていると、…

sbt-sonatypeでsonatypeProfileNameとorganizationに異なる値を設定するパターン

というのが実質あり得ないかと思っていたのだけれど、どういうときにそうなるか?というのに気がついたのでメモ。

Scala 3のMatch Typesを使って型レベルsort

今までのScala 2だとAux Patternやimplicit色々使って書くようなやつが、3だとこうやって書けるよ、という話。 https://gist.github.com/xuwei-k/924c69482c972d7bac496922ed725f79 でもこれだと、型は生成出来ても、valueOfなどで実際の値が生成できないん…

Scala 3でマクロで特定のsealed trait, classを継承したobjectを全て取得する

というのを書いたので貼っておきます。 Listで返す版と、Tupleで返す版。 https://gist.github.com/xuwei-k/7c3f662a78fdd39ce00db43900470848 https://gist.github.com/xuwei-k/c798d8faa3f4f163be0aad150b327d07: