Changeset 7f995d70


Ignore:
Timestamp:
Aug 12, 2025, 9:07:08 PM (5 weeks ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
master
Children:
499a45a
Parents:
6c58850
Message:

start abstract

File:
1 edited

Legend:

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

    r6c58850 r7f995d70  
    129129\begin{center}\textbf{Abstract}\end{center}
    130130
    131 This is the abstract.
     131All modern programming languages provide three high-level containers (collections): array, linked-list, and string.
     132Often array is part of the programming language, while linked-list is built from (recursive) pointer types, and string from a combination of array and linked-list.
     133For all three types, languages and/or their libraries supply varying degrees of high-level mechanisms for manipulating these objects at the bulk and component level, such as copying, slicing, extracting, and iterating among elements.
     134Unfortunately, these three aspects of C cause 60\%--70\% of the reported software vulnerabilities involved memory errors, and 70\%-80\% of hacker attack-vectors target these types.
     135Therefore, hardening these three C types goes a long way to make the majority of C programs safer.
     136
     137This work looks at extending these three foundational container types in the programming language \CFA, which is a new dialect of the C programming language.
     138The thesis describes improvements made to the \CFA language design, both syntax and semantics, to support the container features, and the source code created within the \CFA compiler, libraries, and runtime system to implement these features.
     139This work leverages preexisting work within the compiler's type and runtime systems generated by prior students working on the \CFA project.
     140
     141Overall, this work has produced significant syntactic and semantic improvements to C's container types.
     142\begin{enumerate}[leftmargin=*]
     143\item
     144Introduce a small number of subtle changes to the typing rules for the C array, while still achieving significant backwards compatibility
     145\item
     146Create a new polymorphic mechanism in the \CFA @forall@ clause to specify array dimension values, similar to a fixed-typed parameter in a \CC \lstinline[language=C++]{template}.
     147The new array type, enabled by prior features, defines an array with guaranteed runtime bound checks (often optimizer-removable) and implicit (guaranteed accurate) inter-function length communication.
     148\item
     149Create a new polymorphic list type and its runtime library following the established design pattern of intrusive link-fields for performance reasons, especially in concurrent programs.
     150\item
     151Create a new string type and runtime library comparable to the \CC @string@ type, including analogous coexistence with raw-character pointers, enabling programs to work with strings by value, without incurring excessive copying.
     152Substrings are supported, including the ability for overlapping ranges to share edits transparently.
     153\end{enumerate}
     154The thesis includes a performance evaluation that shows the \CFA containers perform comparably with their C counterparts in many programming cases.
    132155
    133156\cleardoublepage
Note: See TracChangeset for help on using the changeset viewer.