source: doc/theses/mike_brooks_MMath/uw-ethesis-frontpgs.tex@ 9a35b43

Last change on this file since 9a35b43 was 6224eeb, checked in by Michael Brooks <mlbrooks@…>, 29 hours ago

change to consistent "collection" over "container"

  • Property mode set to 100644
File size: 8.4 KB
Line 
1% T I T L E P A G E
2% -------------------
3% Last updated August 16, 2022, by IST-Client Services
4% The title page is counted as page `i' but we need to suppress the
5% page number. Also, we don't want any headers or footers.
6\pagestyle{empty}
7\pagenumbering{roman}
8
9% The contents of the title page are specified in the "titlepage"
10% environment.
11\begin{titlepage}
12 \begin{center}
13 \vspace*{1.0cm}
14
15 {\Huge\bf \CFA Collection Library}
16
17 \vspace*{1.0cm}
18
19 by \\
20
21 \vspace*{1.0cm}
22
23 {\Large Michael Leslie Brooks} \\
24
25 \vspace*{3.0cm}
26
27 A thesis \\
28 presented to the University of Waterloo \\
29 in fulfillment of the \\
30 thesis requirement for the degree of \\
31 Master of Mathematics \\
32 in \\
33 Computer Science \\
34
35 \vspace*{2.0cm}
36
37 Waterloo, Ontario, Canada, \the\year \\
38
39 \vspace*{1.0cm}
40
41 \copyright{} Michael Leslie Brooks \the\year \\
42 \end{center}
43\end{titlepage}
44
45% The rest of the front pages should contain no headers and be numbered using Roman numerals starting with `ii'
46\pagestyle{plain}
47\setcounter{page}{2}
48
49\cleardoublepage % Ends the current page and causes all figures and tables that have so far appeared in the input to be printed.
50% In a two-sided printing style, it also makes the next page a right-hand (odd-numbered) page, producing a blank page if necessary.
51\phantomsection % allows hyperref to link to the correct page
52
53\begin{comment}
54% E X A M I N I N G C O M M I T T E E (Required for Ph.D. theses only)
55% Remove or comment out the lines below to remove this page
56\addcontentsline{toc}{chapter}{Examining Committee}
57\begin{center}\textbf{Examining Committee Membership}\end{center}
58 \noindent
59The following served on the Examining Committee for this thesis. The decision of the Examining Committee is by majority vote.
60 \bigskip
61
62 \noindent
63\begin{tabbing}
64Internal-External Member: \= \kill % using longest text to define tab length
65External Examiner: \> Bruce Bruce \\
66\> Professor, Dept. of Philosophy of Zoology, University of Waterloo \\
67\end{tabbing}
68 \bigskip
69
70 \noindent
71\begin{tabbing}
72Internal-External Member: \= \kill % using longest text to define tab length
73Supervisor(s): \> Ann Elk \\
74\> Professor, Dept. of Zoology, University of Waterloo \\
75\> Andrea Anaconda \\
76\> Professor Emeritus, Dept. of Zoology, University of Waterloo \\
77\end{tabbing}
78 \bigskip
79
80 \noindent
81 \begin{tabbing}
82Internal-External Member: \= \kill % using longest text to define tab length
83Internal Member: \> Pamela Python \\
84\> Professor, Dept. of Zoology, University of Waterloo \\
85\end{tabbing}
86 \bigskip
87
88 \noindent
89\begin{tabbing}
90Internal-External Member: \= \kill % using longest text to define tab length
91Internal-External Member: \> Meta Meta \\
92\> Professor, Dept. of Philosophy, University of Waterloo \\
93\end{tabbing}
94 \bigskip
95
96 \noindent
97\begin{tabbing}
98Internal-External Member: \= \kill % using longest text to define tab length
99Other Member(s): \> Leeping Fang \\
100\> Professor, Dept. of Fine Art, University of Waterloo \\
101\end{tabbing}
102
103\cleardoublepage
104\end{comment}
105
106% D E C L A R A T I O N P A G E
107% -------------------------------
108 % The following is a sample Declaration Page as provided by the GSO
109 % December 13th, 2006. It is designed for an electronic thesis.
110 \addcontentsline{toc}{chapter}{Author's Declaration}
111 \begin{center}\textbf{Author's Declaration}\end{center}
112
113 \noindent
114I hereby declare that I am the sole author of this thesis. This is a true copy of the thesis, including any required final revisions, as accepted by my examiners.
115
116 \bigskip
117
118 \noindent
119I understand that my thesis may be made electronically available to the public.
120
121\cleardoublepage
122\phantomsection % allows hyperref to link to the correct page
123
124% A B S T R A C T
125% ---------------
126\addcontentsline{toc}{chapter}{Abstract}
127\begin{center}\textbf{Abstract}\end{center}
128
129\CFA strives to fix issues in C, chief among them safety.
130This thesis presents a significant step forward in \CFA's goal to remove unsafe pointer operations.
131It describes improvements to the \CFA language design to support advanced collection features.
132These features are implemented across the \CFA compiler and runtime libraries.
133The results maintain another \CFA goal of offering strong backwards compatibility with C.
134To achieve these goals, this work leverages preexisting \CFA contributions by prior students, particularly novel applications of the compiler's type system.
135
136All modern programming languages provide these three high-level collections (containers): array, linked-list, and string.
137Often, 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.
138For 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.
139Unfortunately, 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.
140Therefore, 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.
141
142Specifically, an array is provided that tracks its length internally, relieving the user and implementor from managing explicit length arguments/parameters and stopping buffer-overrun errors.
143This feature requires augmenting the \CFA type system, making array length available at compile and runtime.
144A linked-list utility is provided that obviates many user-managed recursive pointers, while catering directly to system-programming using intrusive linking.
145Finally, 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.
146For all three utilities, performance is argued to be on-par or surpass those in other comparable languages.
147With 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.
148With the linked list and string, empirical measures are compared with C and \CC comparable libraries.
149These collections offer programmers workable alternatives to hand-rolling specialized libraries, which is a huge safety benefit, eliminating many system vulnerabilities.
150The results establish \CFA's position as a safety-forward programming alternative.
151
152\cleardoublepage
153\phantomsection % allows hyperref to link to the correct page
154
155% A C K N O W L E D G E M E N T S
156% -------------------------------
157\addcontentsline{toc}{chapter}{Acknowledgements}
158\begin{center}\textbf{Acknowledgements}\end{center}
159
160I would like to thank all the little people who made this thesis possible.
161
162Finally, a special thank you to Huawei Canada for funding this work.
163\cleardoublepage
164\phantomsection % allows hyperref to link to the correct page
165
166\begin{comment}
167% D E D I C A T I O N
168% -------------------
169\addcontentsline{toc}{chapter}{Dedication}
170\begin{center}\textbf{Dedication}\end{center}
171
172This is dedicated to the one I love.
173\cleardoublepage
174\end{comment}
175
176% T A B L E O F C O N T E N T S
177% ---------------------------------
178\renewcommand\contentsname{Table of Contents}
179\tableofcontents
180\cleardoublepage
181\phantomsection % allows hyperref to link to the correct page
182
183% L I S T O F F I G U R E S
184% -----------------------------
185\addcontentsline{toc}{chapter}{List of Figures}
186\listoffigures
187\cleardoublepage
188\phantomsection % allows hyperref to link to the correct page
189
190% L I S T O F T A B L E S
191% ---------------------------
192\addcontentsline{toc}{chapter}{List of Tables}
193\listoftables
194\cleardoublepage
195\phantomsection % allows hyperref to link to the correct page
196
197\begin{comment}
198% L I S T O F A B B R E V I A T I O N S
199% ---------------------------
200\renewcommand*{\abbreviationsname}{List of Abbreviations}
201\printglossary[type=abbreviations]
202\cleardoublepage
203\phantomsection % allows hyperref to link to the correct page
204
205% L I S T O F S Y M B O L S
206% ---------------------------
207\printglossary[type=symbols]
208\cleardoublepage
209\phantomsection % allows hyperref to link to the correct page
210\end{comment}
211
212% Change page numbering back to Arabic numerals
213\pagenumbering{arabic}
Note: See TracBrowser for help on using the repository browser.