Scala 3のCapture Checkingでローンを確実に返済!

わざと怪しいタイトルにしてみましたが、こんにちは。

雑にググった限り、これを書いてる2024年5月現在、日本語でのScala 3のCapture Checkingの解説記事を見たことがない気がするので、 自分も1%くらいしか理解してない気がしますが、書いてみることにしました。

公式のサンプルを別の視点というか書き方で説明しなおしたり、もう少し色々なパターン試した程度の情報でしかないので、おそらく公式のドキュメントをしっかり読んだ人にとっては、特に新しい情報はありません。

さて、公式には以下のようなサンプルが載っています。

続きを読む

sbtのtestGroupingを使った並列化や高速化手法の解説

以下の記事の続き的な意味があるので、まずはそちらを読んでください

xuwei-k.hatenablog.com

そちらの記事で、以下のようなコメントをもらっていましたが

続きを読む

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

そもそもがかなりレアケースなのですが、一応、稀にありえるシチュエーションとしては

  • 特別な(微妙な)コードをテストしたい
    • scala.sys.exit 自体を至る所で呼び出していて、本来それ自体を改善したいが、一旦それをそのままテストしたい
    • mainスレッドが終わった後に、デーモンではないスレッドが残らないか?みたいな、JVM丸ごと変えないと実質テストが難しいもの
    • objectの内部などで java.lang.System.getProperty 的なグローバルに依存した(初期化の)処理を実行してしまっていて、そこのコード変えないとうまくテストができない(が、コードをすぐに変えられない)
    • shutdown hook的な処理自体のテストを本物に近い形で行いたい
  • 普通にプログラムを書くと依存ライブラリが衝突して困ってるが、ClassLoader使うテクニックもやりたくないのでJVMのプロセスを丸ごとforkして処理を実行したほうが(効率は微妙だが)わかりやすい

などです。タイトルにも書いた細かいポイントとして

続きを読む

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

scalametaのbug調査のついでのメモ。

github.com

https://github.com/xuwei-k/scalameta-memory-issue-3650/commit/765dccba2154d1bf90d9c8281ec3e2b7aaa5fa04

続きを読む