  Reflection in Kotlin is a powerful mechanism to introspect program behavior
during its execution at run-time. However, among the variety of practical tasks
involving reflection, there are scenarios when the poor performance of run-time
approaches becomes a significant disadvantage. This problem manifests itself in
Kotless, a popular framework for developing serverless applications, because
the faster the applications launch, the less their cloud infrastructure costs.
In this paper, we present Reflekt - a compile-time reflection library which
allows to perform the search among classes, object expressions (which in Kotlin
are implemented as singleton classes), and functions in Kotlin code based on
the given search query. It comes with a convenient DSL and better performance
comparing to the existing run-time reflection approaches. Our experiments show
that replacing run-time reflection calls with Reflekt in serverless
applications created with Kotless resulted in a significant performance boost
in start-up time of these applications.
