Changeset eaeca5f for doc/theses/andrew_beach_MMath/future.tex
- Timestamp:
- Aug 29, 2021, 11:46:13 AM (3 years ago)
- Branches:
- ADT, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, pthread-emulation, qualifiedEnum
- Children:
- 75f8e04
- Parents:
- 1d402be (diff), cfbab07 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/theses/andrew_beach_MMath/future.tex
r1d402be reaeca5f 2 2 \label{c:future} 3 3 4 The following discussion covers both missing language features that affected my 5 work and research based improvements. 4 The following discussion covers both possible interesting research 5 that could follow from this work as long as simple implementation 6 improvements. 6 7 7 8 \section{Language Improvements} … … 9 10 \CFA is a developing programming language. As such, there are partially or 10 11 unimplemented features (including several broken components) 11 that I had to workaround while building an EHM largely in 12 the \CFA language (some C components). The following are a few of these 13 issues, and once implemented/fixed, how they would affect the exception system. 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. 14 17 \begin{itemize} 15 \item16 The implementation of termination is not portable because it includes17 hand-crafted assembly statements for each architecture, where the18 ARM processor was just added.19 % The existing compilers cannot translate that for other platforms and those20 % sections must be ported by hand to21 Supporting more hardware architectures in a general way is important.22 18 \item 23 19 Due to a type-system problem, the catch clause cannot bind the exception to a … … 29 25 @return@, \etc. The reason is that current code generation hoists a handler 30 26 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. 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. 35 35 \item 36 36 There is no detection of colliding unwinds. It is possible for clean-up code 37 37 run during an unwind to trigger another unwind that escapes the clean-up code 38 38 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 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 41 41 it in a bad state. 42 42 \item 43 Finally, the exception system has not ha ve a lotprogrammer testing.43 Finally, the exception system has not had a lot of programmer testing. 44 44 More time with encouraged usage will reveal new 45 45 quality of life upgrades that can be made. … … 50 50 project, but was thrust upon it to do exception inheritance; hence, only 51 51 minimal work is done. A draft for a complete virtual system is available but 52 not finalized. 52 not finalized. A future \CFA project is to complete that work and then 53 53 update the exception system that uses the current version. 54 54 … … 61 61 types to allow traits to refer to types not listed in their header. This 62 62 feature allows exception traits to not refer to the virtual-table type 63 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@. 64 65 65 66 \section{Additional Raises} … … 77 78 Non-local/concurrent raise requires more 78 79 coordination between the concurrency system 79 and the exception system. Many of the interesting design decisions cent re80 and the exception system. Many of the interesting design decisions center 80 81 around masking, \ie controlling which exceptions may be thrown at a stack. It 81 82 would likely require more of the virtual system and would also effect how … … 97 98 exception signature. An exception signature must declare all checked 98 99 exceptions that could propagate from the function, either because they were 99 raised inside the function or a call toa sub-function. This improves safety100 raised inside the function or came from a sub-function. This improves safety 100 101 by making sure every checked exception is either handled or consciously 101 102 passed on. … … 133 134 Workarounds are possible but awkward. Ideally an extension to libunwind could 134 135 be made, but that would either require separate maintenance or gaining enough 135 support to have it folded into the code base.136 support to have it folded into the official library itself. 136 137 137 138 Also new techniques to skip previously searched parts of the stack need to be
Note: See TracChangeset
for help on using the changeset viewer.