About me
Hi, I'm Nikita Koval. Welcome to my personal website 👋
I work on concurrency, programming languages, and AI tools. I have authored several
synchronization and communication constructs in Kotlin Coroutines, including channels,
mutexes, semaphores, and select, and I lead
Lincheck, a JVM framework for testing
concurrent algorithms.
Recently, my focus has shifted toward debugging. At JetBrains Research, I led a team working on AI agent debugging and co-created AppGlass, a product for safe debugging of production systems.
Outside work, I enjoy cycling, skiing, hiking, and especially sailing small sports boats — that's me on a Laser on the right ⛵
Feel free to drop me a line if you'd like to discuss something interesting!
Concurrent Programming Fundamentals for AI Era
Elevate your team's concurrent programming skills with an intensive 4-day workshop! Designed specifically for corporate teams, this hands-on training delivers practical algorithms and techniques that your developers can immediately apply to real-world challenges.
- Comprehensive curriculum from basic locking to advanced concurrent data structures
- Hands-on exercises with instructor guidance throughout
- Builds long-lasting intuition for solving concurrent programming challenges
- Trains your eye to quickly spot concurrency issues — especially when AI sounds confident
Selected talks
Channels in Kotlin Coroutines
KotlinConf 2024
How we test concurrent algorithms in Kotlin Coroutines
KotlinConf 2023
Selected publications
- Lincheck: A Practical Framework for Testing Concurrent Data Structures on JVM [PDF]
Nikita Koval, Alexander Fedorov, Maria Sokolova, Dmitry Tsitelov, Dan Alistarh. CAV 2023.
Here, we present the Lincheck framework for testing concurrent data structures on JVM. - CQS: A Formally-Verified Framework for Fair and Abortable Synchronization [PDF]
Nikita Koval, Dmitry Khalanskiy, Dan Alistarh. PLDI 2023.
In this work, we introduce a new CancellableQueueSynchronizer algorithmic framework, which enables simple yet efficient implementations of a wide range of fair and abortable synchronization primitives: mutexes, semaphores, barriers, count-down latches. We are going to merge the framework into Kotlin coroutines. - Fast and Scalable Channels in Kotlin Coroutines [PDF]
Nikita Koval, Dan Alistarh, Roman Elizarov. PPoPP 2023.
This paper describes how rendezvous and buffered channels in Kotlin Coroutines work under the hood. - Multi-Queues Can Be State-of-the-Art Priority Schedulers [PDF]
Anastasiia Postnikova, Nikita Koval, Giorgi Nadiradze, Dan Alistarh. PPoPP 2022.
This paper introduces several techniques that make the classic multi-queue significantly faster without losing fairness.