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

sbtで特定のprojectを含めた依存project全体に対してtask実行する

昔似たような違うものを使ったことがありますが、違うものです

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

github.com

CIで増減した警告を教えてくれるsbt pluginを作りたい話

モチベーションなど 自分が知る限り、sbt使ったbuildで、CIで増えた(あるいは減った)警告を出してくれる簡単な仕組みは存在しない もし知っていたら、作る必要なくなるので教えてください reviewdogは使ってる https://github.com/reviewdog/reviewdog revie…

scalafixのrule書くときのためにscalametaのAST変換ツールを作った

https://github.com/xuwei-k/scalameta-ast https://xuwei-k.github.io/scalameta-ast/

sbtの独自Configurationを使ったbuild速度の改善

突然ですが、皆さんsbtのchrome trace吐き出す機能使ってますか?大抵の人は使ってないというか、存在すら知らないと思います。 https://github.com/sbt/sbt/pull/4576 以前以下のあたりでも多少話を出しました https://xuwei-k.hatenablog.com/entry/2022/0…

自作scalafix ruleの説明その2

以前書いてから増えた分の解説。 xuwei-k.hatenablog.com 以前と同様、特に記述がないものは全部SyntacticRuleなので、100%正しく書き換えや警告出せる保証がないです。

Scala 3でJavaのアノテーション継承したclassが定義できない問題の対策

github.com

Scalaにおけるunboxing

今更な話題なのですが、解説したくなったので解説を書いておきます。

Scala 3のscala.deriving.Mirrorの実装詳細は?生成コードは?SumOfとProductOfの違いは?Scala 2の場合は?調べてみました!

少しふざけたタイトルをつけましたが、以下、基本的に超真面目なマニアックな話をします。 Scala 3から、ある程度の定型的なtype classのinstance生成時に低レベルなmacroを書かずに便利に綺麗に書けるMirrorという仕組みが標準で追加されています。 docs.sc…

wartremoverのsbt pluginにTASTy inspector経由で実行する機能入れた

散々tweetしているし、少し前にblogに書きましたが、 xuwei-k.hatenablog.com それを正式に本体に入れてリリースしました。という話 github.com

Scala 3のinlineによるcompile時間増大に対処する方法

概要や結論を先に書いておくと、適切にプロファイルを取って、適切にボトルネック箇所を見つけて対処しましょう。 という話になるのですが、大まかな概要というか、結果的に使った方法を書くと sbtのTask毎の時間を記録する機能を使う Scala 3 compilerのロ…

WartRemoverをScala 3のTASTy inspector経由で動かす

1週間前のScalaMatsuriで発表 し、色々と話をしたわけですが、それから数日経ってScala 3対応版のwartremoverリリースして、さらに色々と試行錯誤していたら、以下のようなことに気が付き、 あっ、よく考えたら、Scala 3のlibrary側のQuotes使ったwartremove…

WartremoverのScala 3対応の発表をした

Compiler Plugin難しい xuwei-k.github.io

Scala 3移行の発表をした

speakerdeck.com 発表中にも言ったし、以前色々tweetしていたりもするんですが、本業での方が、コード量多かったり、時期がはやくてcompilerやlibraryが安定してなかったりで、色々辛かったりその分面白い話もあったんですが、とにかく具体的なそれなりな大…

Scala 3のmatch typeでcompile timeにString literalをparseして評価する

Scala 3のmatch typeで何かのparserでも書くか?と思ったけど、コンパイル時にリテラルのStringを、型情報というか分解した場合の値情報?を、保ったままの分解が単純には出来そうにはないというか…あるいは一旦CharのHListにしたいんだけど、何か方法あるの…

unused-codeという未使用コードの検知、削除のsbt-plugin & scalafix rule作ってリリースした

アイデアというか初期実装は、1年近く前に遡るのですが、それをしっかり作り直して整理してリリースしました。 https://github.com/xuwei-k/unused-code まだまだ追加したい機能や改善点などありますが、初期versionでも、結構しっかり作ったつもりなので(?)…

scalafixのruleをまとめてライブラリにしてpublishした

本体にドキュメント書いてないので、とりあえず現時点のruleについてひたすら説明書いておきます https://github.com/xuwei-k/scalafix-rules