Changeset 43b6516
- Timestamp:
- Mar 12, 2026, 11:51:06 AM (86 minutes ago)
- Branches:
- master
- Parents:
- a783c74
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/theses/mike_brooks_MMath/uw-ethesis-frontpgs.tex
ra783c74 r43b6516 66 66 Internal-External Member: \= \kill % using longest text to define tab length 67 67 External Examiner: \> Bruce Bruce \\ 68 \> Professor, Dept. of Philosophy of Zoology, University of Wa llamaloo \\68 \> Professor, Dept. of Philosophy of Zoology, University of Waterloo \\ 69 69 \end{tabbing} 70 70 \bigskip … … 134 134 These features are implemented across the \CFA compiler and runtime libraries. 135 135 The results maintain another \CFA goal of offering strong backwards compatibility with C. 136 T his work leverages preexisting \CFA contributiongs of prior students working on the \CFA project, particularly throughnovel applications of the compiler's type system.136 To achieve these goals, this work leverages preexisting \CFA contributions by prior students, particularly novel applications of the compiler's type system. 137 137 138 138 All modern programming languages provide at least these three high-level containers (collections): array, linked-list, and string. 139 139 Often, the array is part of the programming language, while linked lists are built from (recursive) pointer types, and strings from arrays and/or linked lists. 140 140 For all three types, languages and/or their libraries supply varying degrees of high-level mechanisms for manipulating these objects at the bulk and component levels, such as copying, slicing, extracting, and iterating among elements. 141 Unfortunately, typical solutions for the these key types in C cause 60\%--70\% of the reported software vulnerabilities involving memory errors;70\%--80\% of hacker attack-vectors target these types.142 Therefore, hardening these three C types goes a long way to make the majority of C programs safer.141 Unfortunately, typical implementations for the these key types in C cause 60\%--70\% of the reported software vulnerabilities involving memory errors, where 70\%--80\% of hacker attack-vectors target these types. 142 Therefore, hardening these three C types and suggesting programers use them as their default types goes a long way to increase memory safety in the majority of C programs. 143 143 144 144 Specifically, an array utility is provided that tracks length internally, relieving the user of managing explicit length parameters and stopping buffer-overrun errors. 145 145 This feature requires augmenting the \CFA type system, making array length available at compile and runtime. 146 A linked-list utility is provided, which obviates many user-managed recursive pointers by catering directly to system-programming uses (intrusive linking, ad-hoc listing) for which a library solution is often dismissed.147 Finally, a string utility is provided with implicit memory management of text in a specialized heap, re lieving error-prone buffer management, including overrun, and providing a copy-on-write speed boost.148 For all three utilities, performance is argued to be on-par with, and occasionally surpassing relevant comparators.146 A linked-list utility is provided, which obviates many user-managed recursive pointers while catering directly to system-programming using intrusive linking. 147 Finally, a string utility is provided with implicit memory management of text in a specialized heap, removing error-prone buffer management, including overrun, and providing a copy-on-write speed boost. 148 For all three utilities, performance is argued to be on-par with, and occasionally surpassing, relevant comparators. 149 149 With the array, this case is made by showing complete erasure down to a naked C array, modulo runtime bound checks, which are removable more often than with Java-style length management. 150 With the linked list and string, empirical measures are compared with relevant libraries. 151 These utilities offer a system programmer workable alternatives to hand-rolling several common causes of system vulnerabilities, thereby improving \CFA's position as a safety-forward system-programming alternative. 150 With the linked list and string, empirical measures are compared with C and \CC comparable libraries. 151 These utilities offer programmers workable alternatives to hand-rolling specialized libraries, which is a huge safety benefit, eliminating many system vulnerabilities. 152 The results establish \CFA's position as a safety-forward programming alternative. 152 153 153 154 \cleardoublepage
Note:
See TracChangeset
for help on using the changeset viewer.