Keywords: programming language design and implementation, embedded system development Units: 12 units
We designed a new programming language called, Fiducia to make embedded system applications correct by construct. We are implementing the language on top of Microkit, which delegates the calls to the seL4 microkernel. In this task, we aim to integrate with the language implementation with MicroKit such that applications programmed in Fiducia could execute on simulated boards, or even actual boards.
The tasks includes the following:
- Build a transpiler that transforms Fiducia program AST to Internal Data Structure of System Description in Microkit
- Implement a build process that compiles Fiducia application to runnable targets on QEMU simulated boards. (To actual boards if time allows) *Sufficiently test the whole process.
Bonus: If there is enough time, we will move to the second stage of implementing the process algebra part of Fiducia that interacts with a general purpose programming language, via foreign function interfaces.
Benefits: Through this task, the student would have intensive engineering experience working in embedded system development, building executable applications. The student would also have the chance being exposed to system programming (in Rust mainly), OS/microkernels, programming language design and implementation, hardware.
Requirement: It is expected that the student have a solid foundation in programming languages and computer systems. We would favour a skill set of Rust or C programming. Students who has strong programming experience in other languages are also welcome.