paperbot · PL 论文追踪

全部论文 待读 收藏

P2 LitmusKt: Concurrency Stress Testing for Kotlin

LitmusKt:面向 Kotlin 的并发压力测试
FSE Proceedings of the 33rd ACM International Conference on the Foundations of Software Engineering2025匹配度 2/10 · 论文属于并发程序 litmus 测试与 Kotlin 编译器缺陷发现,与画像核心的 PL→AI/AI→PL 静态分析、LLM/Agent、浮点程序分析或贝叶斯程序分析均无直接关系;仅在 PL 工程实现与工业落地(集成 Kotlin CI)方面有微弱关联。引用 0 inbox
Denis Lochmelis, Evgenii Moiseenko, Yaroslav Golubev, Anton Podkopaev
crossref: 2026-09-12

AI 速览

一句话:首个 Kotlin 并发程序 litmus 测试工具,支持多平台 DSL 并发现编译器缺陷。

论文提出 LitmusKt,这是首个面向 Kotlin 并发程序的 litmus 测试工具。由于 Kotlin 可编译到多个平台,并发行为需在多个后端分别检验,而此前缺乏相应支持。LitmusKt 允许用统一的定制 DSL 编写 litmus 测试,并在 Kotlin/Native 与 Kotlin/JVM 两大并发编程平台上执行,从而观察不同平台上的弱内存模型相关行为。作者利用该工具在 Kotlin 编译器中发现了新的并发缺陷;这些缺陷随后被修复并不再出现。LitmusKt 还被集成进 Kotlin 的 CI 流水线,工具与演示已公开发布。

问题
Kotlin 是多平台语言,其并发程序在不同后端上的行为需要系统检验,但此前没有面向 Kotlin 的 litmus 测试工具。
方法
提出 LitmusKt,提供统一 DSL 编写 litmus 测试,并在 Kotlin/Native 与 Kotlin/JVM 上运行。
评估
通过实际使用发现 Kotlin 编译器新缺陷,缺陷被修复,工具已集成到 Kotlin CI,并开源发布。
原文摘要(Abstract)

We present LitmusKt—the first tool for litmus testing concurrent programs in Kotlin. The tool's novelty also lies in the fact that Kotlin is a multiplatform language, i.e., it compiles into multiple platforms, which means that the concurrency has to be tested on several of them. Our tool allows writing litmus tests in a single custom DSL, and these tests are then run in Kotlin/Native and Kotlin/JVM, two main platforms for concurrent programming in Kotlin. Using LitmusKt, we discovered novel bugs in the Kotlin compiler, which we then fixed and they are no longer present. Moreover, LitmusKt was integrated into the CI pipeline for Kotlin. LitmusKt is available on GitHub: https://github.com/JetBrains-Research/litmuskt. The demo is available on YouTube: https://youtu.be/oWCZp_Huwss.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@inproceedings{paperbot9117,
  title = {LitmusKt: Concurrency Stress Testing for Kotlin},
  author = {Denis Lochmelis and Evgenii Moiseenko and Yaroslav Golubev and Anton Podkopaev},
  booktitle = {FSE},
  year = {2025},
  doi = {10.1145/3696630.3728584}
}