Keywords
programming languages, language implementation, interpreters, compilers, run-time systems, transactions, persistence, concurrency
Description
WebAssembly (abbreviated Wasm) is described as “a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable compilation target for programming languages, enabling deployment on the web for client and server applications.” We are building a Wasm extension to support software transactional memory and persistence, exploiting byte-addressable non-volatile memory such as Intel’s Optane DC Persistent Memory.
We are working in the context of the Virgil language and the Wizard Wasm Research Engine, and collaborating with Ben Titzer (formerly of the Google V8 team). We are extending Virgil to add transactions and persistence, and likewise extending Wizard (which is written in Virgil) as a run-time for transactions and persistence.
This project is an opportunity for students to learn new languages (both Virgil and Wasm), gain experience in implementation of programming languages by interpreter and compiler, and to understand how a language run-time system components (including memory manager, transaction manager, library interfaces) work with the compiler to implement the language.
Possible Tasks Include
- interpreter and compiler extensions for transactions and persistence
- compiler optimisations for transactions and persistence
- memory management (“garbage collection”) in the context of transactions and persistence
- run-time system extensions for transactions and persistence
- performance evaluation, including developing and running suitable benchmarks
Requirements
Background in computer systems and concurrency (such as COMP2300 or COMP2310), and compilers (such as COMP4712) would be useful.