October 19, 2023
The design space for JIT compilers is big, and Julia represents one viewpoint. The outstanding features of this viewpoint is simplicity and efficiency, which are enabled by a clever co-design of the language and its implementation. The combination of simplicity and efficiency also allows users to employ language strengths and avoid common pitfalls that threaten the wide family of JIT compilers. My work has been focused on type stability in Julia—a program property enabling key optimizations in the compiler. Informally, a function is type stable if the type of the output depends only on the types of the inputs, not their values. I have been working on several challenges related to type stability. First, gathering data on how widespread the property is in publicly available Julia code, and what language features may be related to the property. Second, capturing a formal model of a JIT recognizing the property at run time and performing optimizations accordingly. Third, designing an automated approach to approximate type stability without running the compiler. This approach is intended to allow programmers expressing the assumptions about type stability directly in the code.
About Artem Pelenitsyn
Artem Pelenitsyn received his BSc (2007) and MSc (2009) in applied mathematics and computer science from Southern Federal University (Rostov-on-Don, Russia). After that, he worked as a teaching assistant professor of computer science at the same place. In 2017, he started working with Prof. Jan Vitek as a visiting fellow at NEU and then as a research assistant at Czech Technical University in Prague. In 2018, Artem joined the Programming Research Lab (PRL) at Northeastern University as a PhD student, where he defended his thesis on the Julia language in 2023. Artem is interested in compilers, types-based optimizations and functional programming.