Changeset 7372065 for doc/theses/andrew_beach_MMath/future.tex
- Timestamp:
- Aug 21, 2021, 5:49:45 PM (22 months ago)
- Branches:
- ADT, enum, forall-pointer-decay, jacob/cs343-translation, master, pthread-emulation, qualifiedEnum
- Children:
- c2a9d88
- Parents:
- d8f8d08
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/theses/andrew_beach_MMath/future.tex
rd8f8d08 r7372065 2 2 \label{c:future} 3 3 4 The following discussion covers both missing language features that affected my5 work and research based improvements.6 7 4 \section{Language Improvements} 8 5 \todo{Future/Language Improvements seems to have gotten mixed up. It is 6 presented as ``waiting on language improvements" but really its more 7 non-research based impovements.} 9 8 \CFA is a developing programming language. As such, there are partially or 10 unimplemented features (including several broken components)11 that I had to workaround while building an EHMlargely in9 unimplemented features of the language (including several broken components) 10 that I had to workaround while building an exception handling system largely in 12 11 the \CFA language (some C components). The following are a few of these 13 12 issues, and once implemented/fixed, how they would affect the exception system. … … 15 14 \item 16 15 The implementation of termination is not portable because it includes 17 hand-crafted assembly statements for each architecture, where the 18 ARM processor was just added. 19 % The existing compilers cannot translate that for other platforms and those 20 % sections must be ported by hand to 21 Supporting more hardware architectures in a general way is important. 16 hand-crafted assembly statements. 17 The existing compilers cannot translate that for other platforms and those 18 sections must be ported by hand to 19 support more hardware architectures, such as the ARM processor. 22 20 \item 23 21 Due to a type-system problem, the catch clause cannot bind the exception to a … … 29 27 @return@, \etc. The reason is that current code generation hoists a handler 30 28 into a nested function for convenience (versus assemble-code generation at the 31 @try@ statement). Hence, when the handler runs, its can access local variable 32 in the lexical scope of the @try@ statement, but the closure does not capture 33 local control-flow points so it cannot perform non-local transfers in the 34 hoisted function. 29 @try@ statement). Hence, when the handler runs, its code is not in the lexical 30 scope of the @try@ statement, where the local control-flow transfers are 31 meaningful. 35 32 \item 36 33 There is no detection of colliding unwinds. It is possible for clean-up code 37 34 run during an unwind to trigger another unwind that escapes the clean-up code 38 35 itself; such as a termination exception caught further down the stack or a 39 cancellation. There do exist ways to handle this case, but currently there is no40 detection and the first unwind is simplyforgotten, often leaving36 cancellation. There do exist ways to handle this but currently they are not 37 even detected and the first unwind will simply be forgotten, often leaving 41 38 it in a bad state. 42 39 \item 43 Finally, the exception system has not have a lot programmer testing.44 More time with encouraged usage will reveal new45 quality of life upgrades that can be made .40 Also the exception system did not have a lot of time to be tried and tested. 41 So just letting people use the exception system more will reveal new 42 quality of life upgrades that can be made with time. 46 43 \end{itemize} 47 44 … … 50 47 project, but was thrust upon it to do exception inheritance; hence, only 51 48 minimal work is done. A draft for a complete virtual system is available but 52 not finalized. A future \CFA project is to complete that work and then49 it is not finalized. A future \CFA project is to complete that work and then 53 50 update the exception system that uses the current version. 54 51 … … 56 53 exception traits. The most important one is an assertion to check one virtual 57 54 type is a child of another. This check precisely captures many of the 58 c urrent ad-hoc correctness requirements.55 correctness requirements. 59 56 60 57 The full virtual system might also include other improvement like associated 61 58 types to allow traits to refer to types not listed in their header. This 62 59 feature allows exception traits to not refer to the virtual-table type 63 explicitly . %, removing the need for the current interface macros.60 explicitly, removing the need for the current interface macros. 64 61 65 62 \section{Additional Raises} … … 96 93 Checked exceptions make exceptions part of a function's type by adding an 97 94 exception signature. An exception signature must declare all checked 98 exceptions that could propagate from the function ,either because they were99 raised inside the function or a call to a sub-function. This improves safety95 exceptions that could propagate from the function (either because they were 96 raised inside the function or came from a sub-function). This improves safety 100 97 by making sure every checked exception is either handled or consciously 101 98 passed on. 102 99 103 100 However checked exceptions were never seriously considered for this project 104 because they have significant trade-offs in usab ility and code reuse in101 because they have significant trade-offs in usablity and code reuse in 105 102 exchange for the increased safety. 106 103 These trade-offs are most problematic when trying to pass exceptions through … … 132 129 not support a successful-exiting stack-search without doing an unwind. 133 130 Workarounds are possible but awkward. Ideally an extension to libunwind could 134 be made, but that would either require separate maintenance or gain ingenough135 support to have it folded into the code base.131 be made, but that would either require separate maintenance or gain enough 132 support to have it folded into the standard. 136 133 137 134 Also new techniques to skip previously searched parts of the stack need to be … … 161 158 to leave the handler. 162 159 Currently, mimicking this behaviour in \CFA is possible by throwing a 163 termination exceptioninside a resumption handler.160 termination inside a resumption handler. 164 161 165 162 % Maybe talk about the escape; and escape CONTROL_STMT; statements or how
Note: See TracChangeset
for help on using the changeset viewer.