C∀ Type System Implementation
dc.contributor.author | Moss, Aaron | |
dc.date.accessioned | 2019-04-30T15:31:24Z | |
dc.date.available | 2019-04-30T15:31:24Z | |
dc.date.issued | 2019-04-30 | |
dc.date.submitted | 2019-04-25 | |
dc.description.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. | en |
dc.identifier.uri | http://hdl.handle.net/10012/14584 | |
dc.language.iso | en | en |
dc.pending | false | |
dc.publisher | University of Waterloo | en |
dc.subject | programming languages | en |
dc.subject | type inference | en |
dc.subject | C language | en |
dc.subject | polymorphism | en |
dc.subject | generic types | en |
dc.subject | expression resolution | en |
dc.subject | type environment | en |
dc.subject | union-find | en |
dc.subject | name overloading | en |
dc.subject | compiler construction | en |
dc.subject | C∀ | en |
dc.title | C∀ Type System Implementation | en |
dc.type | Doctoral Thesis | en |
uws-etd.degree | Doctor of Philosophy | en |
uws-etd.degree.department | David R. Cheriton School of Computer Science | en |
uws-etd.degree.discipline | Computer Science | en |
uws-etd.degree.grantor | University of Waterloo | en |
uws.contributor.advisor | Buhr, Peter | |
uws.contributor.affiliation1 | Faculty of Mathematics | en |
uws.peerReviewStatus | Unreviewed | en |
uws.published.city | Waterloo | en |
uws.published.country | Canada | en |
uws.published.province | Ontario | en |
uws.scholarLevel | Graduate | en |
uws.typeOfResource | Text | en |