The JetBrains IDEs are multi-threaded applications, and they need clear rules for concurrent access to shared data. The IDEs are built on top of the IntelliJ Platform, which provides a set of APIs, including those for working with concurrency.
The IntelliJ Platform extensively uses Kotlin Coroutines for performing asynchronous computations. Coroutines represent a higher level of abstraction than regular threads, and it is difficult to use classic tools like JVM profilers to analyze the performance of сoroutine-heavy applications. Internally, we have the Coroutine Profiler — a tool that is used for visualization of resource consumption of the IDEs over time.
In this internship, we would like to offer an opportunity to improve this tool, both from visual and technical aspects. The tasks will involve low-level optimization of performance-critical code, as well as implementing UI with the Compose Desktop library.
Currently pursuing or recently graduated from a Computer Science degree, or a degree in a related field
Familiarity with JVM-based programming languages
Interest in concurrency and multithreading