Advanced Tooling in Modern Languages: Rust
In this thesis, we look at advanced language features in upcoming programming languages such as Go or Rust, and investigate how to best combine new features with requirements on correct software development (static analysis, verification, monitoring).
Modern programming languages bring a host of new features to the table: to make use of multi-core, light-weight concurrency is becoming a main stream feature, and academic results on type system like ownership types find their way into mainstream programming languages. There is also tighter integration of external resources in a safe and secure manner into programs, e.g. through type providers in F#.
The Rust language is such an upcoming language which still lacks, for example, type providers. In the thesis, we will extend the compiler with the knowledge about such external data sources: given a data definition in the form of a schema, the typing environment of a given Rust program is extended by those externally defined types. Furthermore, expressions of such types are made known to the compiler infrastructure. During compilation, for data accesses to such types (that is, reads and writes), corresponding wrappers for deserialization/serialization are generated.
It may also be possible to use this meta data to improve IDE support (auto-completion,...).
The developed framework should be well-documented and easy to extend, especially with respect to different external type sources (SQL schema, XML schema, JSON, ...), and the actual data sources (SQL query, XML files, ...). Software development should be done in accordance with best practices in software development, e.g. through accompanying unit tests.
This approach would be validated by comparing a hand-written case study in Rust without the extension against a version using the new language extension, and possibly against a solution in a programming language which already offers similar features (e.g. F#, above).
A prospective student should...
- ...be interested in programming languages,
- ...like coding,
- and not be afraid to try different approaches in getting the best results out of new technology.