Kotlin Compiler Common Backend team is responsible for such compiler components as inliner, actualizer, and other parts related to the Kotlin Intermediate Representation (IR) processing for Native, JS and WASM backends. This year Common Backend team has prepared a big refactoring of IR inliner. Inliner replaces an inline function call with the function’s actual body at the call site. You can read more about this in the Kotlin documentation: https://kotlinlang.org/docs/inline-functions.html.
Following major changes, it is important to properly test the inliner. Our team has an idea to test Kotlin IR inliner using fuzzing — a technique for automated testing which is based on analyzing the program reaction to "random" input data. There is an open-source fuzzer Hephaestus, that generates Kotlin, Java and Groovy programs from scratch and compiles them using the corresponding compiler. You can read more about Hephaestus here: https://theosotr.github.io/assets/pdf/pldi22.pdf. This fuzzer suits our purposes perfectly, and it has already found several bugs in the inliner.
KT-81713: [Inliner] Compilation of inline function with recursive call applied to TODO() fails with an internal error
KT-82017: [Inliner] Inline function overrides abstract method with default value
KT-83904: [Inliner] Inline function overrides an abstract method with a default value in an inheritance chain
This internship involves testing the inliner using Hephaestus and its improvement to support more language constructs and generate correct programs more reliably.
Basic understanding of software testing theory.
Familiarity with Python. You should be ready to write and understand Python code, because this is the language of Hephaestus fuzzer.
Familiarity with Kotlin — the language under test. Enough to write simple programs and test examples.
Readiness to dive into the Kotlin project and the details of the Kotlin compiler's process.