Ignore:
Timestamp:
Apr 24, 2025, 6:35:41 PM (5 months ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
master
Children:
6b33e89, f85de47
Parents:
f632bd50
Message:

proofreading intro and background chapters, capitalize section titles, update backtick calls to regular calls

File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/theses/mike_brooks_MMath/array.tex

    rf632bd50 rb195498  
    9090
    9191
    92 \section{Dependent typing}
     92\section{Dependent Typing}
    9393
    9494General dependent typing allows the type system to encode arbitrary predicates (\eg behavioural specifications for functions),
     
    103103
    104104
    105 \section{Features added}
     105\section{Features Added}
    106106
    107107This section shows more about using the \CFA array and dimension parameters, demonstrating their syntax and semantics by way of motivating examples.
     
    782782
    783783
    784 Figure~\ref{f:DimexprRuleCompare} gives a case-by-case comparison of the consequences of these rule sets.
     784\VRef[Figure]{f:DimexprRuleCompare} gives a case-by-case comparison of the consequences of these rule sets.
    785785It demonstrates that the \CFA false alarms occur in the same cases as C treats unsafe.
    786786It also shows that C-incompatibilities only occur in cases that C treats unsafe.
     
    859859
    860860
    861 \section{Multidimensional array implementation}
     861\section{Multidimensional Array Implementation}
    862862\label{s:ArrayMdImpl}
    863863
     
    978978\end{figure}
    979979
    980 Figure~\ref{fig:subscr-all} shows one element (in the shaded band) accessed two different ways: as @x[2][3]@ and as @x[all][3][2]@.
     980\VRef[Figure]{fig:subscr-all} shows one element (in the shaded band) accessed two different ways: as @x[2][3]@ and as @x[all][3][2]@.
    981981In both cases, value 2 selects from the coarser dimension (rows of @x@),
    982982while the value 3 selects from the finer dimension (columns of @x@).
     
    10241024% The choice to implement this style-1 system upon C's style-2 arrays, rather than its style-3 pointer arithmetic, reduces the attack surface of unsafe code.
    10251025% My casting is unsafe, but I do not do any pointer arithmetic.
    1026 % When a programmer works in the common-case style-2 subset (in the no-@[all]@ top of Figure~\ref{fig:subscr-all}), my casts are identities, and the C compiler is doing its usual displacement calculations.
     1026% When a programmer works in the common-case style-2 subset (in the no-@[all]@ top of \VRef[Figure]{fig:subscr-all}), my casts are identities, and the C compiler is doing its usual displacement calculations.
    10271027% If I had implemented my system upon style-3 pointer arithmetic, then this common case would be circumventing C's battle-hardened displacement calculations in favour of my own.
    10281028
     
    10671067
    10681068
    1069 \section{Bound checks, added and removed}
     1069\section{Bound Checks, Added and Removed}
    10701070
    10711071\CFA array subscripting is protected with runtime bound checks.
     
    10891089
    10901090
    1091 \section{Array lifecycle}
     1091\section{Array Lifecycle}
    10921092
    10931093An array is an aggregate, like a structure;
     
    13411341% note to Mike, I have more fragments on some details available in push24\fragments\uNoCtor.txt
    13421342
    1343 \section{Comparison with other arrays}
     1343\section{Comparison with Other Arrays}
    13441344
    13451345
     
    14571457
    14581458
    1459 \subsection{Levels of dependently typed arrays}
     1459\subsection{Levels of Dependently Typed Arrays}
    14601460
    14611461The \CFA array and the field of ``array language'' comparators all leverage dependent types to improve on the expressiveness over C and Java, accommodating examples such as:
     
    15041504Having no instances means there is no type for a variable @i@ that constrains @i@ to be in the range for @N@, unlike Dex, [TODO: verify], but like Futhark.
    15051505
    1506 \subsection{Static safety in C extensions}
    1507 
    1508 
    1509 \section{Future work}
    1510 
    1511 \subsection{Declaration syntax}
    1512 
    1513 \subsection{Range slicing}
    1514 
    1515 \subsection{With a module system}
    1516 
    1517 \subsection{With described enumerations}
     1506\subsection{Static Safety in C Extensions}
     1507
     1508
     1509\section{Future Work}
     1510
     1511\subsection{Declaration Syntax}
     1512
     1513\subsection{Range Slicing}
     1514
     1515\subsection{With a Module System}
     1516
     1517\subsection{With Described Enumerations}
    15181518
    15191519A project in \CFA's current portfolio will improve enumerations.
     
    16021602In the case of adapting this pattern to \CFA, my current work provides an adapter from ``successively subscripted'' to ``subscripted by tuple,'' so it is likely that generalizing my adapter beyond ``subscripted by @ptrdiff_t@'' is sufficient to make a user-provided adapter unnecessary.
    16031603
    1604 \subsection{Retire pointer arithmetic}
     1604\subsection{Retire Pointer Arithmetic}
    16051605
    16061606
     
    16141614(For later:  That's what I offer with array.hfa, but in the future-work vision for arrays, the fix includes helping programmers stop accidentally using a broken C-ism.)
    16151615
    1616 \subsection{\CFA features interacting with arrays}
     1616\subsection{\CFA Features Interacting with Arrays}
    16171617
    16181618Prior work on \CFA included making C arrays, as used in C code from the wild,
Note: See TracChangeset for help on using the changeset viewer.