Changeset 9cd37d9 for doc/theses/andrew_beach_MMath/future.tex
- Timestamp:
- Aug 23, 2021, 1:58:44 PM (3 years ago)
- Branches:
- ADT, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, pthread-emulation, qualifiedEnum
- Children:
- ba2e8f0
- Parents:
- c2a9d88
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/theses/andrew_beach_MMath/future.tex
rc2a9d88 r9cd37d9 2 2 \label{c:future} 3 3 4 The following discussion covers both possible interesting research 5 that could follow from this work as long as simple implementation 6 improvements. 7 4 8 \section{Language Improvements} 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 10 \CFA is a developing programming language. As such, there are partially or 9 unimplemented features of the language (including several broken components) 10 that I had to workaround while building an exception handling system largely in 11 the \CFA language (some C components). The following are a few of these 12 issues, and once implemented/fixed, how they would affect the exception system. 11 unimplemented features (including several broken components) 12 that I had to workaround while building the EHM largely in 13 the \CFA language (some C components). Below are a few of these issues 14 and how implementing/fixing them would affect the EHM. 15 In addition there are some simple improvements that had no interesting 16 research attached to them but would make using the language easier. 13 17 \begin{itemize} 14 \item15 The implementation of termination is not portable because it includes16 hand-crafted assembly statements.17 The existing compilers cannot translate that for other platforms and those18 sections must be ported by hand to19 support more hardware architectures, such as the ARM processor.20 18 \item 21 19 Due to a type-system problem, the catch clause cannot bind the exception to a … … 27 25 @return@, \etc. The reason is that current code generation hoists a handler 28 26 into a nested function for convenience (versus assemble-code generation at the 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. 27 try statement). Hence, when the handler runs, it can still access local 28 variables in the lexical scope of the try statement. Still, it does mean 29 that seemingly local control flow is not in fact local and crosses a function 30 boundary. 31 Making the termination handlers code within the surrounding 32 function would remove this limitation. 33 % Try blocks are much more difficult to do practically (requires our own 34 % assembly) and resumption handlers have some theoretical complexity. 32 35 \item 33 36 There is no detection of colliding unwinds. It is possible for clean-up code 34 37 run during an unwind to trigger another unwind that escapes the clean-up code 35 38 itself; such as a termination exception caught further down the stack or a 36 cancellation. There do exist ways to handle this but currently they are not37 even detectedand the first unwind will simply be forgotten, often leaving39 cancellation. There do exist ways to handle this case, but currently there is 40 no detection and the first unwind will simply be forgotten, often leaving 38 41 it in a bad state. 39 42 \item 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 new42 quality of life upgrades that can be made with time.43 Finally, the exception system has not had a lot of programmer testing. 44 More time with encouraged usage will reveal new 45 quality of life upgrades that can be made. 43 46 \end{itemize} 44 47 … … 47 50 project, but was thrust upon it to do exception inheritance; hence, only 48 51 minimal work is done. A draft for a complete virtual system is available but 49 it is not finalized.A future \CFA project is to complete that work and then52 not finalized. A future \CFA project is to complete that work and then 50 53 update the exception system that uses the current version. 51 54 … … 53 56 exception traits. The most important one is an assertion to check one virtual 54 57 type is a child of another. This check precisely captures many of the 55 c orrectness requirements.58 current ad-hoc correctness requirements. 56 59 57 60 The full virtual system might also include other improvement like associated 58 61 types to allow traits to refer to types not listed in their header. This 59 62 feature allows exception traits to not refer to the virtual-table type 60 explicitly, removing the need for the current interface macros. 63 explicitly, removing the need for the current interface macros, 64 such as @EHM_IS_EXCEPTION@. 61 65 62 66 \section{Additional Raises} … … 74 78 Non-local/concurrent raise requires more 75 79 coordination between the concurrency system 76 and the exception system. Many of the interesting design decisions cent re80 and the exception system. Many of the interesting design decisions center 77 81 around masking, \ie controlling which exceptions may be thrown at a stack. It 78 82 would likely require more of the virtual system and would also effect how … … 93 97 Checked exceptions make exceptions part of a function's type by adding an 94 98 exception signature. An exception signature must declare all checked 95 exceptions that could propagate from the function (either because they were96 raised inside the function or came from a sub-function ). This improves safety99 exceptions that could propagate from the function, either because they were 100 raised inside the function or came from a sub-function. This improves safety 97 101 by making sure every checked exception is either handled or consciously 98 102 passed on. 99 103 100 104 However checked exceptions were never seriously considered for this project 101 because they have significant trade-offs in usab lity and code reuse in105 because they have significant trade-offs in usability and code reuse in 102 106 exchange for the increased safety. 103 107 These trade-offs are most problematic when trying to pass exceptions through … … 129 133 not support a successful-exiting stack-search without doing an unwind. 130 134 Workarounds are possible but awkward. Ideally an extension to libunwind could 131 be made, but that would either require separate maintenance or gain enough132 support to have it folded into the standard.135 be made, but that would either require separate maintenance or gaining enough 136 support to have it folded into the official library itself. 133 137 134 138 Also new techniques to skip previously searched parts of the stack need to be … … 158 162 to leave the handler. 159 163 Currently, mimicking this behaviour in \CFA is possible by throwing a 160 termination inside a resumption handler.164 termination exception inside a resumption handler. 161 165 162 166 % Maybe talk about the escape; and escape CONTROL_STMT; statements or how
Note: See TracChangeset
for help on using the changeset viewer.