Changeset 7620e5d


Ignore:
Timestamp:
Aug 19, 2021, 3:36:35 PM (3 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, pthread-emulation, qualifiedEnum
Children:
315e5e3
Parents:
fe8aa21
Message:

proofread future chapter

File:
1 edited

Legend:

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

    rfe8aa21 r7620e5d  
    22\label{c:future}
    33
     4The following discussion covers both missing language features that affected my
     5work and research based improvements.
     6
    47\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.}
     8
    89\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
     10unimplemented features (including several broken components)
     11that I had to workaround while building an EHM largely in
    1112the \CFA language (some C components).  The following are a few of these
    1213issues, and once implemented/fixed, how they would affect the exception system.
     
    1415\item
    1516The implementation of termination is not portable because it includes
    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.
     17hand-crafted assembly statements for each architecture, where the
     18ARM processor was just added.
     19% The existing compilers cannot translate that for other platforms and those
     20% sections must be ported by hand to
     21Supporting more hardware architectures in a general way is important.
    2022\item
    2123Due to a type-system problem, the catch clause cannot bind the exception to a
     
    2729@return@, \etc. The reason is that current code generation hoists a handler
    2830into 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.
     31@try@ statement). Hence, when the handler runs, its can access local variable
     32in the lexical scope of the @try@ statement, but the closure does not capture
     33local control-flow points so it cannot perform non-local transfers in the
     34hoisted function.
    3235\item
    3336There is no detection of colliding unwinds. It is possible for clean-up code
    3437run during an unwind to trigger another unwind that escapes the clean-up code
    3538itself; 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 not
    37 even detected and the first unwind will simply be forgotten, often leaving
     39cancellation. There do exist ways to handle this case, but currently there is no
     40detection and the first unwind is simply forgotten, often leaving
    3841it in a bad state.
    3942\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 new
    42 quality of life upgrades that can be made with time.
     43Finally, the exception system has not have a lot programmer testing.
     44More time with encouraged usage will reveal new
     45quality of life upgrades that can be made.
    4346\end{itemize}
    4447
     
    4750project, but was thrust upon it to do exception inheritance; hence, only
    4851minimal 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 then
     52not finalized.  A future \CFA project is to complete that work and then
    5053update the exception system that uses the current version.
    5154
     
    5356exception traits. The most important one is an assertion to check one virtual
    5457type is a child of another. This check precisely captures many of the
    55 correctness requirements.
     58current ad-hoc correctness requirements.
    5659
    5760The full virtual system might also include other improvement like associated
    5861types to allow traits to refer to types not listed in their header. This
    5962feature allows exception traits to not refer to the virtual-table type
    60 explicitly, removing the need for the current interface macros.
     63explicitly. %, removing the need for the current interface macros.
    6164
    6265\section{Additional Raises}
     
    9396Checked exceptions make exceptions part of a function's type by adding an
    9497exception signature. An exception signature must declare all checked
    95 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
     98exceptions that could propagate from the function, either because they were
     99raised inside the function or a call to a sub-function. This improves safety
    97100by making sure every checked exception is either handled or consciously
    98101passed on.
    99102
    100103However checked exceptions were never seriously considered for this project
    101 because they have significant trade-offs in usablity and code reuse in
     104because they have significant trade-offs in usability and code reuse in
    102105exchange for the increased safety.
    103106These trade-offs are most problematic when trying to pass exceptions through
     
    129132not support a successful-exiting stack-search without doing an unwind.
    130133Workarounds are possible but awkward. Ideally an extension to libunwind could
    131 be made, but that would either require separate maintenance or gain enough
    132 support to have it folded into the standard.
     134be made, but that would either require separate maintenance or gaining enough
     135support to have it folded into the code base.
    133136
    134137Also new techniques to skip previously searched parts of the stack need to be
     
    158161to leave the handler.
    159162Currently, mimicking this behaviour in \CFA is possible by throwing a
    160 termination inside a resumption handler.
     163termination exception inside a resumption handler.
    161164
    162165% Maybe talk about the escape; and escape CONTROL_STMT; statements or how
Note: See TracChangeset for help on using the changeset viewer.