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

ライブラリを使わずにScalaプログラム内部でclasspathなどを丸ごと引き継いで別のJVMを立ち上げるサンプル

そもそもがかなりレアケースなのですが、一応、稀にありえるシチュエーションとしては 特別な(微妙な)コードをテストしたい scala.sys.exit 自体を至る所で呼び出していて、本来それ自体を改善したいが、一旦それをそのままテストしたい mainスレッドが終わ…

自作scalafix ruleの説明その3

以下の続き。 前回書いてから、かなり増えて、もう少しで100個超えそう。 xuwei-k.hatenablog.com xuwei-k.hatenablog.com

scala.collection.concurrent.TrieMapが最低限消費するメモリ量はいくつか

scalametaのbug調査のついでのメモ。 github.com https://github.com/xuwei-k/scalameta-memory-issue-3650/commit/765dccba2154d1bf90d9c8281ec3e2b7aaa5fa04 30万行のScalaコードをscalametaでparseすると、そこには11億個のTrieMapが〜〜〜https://t.co/T…

IntelliJ IDEA上でTerminalからsbt立ち上げてerrorやwarn出た時にclickで飛べるようにする

IDEAのterminal(sbt pluginではない)、からsbtを起動してcompileなどすると、errorやwarning出た場合にそのpathがclick可能で、そうすると該当のsource codeに飛べて便利だったのだけど、いつの間にか不可能になってるんだけど、これどこかに設定あるのか、v…

Scala 3でAtomicIntegerFieldUpdater使うsample

Scala 2は無理だが3では @static が実装されてるので、Scala 3なら動く。それはそう

fthomas/refinedのScala 2 macroの独自typeの場合compile速度爆発問題

以下のライブラリの話をします。 github.com このライブラリの基本的な紹介はしません。ググるとか、流行のAIに聞く、などして調べてください。

JDK 21のswitch式でpattern matchが遅かった件の2024年2月時点の続報

4ヶ月くらい前の以下のblogの続報です xuwei-k.hatenablog.com

Scala 2.12と3でSIP-23 Literal-based singleton typesの互換を頑張るいくつかの方法

もう9年以上前に以下のようなものを書きましたが、それに関連する話。 xuwei-k.hatenablog.com

依存ライブラリ使って一定以上大きめのsbt pluginを作る時のいい感じの方法

sbtや、sbt pluginというのは所詮ただのScalaプログラムなので、普通に依存ライブラリが使えて、普通にScalaというか任意のJVM言語で書けば、そのまま呼び出せます。 しかし、普通に書いて普通に呼び出すのは、いくつかデメリットがあり得るので、代替として…

CIで警告のdiffを出すsbt pluginでscalafix対応をした

以前作った以下のsbt pluginの0.2.0リリースしました。 github.com xuwei-k.hatenablog.com https://github.com/xuwei-k/sbt-warning-diff/commit/00f4ec112e3d641c1ba189ec2fe86aa6e4ac23cc

Scalaにおける細かいclassの定義方法とインスタンス毎のサイズ

問題です。 以下のA2, B2, B3は、細かい定義方法は違うけれど、実際にはほとんど同じ定義ですが、インスタンス毎のサイズ(アロケーションされるメモリの量)、としては、どれが一番効率がいいでしょうか?どれも同じでしょうか? この問題に完璧に答えられる…