LitmusKt:提升 Kotlin 编译器可靠性的并发测试工具 | The Research Blog

10/29/2025, 12:12:14 PM

📌 一句话摘要

JetBrains 研究院开发了 LitmusKt,这是一种用于 Kotlin 的新型多平台并发测试工具,它可以系统地发现细微的、特定于平台的并发错误,并且已经集成到 Kotlin 的 CI/CD (持续集成/持续交付) 流程中,用于持续测试。

📝 详细摘要

本文介绍了 LitmusKt,这是一种由 JetBrains 研究院专门为 Kotlin 的多平台环境(JVM、Native、JavaScript)开发的新型并发测试工具。首先解释了并发编程固有的复杂性和挑战,例如由编译器优化和 CPU 重新排序导致的弱行为,这些行为会导致无法重现的“海森堡 Bug”。文章强调了传统测试方法在解决这些细微问题上的局限性,并强调了对 litmus 测试等专用工具的需求。LitmusKt 通过提供自定义的 DSL (领域特定语言) 来编写 litmus 测试一次,并在 Kotlin/JVM 和 Kotlin/Native 上运行它们,从而弥补了这一差距。它详细介绍了 LitmusKt 的设计,包括其自定义的 Kotlin/Native 测试运行器以及与 Kotlin/JVM 的 JCStress 集成,以及它将结果标记为可接受、有趣(弱但可容忍)或禁止(错误)的能力。至关重要的是,LitmusKt 成功地发现了一个 Kotlin/Native 中的关键“不安全发布”错误,其中可能读取未初始化的内存,从而导致其集成到 Kotlin 的 CI/CD (持续集成/持续交付) 流程中。该工具是开源的,促进了更可靠的多平台 Kotlin 开发,并为结合编译器模糊测试和并发分析的混合测试方法开辟了可能性。

💡 主要观点

  1. 并发编程本质上是复杂的,由于编译器和 CPU 优化,导致“弱行为”和“海森堡 Bug”。 现代编译器和 CPU 为了提高性能会重新排序操作。这会在并发程序中产生难以察觉的结果,而这些结果很难用传统的测试方法进行诊断。
  2. LitmusKt 是一种用于 Kotlin 的新型多平台并发测试工具,旨在系统地查找细微的、特定于平台的错误。 它提供了一个自定义 DSL (领域特定语言),开发者可以使用该 DSL (领域特定语言) 为 Kotlin/JVM 和 Kotlin/Native 编写一次测试,定义共享状态、线程行为以及预期和禁止的结果。这降低了复杂并发测试的门槛。
  3. LitmusKt 成功识别并帮助修复了 Kotlin 编译器中的关键错误,证明了它的实际价值。 该工具在 Kotlin/Native 中发现了一个“不安全发布”错误,该错误允许访问未初始化的内存。这一发现促使 LitmusKt 被集成到 Kotlin 的 CI/CD (持续集成/持续交付) 流程中,从而显著提高了编译器的可靠性。

💬 文章金句

📊 文章信息

AI 评分:87
来源:The JetBrains Blog
作者:Katie Fraser
分类:软件编程
语言:英文
阅读时间:13 分钟
字数:3128
标签: 并发测试, Kotlin, 多平台开发, LitmusKt, 编译器缺陷
阅读完整文章

阅读原文 QR Code 返回目录