Some rough ideas:


Bringing new language features to Kotlin

Keywords: compilers, type systems, program analysis, language design, Kotlin

Active topics/projects:

Requirements


Relational programming with miniKanren/OCanren

Keywords: relational/logic programming, profiling, embedded languages

Description

OCanren is a strongly-typed embedding of miniKanren relational programming language into OCaml. Nowadays, the implementation of OCanren strongly resembles faster-miniKanren. Previous implementation was based on microKanren with disequality constraints.

Actual topics/projects:

Useful links:

Knowledge in the following areas would be a plus:


Lama compiler and infrastructure

Keywords: compilers, semantics, static analisys, code generation

Lama is a programming language developed by JetBrains Research for educational purposes (as an exemplary language to introduce the domain of programming languages, compilers, and tools). It currently exists for x86_32 architecture only. There are many directions for its (and its infrastructure) development, both scientific and purely technical:

Requirements


Patching OCaml and ML-like languages

Keywords: functional programming, OCaml, compilation

Description

OCaml is one of the mainstream functional programming languages. The project aims to bring new features in ML-like languages and produce some patches fixing ad-hoc or poorly designed language features such as polymorphic variants, active patterns, and modules.

Actual topics/projects:

Knowledge in the following areas would be a plus:


Metacomputations

Keywords: functional programming, metacomputations, program specialization, inverse programming

Description

The aim of this project is research and practical application of metacomputation techniques such as partial evaluation, supercompilation, distillation, and inverse programming.

Actual topics/projects:

Knowledge in the following areas would be a plus: