Ignore:
Timestamp:
Aug 29, 2021, 11:46:13 AM (3 years ago)
Author:
Andrew Beach <ajbeach@…>
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.
Message:

Merge branch 'andrew-mmath' into 'master', latest round of updates to the thesis.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/theses/andrew_beach_MMath/future.tex

    r1d402be reaeca5f  
    22\label{c:future}
    33
    4 The following discussion covers both missing language features that affected my
    5 work and research based improvements.
     4The following discussion covers both possible interesting research
     5that could follow from this work as long as simple implementation
     6improvements.
    67
    78\section{Language Improvements}
     
    910\CFA is a developing programming language. As such, there are partially or
    1011unimplemented 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.
     12that I had to workaround while building the EHM largely in
     13the \CFA language (some C components). Below are a few of these issues
     14and how implementing/fixing them would affect the EHM.
     15In addition there are some simple improvements that had no interesting
     16research attached to them but would make using the language easier.
    1417\begin{itemize}
    15 \item
    16 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.
    2218\item
    2319Due to a type-system problem, the catch clause cannot bind the exception to a
     
    2925@return@, \etc. The reason is that current code generation hoists a handler
    3026into 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.
     27try statement). Hence, when the handler runs, it can still access local
     28variables in the lexical scope of the try statement. Still, it does mean
     29that seemingly local control flow is not in fact local and crosses a function
     30boundary.
     31Making the termination handlers code within the surrounding
     32function 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.
    3535\item
    3636There is no detection of colliding unwinds. It is possible for clean-up code
    3737run during an unwind to trigger another unwind that escapes the clean-up code
    3838itself; 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 no
    40 detection and the first unwind is simply forgotten, often leaving
     39cancellation. There do exist ways to handle this case, but currently there is
     40no detection and the first unwind will simply be forgotten, often leaving
    4141it in a bad state.
    4242\item
    43 Finally, the exception system has not have a lot programmer testing.
     43Finally, the exception system has not had a lot of programmer testing.
    4444More time with encouraged usage will reveal new
    4545quality of life upgrades that can be made.
     
    5050project, but was thrust upon it to do exception inheritance; hence, only
    5151minimal 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 then
     52not finalized. A future \CFA project is to complete that work and then
    5353update the exception system that uses the current version.
    5454
     
    6161types to allow traits to refer to types not listed in their header. This
    6262feature allows exception traits to not refer to the virtual-table type
    63 explicitly. %, removing the need for the current interface macros.
     63explicitly, removing the need for the current interface macros,
     64such as @EHM_IS_EXCEPTION@.
    6465
    6566\section{Additional Raises}
     
    7778Non-local/concurrent raise requires more
    7879coordination between the concurrency system
    79 and the exception system. Many of the interesting design decisions centre
     80and the exception system. Many of the interesting design decisions center
    8081around masking, \ie controlling which exceptions may be thrown at a stack. It
    8182would likely require more of the virtual system and would also effect how
     
    9798exception signature. An exception signature must declare all checked
    9899exceptions that could propagate from the function, either because they were
    99 raised inside the function or a call to a sub-function. This improves safety
     100raised inside the function or came from a sub-function. This improves safety
    100101by making sure every checked exception is either handled or consciously
    101102passed on.
     
    133134Workarounds are possible but awkward. Ideally an extension to libunwind could
    134135be made, but that would either require separate maintenance or gaining enough
    135 support to have it folded into the code base.
     136support to have it folded into the official library itself.
    136137
    137138Also new techniques to skip previously searched parts of the stack need to be
Note: See TracChangeset for help on using the changeset viewer.