1 | \chapter{Introduction}
|
---|
2 |
|
---|
3 | \PAB{Stay in the present tense. \newline
|
---|
4 | \url{https://plg.uwaterloo.ca/~pabuhr/technicalWriting.shtml}}
|
---|
5 | \newline
|
---|
6 | \PAB{Note, \lstinline{lstlisting} normally bolds keywords. None of the keywords in your thesis are bolded.}
|
---|
7 |
|
---|
8 | % Talk about Cforall and exceptions generally.
|
---|
9 | %This thesis goes over the design and implementation of the exception handling
|
---|
10 | %mechanism (EHM) of
|
---|
11 | %\CFA (pernounced sea-for-all and may be written Cforall or CFA).
|
---|
12 | Exception handling provides alternative dynamic inter-function control flow.
|
---|
13 | There are two forms of exception handling covered in this thesis:
|
---|
14 | termination, which acts as a multi-level return,
|
---|
15 | and resumption, which is a dynamic function call.
|
---|
16 | Note, termination exception handling is so common it is often assumed to be the only form.
|
---|
17 | Lesser know derivations of inter-function control flow are continuation passing in Lisp~\cite{CommonLisp}.
|
---|
18 |
|
---|
19 | Termination exception handling allows control to return to any previous
|
---|
20 | function on the stack directly, skipping any functions between it and the
|
---|
21 | current function.
|
---|
22 | \begin{center}
|
---|
23 | \input{callreturn}
|
---|
24 | \end{center}
|
---|
25 |
|
---|
26 | Resumption exception handling calls a function, but asks the functions on the
|
---|
27 | stack what function that is.
|
---|
28 | \todo{Add a diagram showing control flow for resumption.}
|
---|
29 |
|
---|
30 | Although a powerful feature, exception handling tends to be complex to set up
|
---|
31 | and expensive to use
|
---|
32 | so they are often limited to unusual or ``exceptional" cases.
|
---|
33 | The classic example of this is error handling, exceptions can be used to
|
---|
34 | remove error handling logic from the main execution path and while paying
|
---|
35 | most of the cost only when the error actually occurs.
|
---|
36 |
|
---|
37 | % Overview of exceptions in Cforall.
|
---|
38 |
|
---|
39 | \PAB{You need section titles here. Don't take them out.}
|
---|
40 |
|
---|
41 | \section{Thesis Overview}
|
---|
42 |
|
---|
43 | This thesis goes over the design and implementation of the exception handling
|
---|
44 | mechanism (EHM) of
|
---|
45 | \CFA (pernounced sea-for-all and may be written Cforall or CFA).
|
---|
46 | %This thesis describes the design and implementation of the \CFA EHM.
|
---|
47 | The \CFA EHM implements all of the common exception features (or an
|
---|
48 | equivalent) found in most other EHMs and adds some features of its own.
|
---|
49 | The design of all the features had to be adapted to \CFA's feature set as
|
---|
50 | some of the underlying tools used to implement and express exception handling
|
---|
51 | in other languages are absent in \CFA.
|
---|
52 | Still the resulting syntax resembles that of other languages:
|
---|
53 | \begin{cfa}
|
---|
54 | try {
|
---|
55 | ...
|
---|
56 | T * object = malloc(request_size);
|
---|
57 | if (!object) {
|
---|
58 | throw OutOfMemory{fixed_allocation, request_size};
|
---|
59 | }
|
---|
60 | ...
|
---|
61 | } catch (OutOfMemory * error) {
|
---|
62 | ...
|
---|
63 | }
|
---|
64 | \end{cfa}
|
---|
65 |
|
---|
66 | % A note that yes, that was a very fast overview.
|
---|
67 | The design and implementation of all of \CFA's EHM's features are
|
---|
68 | described in detail throughout this thesis, whether they are a common feature
|
---|
69 | or one unique to \CFA.
|
---|
70 |
|
---|
71 | % The current state of the project and what it contributes.
|
---|
72 | All of these features have been implemented in \CFA, along with
|
---|
73 | a suite of test cases as part of this project.
|
---|
74 | The implementation techniques are generally applicable in other programming
|
---|
75 | languages and much of the design is as well.
|
---|
76 | Some parts of the EHM use other features unique to \CFA and these would be
|
---|
77 | harder to replicate in other programming languages.
|
---|
78 |
|
---|
79 | \section{Background}
|
---|
80 |
|
---|
81 | % Talk about other programming languages.
|
---|
82 | Some existing programming languages that include EHMs/exception handling
|
---|
83 | include C++, Java and Python. All three examples focus on termination
|
---|
84 | exceptions which unwind the stack as part of the
|
---|
85 | Exceptions also can replace return codes and return unions.
|
---|
86 | In functional languages will also sometimes fold exceptions into monads.
|
---|
87 |
|
---|
88 | \PAB{You must demonstrate knowledge of background material here.
|
---|
89 | It should be at least a full page.}
|
---|
90 |
|
---|
91 | \section{Contributions}
|
---|
92 |
|
---|
93 | The contributions of this work are:
|
---|
94 | \begin{enumerate}
|
---|
95 | \item Designing \CFA's exception handling mechanism, adapting designs from
|
---|
96 | other programming languages and the creation of new features.
|
---|
97 | \item Implementing stack unwinding and the EHM in \CFA, including updating
|
---|
98 | the compiler and the run-time environment.
|
---|
99 | \item Designed and implemented a prototype virtual system.
|
---|
100 | % I think the virtual system and per-call site default handlers are the only
|
---|
101 | % "new" features, everything else is a matter of implementation.
|
---|
102 | \end{enumerate}
|
---|
103 |
|
---|
104 | \todo{I can't figure out a good lead-in to the overview.}
|
---|
105 | Covering the existing \CFA features in \autoref{c:existing}.
|
---|
106 | Then the new features are introduce in \autoref{c:features}, explaining their
|
---|
107 | usage and design.
|
---|
108 | That is followed by the implementation of those features in
|
---|
109 | \autoref{c:implement}.
|
---|
110 | % Future Work \autoref{c:future}
|
---|