Index: .gitignore
===================================================================
--- .gitignore	(revision 69d17484515f7e3df1c7e777114ed4c355538be3)
+++ .gitignore	(revision 7c9ac4af78fda11cf4e9558899fd4764524f22f5)
@@ -48,11 +48,8 @@
 libcfa/x64-debug/
 libcfa/x64-nodebug/
-libcfa/x64-nolib/
 libcfa/x86-debug/
 libcfa/x86-nodebug/
-libcfa/x86-nolib/
-libcfa/arm-debug/
-libcfa/arm-nodebug/
-libcfa/arm-nolib/
+libcfa/arm64-debug/
+libcfa/arm64-nodebug/
 
 # generated by bison and lex from parser.yy and lex.ll
Index: doc/theses/andrew_beach_MMath/cfalab.sty
===================================================================
--- doc/theses/andrew_beach_MMath/cfalab.sty	(revision 69d17484515f7e3df1c7e777114ed4c355538be3)
+++ doc/theses/andrew_beach_MMath/cfalab.sty	(revision 7c9ac4af78fda11cf4e9558899fd4764524f22f5)
@@ -72,3 +72,13 @@
     \renewcommand\textunderscore{\csuse{cfalab@textunderscore@#1}}}
 
+% This is executed very early in the \begin{document} code.
+\AtEndPreamble{
+  \@ifpackageloaded{hyperref}{
+    % Convert symbols to pdf compatable forms when required.
+    \pdfstringdefDisableCommands{
+      \def\CFA{CFA}
+    }
+  }{}
+}
+
 \endinput
Index: doc/theses/andrew_beach_MMath/future.tex
===================================================================
--- doc/theses/andrew_beach_MMath/future.tex	(revision 7c9ac4af78fda11cf4e9558899fd4764524f22f5)
+++ doc/theses/andrew_beach_MMath/future.tex	(revision 7c9ac4af78fda11cf4e9558899fd4764524f22f5)
@@ -0,0 +1,100 @@
+\chapter{Future Work}
+
+\section{Complete Virtual System}
+The virtual system should be completed. It was never supposed to be part of
+this project and so minimal work was done on it. A draft of what the complete
+system might look like was created but it was never finalized or implemented.
+A future project in \CFA would be to complete that work and to update the
+parts of the exception system that use the current version.
+
+For instance a full virtual system would probably allow for several
+improvements to the exception traits. Although they do currently work they
+could be made easier to use by making the virtual table type implitate in the
+trait (which would remove the need for those wrapper marcos) or allowing
+for assertions that give the layout of a virtual table for safety.
+
+\section{Additional Throws}
+Several other kinds of throws, beyond the termination throw (\codeCFA{throw}),
+the resumption throw (\codeCFA{throwResume}) and the re-throws, were considered.
+None were as useful as the core throws but they would likely be worth
+revising.
+
+The first ones are throws for asynchronous exceptions, throwing exceptions
+from one stack to another. These act like signals allowing for communication
+between the stacks. This is usually used with resumption as it allows the
+target stack to continue execution normally after the exception has been
+handled.
+
+This would much more coordination between the concurrency system and the
+exception system to handle. Most of the interesting design decisions around
+applying asynchronous exceptions appear to be around masking (controlling
+which exceptions may be thrown at a stack). It would likely require more of
+the virtual system and would also effect how default handlers are set.
+
+The other throws were designed to mimic bidirectional algebraic effects.
+Algebraic effects are used in some functional languages and allow a function
+to have another function on the stack resolve an effect (which is defined with
+a function-like interface).
+These can be mimiced with resumptions and the the new throws were designed
+to try and mimic bidirectional algebraic effects, where control can go back
+and forth between the function effect caller and handler while the effect
+is underway.
+% resume-top & resume-reply
+
+These throws would likely be just like the resumption throw except they would
+use different search patterns to find the handler to reply to.
+
+\section{Zero-Cost Exceptions}
+\CFA does not have zero-cost exceptions because it does not generate assembly
+but instead generates C code. See the implementation section. When the
+compiler does start to create its own assembly (or LLVM byte code) then
+zero-cost exceptions could be implemented.
+
+Now in zero-cost exceptions the only part that is zero-cost are the try
+blocks. Some research could be done into the alternative methods for systems
+that expect a lot more exceptions to be thrown, allowing some overhead in
+entering and leaving try blocks to make throws faster. But while exceptions
+remain exceptional the libunwind model will probably remain the most effective
+option.
+
+Zero-cost resumptions have more problems to solve. First because libunwind
+does not support a successful exiting stack search without doing an unwind.
+There are several ways to hack that functionality in. Ideally an extension to
+libunwind could be made, but that would either require seperate maintenance
+or gain enough support to have it folded into the standard.
+
+Also new techniques to skip previously searched parts of the stack will have
+to be developed.
+
+\section{Support for More Platforms}
+Termination is not portable because it is implemented with inline assembly.
+Those sections will have to be rewritten to support different architectures
+
+\section{Quality-of-Life Improvements}
+Finally come various improvements to the usability of \CFA. Most of these
+would just require time. Time that would not lead to interesting research so
+it has been left aside for now. A few examples are included here but there
+are more:
+
+\begin{itemize}
+\item Allowing exception handler to bind the exception to a reference instead
+of a pointer. This should actually result in no change in behaviour so there
+is no reason not to allow it. It is however a small improvement; giving a bit
+of flexibility to the user in what style they want to use.
+\item Enabling local control flow (by \codeCFA{break}, \codeCFA{return} and
+similar statements) out of a termination handler. The current set-up makes
+this very difficult but the catch function that runs the handler after it has
+been matched could be inlined into the function's body, which would make this
+much easier. (To do the same for try blocks would probably wait for zero-cost
+exceptions, which would allow the try block to be inlined as well.)
+\item Enabling local control flow out of a resumption handler. This would be
+a weighty operation, causing a stack unwind like a termination, so there might
+be a different statement or a statement modifier to make sure the user does
+this purposefully.
+
+However this would require the more complex system as they cannot be inlined
+into the original function as they can be run at a different place on the
+stack. So instead the unwinding will have to carry with it information on
+which one of these points to continue at and possibly also the return value
+for the function if a \codeCFA{return} statement was used.
+\end{itemize}
Index: driver/cc1.cc
===================================================================
--- driver/cc1.cc	(revision 69d17484515f7e3df1c7e777114ed4c355538be3)
+++ driver/cc1.cc	(revision 7c9ac4af78fda11cf4e9558899fd4764524f22f5)
@@ -10,6 +10,6 @@
 // Created On       : Fri Aug 26 14:23:51 2005
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Aug 16 21:03:02 2020
-// Update Count     : 413
+// Last Modified On : Tue Nov 17 14:27:08 2020
+// Update Count     : 414
 //
 
@@ -97,5 +97,5 @@
 			} else if ( val == "-CFA" ) {
 				CFA_flag = true;
-			} else if ( val == "-save-temps" ) {
+			} else if ( val == "-save-temps" || val == "--save-temps" ) {
 				save_temps = true;
 			} else if ( prefix( val, "-o=" ) ) {		// output file for -CFA
Index: driver/cfa.cc
===================================================================
--- driver/cfa.cc	(revision 69d17484515f7e3df1c7e777114ed4c355538be3)
+++ driver/cfa.cc	(revision 7c9ac4af78fda11cf4e9558899fd4764524f22f5)
@@ -10,6 +10,6 @@
 // Created On       : Tue Aug 20 13:44:49 2002
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Sep  2 17:59:20 2020
-// Update Count     : 438
+// Last Modified On : Tue Nov 17 14:27:28 2020
+// Update Count     : 440
 //
 
@@ -231,5 +231,5 @@
 				debugging = true;						// symbolic debugging required
 				args[nargs++] = argv[i];				// pass flag along
-			} else if ( arg == "-save-temps" ) {
+			} else if ( arg == "-save-temps" || arg == "--save-temps" ) {
 				args[nargs++] = argv[i];				// pass flag along
 				Putenv( argv, arg );					// save cfa-cpp output
Index: tests/.expect/manipulatorsOutput2.arm64.txt
===================================================================
--- tests/.expect/manipulatorsOutput2.arm64.txt	(revision 7c9ac4af78fda11cf4e9558899fd4764524f22f5)
+++ tests/.expect/manipulatorsOutput2.arm64.txt	(revision 7c9ac4af78fda11cf4e9558899fd4764524f22f5)
@@ -0,0 +1,32 @@
+
+0b0 0b11011 0b11011 0b11011 0b11011
+0b11100101 0b1111111111100101 0b11111111111111111111111111100101 0b11111111111111111111111111100101
+0 033 033 033 033
+0345 0177745 037777777745 037777777745
+0 0x1b 0x1b 0x1b 0x1b
+0xe5 0xffe5 0xffffffe5 0xffffffe5
+0x0p+0. 0x1.b8p+4 0x1.b8p+4 0xd.cp+1
+-0x1.b8p+4 -0x1.b8p+4 -0xd.cp+1
+0.000000e+00 2.750000e+01 -2.750000e+01
+0B11011 0X1B 2.75E-09 0X1.B8P+4
+11011 33 1b
+0. 0 27. 27 27.5
++27 -27 +27 -27 +27.5 -27.5
+  34  34 34
+  4.000000  4.000000 4.000000
+  ab  ab ab
+34567 34567 34567
+3456.000000 3456.000000 3456.000000
+abcde abcde abcde
+ 034     0034 0000000034
+3456     3456       3456
+     0000000034
+27.500     27.5      28. 27.50000000
+27.000 27.500     27.5      28. 27.50000000
+27   27.000000  27.500000  027  27.500    
+234.567 234.57  234.6   235.
+234567. 2.3457e+05 2.346e+05 2.35e+05
+234567. 234567. 234567. 234567.
+  abcd     abcd abcd
+  abcd abcdefgh    abc
+0027  027 0027.500
Index: tests/manipulatorsOutput2.cfa
===================================================================
--- tests/manipulatorsOutput2.cfa	(revision 69d17484515f7e3df1c7e777114ed4c355538be3)
+++ tests/manipulatorsOutput2.cfa	(revision 7c9ac4af78fda11cf4e9558899fd4764524f22f5)
@@ -7,6 +7,6 @@
 // Created On       : Sat Jun  8 18:04:11 2019
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Jun 10 12:37:57 2019
-// Update Count     : 8
+// Last Modified On : Sun Nov 15 08:11:53 2020
+// Update Count     : 9
 // 
 
@@ -52,4 +52,4 @@
 // Local Variables: //
 // tab-width: 4 //
-// compile-command: "cfa -Wall -Wextra amanipulatorsOutput2.cfa" //
+// compile-command: "cfa -Wall -Wextra manipulatorsOutput2.cfa" //
 // End: //
