Genesse, Huberdeau and Sano: Student talks
MAPLS has been rebranded to LLM: thanks to Jean Privat for the suggested rebranding! Please join us for the second LLM meeting, with talks by Hugo Genesse (UQAM), Laurent Huberdeau (Université de Montréal) and Chuta Sano (McGill University)!
When: Monday, March 31 2025 from 16:00 to 17:00
Where: Room PK-5115, Pavillon Président-Kennedy (UQAM), 201 avenue du Président-Kennedy.
Hugo Genesse: Pre-OS Firmware Analysis
As devices grew more complex, hardware initialization and cybersecurity features were pushed from the OS to firmware to provide a more robust root of trust. UEFI firmware is now commonplace in consumer devices and this component is now critical to ensure compatibility with technologies like Secure Boot, Trusted Execution Environment and Trusted Platform Modules. How can we make sure UEFI is secure and can be trusted to bootstrap the chain of the trust required for modern devices? This presentation will cover existing methodologies used to analyze UEFI firmware and research opportunities in this area.
Laurent Huberdeau: Pnut: A Self-Compiling C Transpiler Targeting POSIX Shell
Reproducible builds ensure that executable programs can be reliably created from their source code. However, the tools used by the build process are also vulnerable to supply chain attacks (such as “trusting trust attacks”) so a complete solution must also include reproducible builds for the various compilers used.
With this problem as our main motivation, we have developed pnut, a C to POSIX shell transpiler written in C that generates human-readable shell code. Because the compiler is self-applicable, it is possible to distribute a human-readable shell script implementing a C compiler that depends only on the existence of a POSIX compliant shell such as bash, ksh, zsh, etc. Together, pnut and the shell serve as the seed for a chain of builds that create increasingly capable compilers up to the most recent version of the GNU Compiler Collection (GCC) that is a convenient basis to build any other required tool in the toolchain. The end result is a complete build toolchain built only from a shell and human-readable source files.
Chuta Sano: Fusing Session-typed Concurrent Programming into Functional Programming
While there are many ways to introduce concurrency to a given “ordinary” programming language, most approaches are ad-hoc. They typically proceed by directly adding appropriate concurrency primitives, such as fork/join or spawn, and data types for synchronization, such as shared memory or channels, to the language. Due to the fundamental differences in the execution models of ordinary programming and concurrent programming, these kinds of approaches bloat the language, making them hard to work with both from programming and theoretical perspectives.
We introduce FuSes, a functional programming language that modularly integrates session-typed concurrent programming. The key idea in our approach is to treat functional and concurrent programming as separate languages and keeping them as self-contained as possible. This enables both the functional and concurrency aspects to mostly be agnostic to each other, making language extensions much more manageable.