Changeset 43b6516


Ignore:
Timestamp:
Mar 12, 2026, 11:51:06 AM (86 minutes ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
master
Parents:
a783c74
Message:

final pass of abstract

File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/theses/mike_brooks_MMath/uw-ethesis-frontpgs.tex

    ra783c74 r43b6516  
    6666Internal-External Member: \=  \kill % using longest text to define tab length
    6767External Examiner: \>  Bruce Bruce \\
    68 \> Professor, Dept. of Philosophy of Zoology, University of Wallamaloo \\
     68\> Professor, Dept. of Philosophy of Zoology, University of Waterloo \\
    6969\end{tabbing}
    7070  \bigskip
     
    134134These features are implemented across the \CFA compiler and runtime libraries.
    135135The results maintain another \CFA goal of offering strong backwards compatibility with C.
    136 This work leverages preexisting \CFA contributiongs of prior students working on the \CFA project, particularly through novel applications of the compiler's type system.
     136To achieve these goals, this work leverages preexisting \CFA contributions by prior students, particularly novel applications of the compiler's type system.
    137137
    138138All modern programming languages provide at least these three high-level containers (collections): array, linked-list, and string.
    139139Often, 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.
    140140For 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.
     141Unfortunately, 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.
     142Therefore, 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.
    143143
    144144Specifically, an array utility is provided that tracks length internally, relieving the user of managing explicit length parameters and stopping buffer-overrun errors.
    145145This 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, relieving 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.
     146A linked-list utility is provided, which obviates many user-managed recursive pointers while catering directly to system-programming using intrusive linking.
     147Finally, 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.
     148For all three utilities, performance is argued to be on-par with, and occasionally surpassing, relevant comparators.
    149149With 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.
     150With the linked list and string, empirical measures are compared with C and \CC comparable libraries.
     151These utilities offer programmers workable alternatives to hand-rolling specialized libraries, which is a huge safety benefit, eliminating many system vulnerabilities.
     152The results establish \CFA's position as a safety-forward programming alternative.
    152153
    153154\cleardoublepage
Note: See TracChangeset for help on using the changeset viewer.