First Advisor

Mark P. Jones

Date of Award

Summer 2020

Document Type

Thesis

Degree Name

Bachelor of Science (B.S.) in Computer Science and University Honors

Department

Computer Science

Language

English

Subjects

Functional programming, Operating systems (Computers), Programming languages (Electronic computers), Computer programming

DOI

10.15760/honors.970

Abstract

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.

Rights

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).

Persistent Identifier

https://archives.pdx.edu/ds/psu/34459

Share

COinS