UWSpace staff members will be away from May 5th to 9th, 2025. We will not be responding to emails during this time. If there are any urgent issues, please contact GSPA at gsrecord@uwaterloo.ca. If any login or authentication issues arise during this time, please wait until UWSpace Staff members return on May 12th for support.
 

C∀ Type System Implementation

Loading...
Thumbnail Image

Date

2019-04-30

Authors

Moss, Aaron

Advisor

Buhr, Peter

Journal Title

Journal ISSN

Volume Title

Publisher

University of Waterloo

Abstract

The C programming language has been an important software development tool for decades. C∀ is a new programming language designed with strong backwards-compatibility to take advantage of widely distributed C programming expertise and the large deployed base of C code, paired with modern language features to improve developer productivity. This thesis presents a number of improvements to C∀. The author has developed one major new language feature, generic types, in a way that integrates naturally with both the existing polymorphism features of C∀ and the translation-unit-based encapsulation model of C. This thesis also presents a number of smaller refinements to the C∀ overload resolution rules, each of which improves the expressivity or intuitive nature of the language. This thesis also includes a number of practical improvements to C∀ compilation performance, focused on the expression resolution pass, which is the main bottleneck. These include better algorithms for argument-parameter matching and type assertion satisfaction, as well as a new type-environment data-structure based on a novel variant of union-find. The compilation performance improvements have all been experimentally validated with a new prototype system that encapsulates the key aspects of the C∀ language; this prototype is a promising basis for future research and a technical contribution of this work. C∀, extended and refined in this thesis, presents both an independently interesting combination of language features and a comprehensive approach to the modernization of C. This work demonstrates the hitherto unproven compiler-implementation viability of the C∀ language design, and provides a number of useful tools to implementors of other languages.

Description

Keywords

programming languages, type inference, C language, polymorphism, generic types, expression resolution, type environment, union-find, name overloading, compiler construction, C∀

LC Subject Headings

Citation