Mark P. Jones
Date of Award
Bachelor of Science (B.S.) in Computer Science and University Honors
Functional programming, Operating systems (Computers), Programming languages (Electronic computers), Computer programming
Programming in a baremetal environment, directly on top of hardware with very little to help manage memory or ensure safety, can be dangerous even for experienced programmers. Programming languages can ease the burden on developers and sometimes take care of entire sets of errors. This is not the case for a language like C that will do almost anything you want, for better or worse. To operate in a baremetal environment often requires direct control over memory, but it would be nice to have that capability without sacrificing safety guarantees. Rust is a new language that aims to fit this role and is relatively similar to C in syntax and functionality. However, it may be worthwhile to branch farther away from C. Functional programming could offer a more productive, verifiably correct development cycle, but implementations of functional languages like Haskell often come with a heavy runtime and no built-in memory management. Thus the inspiration for Habit, a functional programming language specially designed for baremetal programming. This thesis explores Habit and its intermediate language LC to see what benefits could come from developing systems software in a functional language, while simultaneously testing its prototype compiler for bugs, looking for gaps in features, and contributing to the continued development of Habit.
In Copyright. URI: http://rightsstatements.org/vocab/InC/1.0/ This Item is protected by copyright and/or related rights. You are free to use this Item in any way that is permitted by the copyright and related rights legislation that applies to your use. For other uses you need to obtain permission from the rights-holder(s).
Ellison, Donovan, "Functional Programming for Systems Software" (2020). University Honors Theses. Paper 947.
Computer and Systems Architecture Commons, OS and Networks Commons, Other Computer Engineering Commons, Programming Languages and Compilers Commons, Software Engineering Commons, Systems Architecture Commons