Index: doc/LaTeXmacros/lstlang.sty
===================================================================
--- doc/LaTeXmacros/lstlang.sty	(revision fa59c40f277c4183ad9f98defb4b63e87372cefa)
+++ doc/LaTeXmacros/lstlang.sty	(revision 8e90fd6bdd26acf67f6a5bae4b294ee9084241dc)
@@ -8,6 +8,6 @@
 %% Created On       : Sat May 13 16:34:42 2017
 %% Last Modified By : Peter A. Buhr
-%% Last Modified On : Wed Jul 24 07:40:11 2024
-%% Update Count     : 45
+%% Last Modified On : Fri Jan 17 14:29:52 2025
+%% Update Count     : 46
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -117,5 +117,5 @@
 		__auto_type, basetypeof, _Bool, bool, catch, catchResume, choose, coerce, cofor, corun, countof, _Complex, __complex, __complex__,
 		__const, __const__, continue, coroutine, _Decimal32, _Decimal64, _Decimal128, disable, dtype, enable, exception, __extension__,
-		fallthrough, fallthru, finally, fixup, __float80, float80, __float128, float128, _Float16, _Float32, _Float32x, _Float64,
+		fallthrough, finally, fixup, __float80, float80, __float128, float128, _Float16, _Float32, _Float32x, _Float64,
 		_Float64x, _Float128, _Float128x, forall, fortran, ftype, generator, _Generic, _Imaginary, __imag, __imag__, inline,
 		__inline, __inline__, int128, __int128, __int128_t, __label__, monitor, mutex, _Noreturn, __builtin_offsetof, one_t, or,
Index: doc/papers/OOPSLA17/generic_types.tex
===================================================================
--- doc/papers/OOPSLA17/generic_types.tex	(revision fa59c40f277c4183ad9f98defb4b63e87372cefa)
+++ doc/papers/OOPSLA17/generic_types.tex	(revision 8e90fd6bdd26acf67f6a5bae4b294ee9084241dc)
@@ -66,5 +66,5 @@
 	morekeywords={_Alignas,_Alignof,__alignof,__alignof__,asm,__asm,__asm__,_At,_Atomic,__attribute,__attribute__,auto,
 		_Bool,catch,catchResume,choose,_Complex,__complex,__complex__,__const,__const__,disable,dtype,enable,__extension__,
-		fallthrough,fallthru,finally,forall,ftype,_Generic,_Imaginary,inline,__label__,lvalue,_Noreturn,one_t,otype,restrict,_Static_assert,
+		fallthrough,finally,forall,ftype,_Generic,_Imaginary,inline,__label__,lvalue,_Noreturn,one_t,otype,restrict,_Static_assert,
 		_Thread_local,throw,throwResume,trait,try,ttype,typeof,__typeof,__typeof__,zero_t},
 }%
Index: doc/papers/concurrency/Paper.tex
===================================================================
--- doc/papers/concurrency/Paper.tex	(revision fa59c40f277c4183ad9f98defb4b63e87372cefa)
+++ doc/papers/concurrency/Paper.tex	(revision 8e90fd6bdd26acf67f6a5bae4b294ee9084241dc)
@@ -162,5 +162,5 @@
 		_Alignas, _Alignof, __alignof, __alignof__, asm, __asm, __asm__, __attribute, __attribute__,
 		auto, _Bool, catch, catchResume, choose, _Complex, __complex, __complex__, __const, __const__,
-		coroutine, disable, dtype, enable, exception, __extension__, fallthrough, fallthru, finally,
+		coroutine, disable, dtype, enable, exception, __extension__, fallthrough, finally,
 		__float80, float80, __float128, float128, forall, ftype, generator, _Generic, _Imaginary, __imag, __imag__,
 		inline, __inline, __inline__, __int128, int128, __label__, monitor, mutex, _Noreturn, one_t, or,
Index: doc/papers/general/Paper.tex
===================================================================
--- doc/papers/general/Paper.tex	(revision fa59c40f277c4183ad9f98defb4b63e87372cefa)
+++ doc/papers/general/Paper.tex	(revision 8e90fd6bdd26acf67f6a5bae4b294ee9084241dc)
@@ -143,5 +143,5 @@
 		_Alignas, _Alignof, __alignof, __alignof__, asm, __asm, __asm__, __attribute, __attribute__,
 		auto, _Bool, catch, catchResume, choose, _Complex, __complex, __complex__, __const, __const__,
-		coroutine, disable, dtype, enable, exception, __extension__, fallthrough, fallthru, finally,
+		coroutine, disable, dtype, enable, exception, __extension__, fallthrough, finally,
 		__float80, float80, __float128, float128, forall, ftype, _Generic, _Imaginary, __imag, __imag__,
 		inline, __inline, __inline__, __int128, int128, __label__, monitor, mutex, _Noreturn, one_t, or,
Index: doc/papers/llheap/Paper.tex
===================================================================
--- doc/papers/llheap/Paper.tex	(revision fa59c40f277c4183ad9f98defb4b63e87372cefa)
+++ doc/papers/llheap/Paper.tex	(revision 8e90fd6bdd26acf67f6a5bae4b294ee9084241dc)
@@ -108,5 +108,5 @@
 		_Alignas, _Alignof, __alignof, __alignof__, and, asm, __asm, __asm__, _Atomic, __attribute, __attribute__,
 		__auto_type, basetypeof, _Bool, catch, catchResume, choose, coerce, _Complex, __complex, __complex__, __const, __const__,
-		coroutine, _Decimal32, _Decimal64, _Decimal128, disable, enable, exception, __extension__, fallthrough, fallthru, finally, fixup,
+		coroutine, _Decimal32, _Decimal64, _Decimal128, disable, enable, exception, __extension__, fallthrough, finally, fixup,
 		__float80, float80, __float128, float128, _Float16, _Float32, _Float32x, _Float64, _Float64x, _Float128, _Float128x,
 		forall, fortran, generator, _Generic, _Imaginary, __imag, __imag__, inline, __inline, __inline__, int128, __int128, __int128_t,
Index: doc/refrat/keywords.tex
===================================================================
--- doc/refrat/keywords.tex	(revision fa59c40f277c4183ad9f98defb4b63e87372cefa)
+++ doc/refrat/keywords.tex	(revision 8e90fd6bdd26acf67f6a5bae4b294ee9084241dc)
@@ -11,6 +11,6 @@
 %% Created On       : Sun Aug  6 08:17:27 2017
 %% Last Modified By : Peter A. Buhr
-%% Last Modified On : Fri Apr  6 15:16:11 2018
-%% Update Count     : 7
+%% Last Modified On : Fri Jan 17 14:45:13 2025
+%% Update Count     : 8
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{tabular}{@{}llllll@{}}
@@ -28,5 +28,4 @@
 ©exception©		\\
 ©fallthrough©	\\
-©fallthru©		\\
 \end{tabular}
 &
Index: doc/refrat/refrat.tex
===================================================================
--- doc/refrat/refrat.tex	(revision fa59c40f277c4183ad9f98defb4b63e87372cefa)
+++ doc/refrat/refrat.tex	(revision 8e90fd6bdd26acf67f6a5bae4b294ee9084241dc)
@@ -11,6 +11,6 @@
 %% Created On       : Wed Apr  6 14:52:25 2016
 %% Last Modified By : Peter A. Buhr
-%% Last Modified On : Mon Oct  5 09:02:53 2020
-%% Update Count     : 110
+%% Last Modified On : Fri Jan 17 14:45:04 2025
+%% Update Count     : 111
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -3348,5 +3348,5 @@
 
 The ©choose© statement is the same as the ©switch© statement except control transfers to the end of the ©choose© statement at a ©case© or ©default© labeled statement.
-The ©fallthru© statement is used to fall through to the next ©case© or ©default© labeled statement.
+The ©fallthrough© statement is used to fall through to the next ©case© or ©default© labeled statement.
 The following have identical meaning:
 \begin{flushleft}
@@ -3366,6 +3366,6 @@
   case 1: ... ; // exit
   case 2: ... ; // exit
-  case 3: ... ; fallthru;
-  case 4: ... ; fallthru;
+  case 3: ... ; fallthrough;
+  case 4: ... ; fallthrough;
   default: ... ; // exit
 }
Index: doc/theses/aaron_moss_PhD/phd/cfa-macros.tex
===================================================================
--- doc/theses/aaron_moss_PhD/phd/cfa-macros.tex	(revision fa59c40f277c4183ad9f98defb4b63e87372cefa)
+++ doc/theses/aaron_moss_PhD/phd/cfa-macros.tex	(revision 8e90fd6bdd26acf67f6a5bae4b294ee9084241dc)
@@ -27,5 +27,5 @@
 		_Alignas, _Alignof, __alignof, __alignof__, asm, __asm, __asm__, __attribute, __attribute__,
 		auto, bool, _Bool, catch, catchResume, choose, _Complex, __complex, __complex__, __const, __const__,
-		coroutine, disable, dtype, enable, exception, __extension__, fallthrough, fallthru, finally,
+		coroutine, disable, dtype, enable, exception, __extension__, fallthrough, finally,
 		__float80, float80, __float128, float128, forall, ftype, _Generic, _Imaginary, __imag, __imag__,
 		inline, __inline, __inline__, __int128, int128, __label__, monitor, mutex, _Noreturn, one_t, or,
Index: doc/theses/andrew_beach_MMath/cfalab.sty
===================================================================
--- doc/theses/andrew_beach_MMath/cfalab.sty	(revision fa59c40f277c4183ad9f98defb4b63e87372cefa)
+++ doc/theses/andrew_beach_MMath/cfalab.sty	(revision 8e90fd6bdd26acf67f6a5bae4b294ee9084241dc)
@@ -76,5 +76,5 @@
         choose, _Complex, __complex, __complex__, __const, __const__,
         coroutine, disable, dtype, enable, exception, __extension__,
-        fallthrough, fallthru, finally, __float80, float80, __float128,
+        fallthrough, finally, __float80, float80, __float128,
         float128, forall, ftype, generator, _Generic, _Imaginary, __imag,
         __imag__, inline, __inline, __inline__, __int128, int128, __label__,
Index: doc/theses/andrew_beach_MMath/features.tex
===================================================================
--- doc/theses/andrew_beach_MMath/features.tex	(revision fa59c40f277c4183ad9f98defb4b63e87372cefa)
+++ doc/theses/andrew_beach_MMath/features.tex	(revision 8e90fd6bdd26acf67f6a5bae4b294ee9084241dc)
@@ -822,5 +822,5 @@
 control flow.
 Because of this requirement, local control flow out of the finally block
-is forbidden. The compiler precludes any @break@, @continue@, @fallthru@ or
+is forbidden. The compiler precludes any @break@, @continue@, @fallthrough@ or
 @return@ that causes control to leave the finally block. Other ways to leave
 the finally block, such as a @longjmp@ or termination are much harder to check,
Index: doc/theses/fangren_yu_MMath/intro.tex
===================================================================
--- doc/theses/fangren_yu_MMath/intro.tex	(revision fa59c40f277c4183ad9f98defb4b63e87372cefa)
+++ doc/theses/fangren_yu_MMath/intro.tex	(revision 8e90fd6bdd26acf67f6a5bae4b294ee9084241dc)
@@ -518,7 +518,7 @@
 
 \begin{enumerate}
-\item
-\item
-\item
+\item The \CFA compiler performance and capability have been greatly improved through recent development. The compilation time of various \CFA library units and test programs have been reduced from the order of minutes down to 10-20 seconds, which made it possible to develop and test more complicated \CFA programs that utilize sophisticated type system features. The details of compiler optimization work are covered in a previous technical report.
+\item The thesis presents a systematic review of the new features that have been added to the \CFA language and its type system. Some of the more recent inclusions to \CFA such as tuples and generic structure types were not well tested when they were being developed, due to the limitation of compiler performance. Several issues coming from the interactions of various language features are identified and discussed in this thesis; some of them are now fully resolved, while others are given temporary fixes and need to be reworked in the future.
+\item Finally, this thesis provides constructive ideas of fixing the outstanding issues in \CFA language design and implementation, and gives a path for future improvements to \CFA language and compiler.
 \end{enumerate}
 
Index: doc/uC++toCFA/uC++toCFA.tex
===================================================================
--- doc/uC++toCFA/uC++toCFA.tex	(revision fa59c40f277c4183ad9f98defb4b63e87372cefa)
+++ doc/uC++toCFA/uC++toCFA.tex	(revision 8e90fd6bdd26acf67f6a5bae4b294ee9084241dc)
@@ -11,6 +11,6 @@
 %% Created On       : Wed Apr  6 14:53:29 2016
 %% Last Modified By : Peter A. Buhr
-%% Last Modified On : Fri Nov 15 09:55:34 2024
-%% Update Count     : 6249
+%% Last Modified On : Fri Jan 17 07:39:09 2025
+%% Update Count     : 6284
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -197,28 +197,4 @@
 
 
-\section{Stream I/O}
-
-\CFA output streams automatically separate values and insert a newline at the end of the print.
-\begin{cquote}
-\begin{tabular}{@{}l|l@{}}
-\begin{uC++}
-#include <@iostream@>
-using namespace std;
-int i;   double d;   char c;
-cin >> i >> d >> c;
-cout << i << ' ' << d << ' ' << c | endl;
-\end{uC++}
-&
-\begin{cfa}
-#include <@fstream.hfa@>
-
-int i;   double d;   char c;
-sin | i | d | c;
-sout | i | d | c
-\end{cfa}
-\end{tabular}
-\end{cquote}
-
-
 \section{Looping}
 
@@ -240,6 +216,9 @@
 for ( i; 0 @-@~ 10 ) { ... }
 \end{cfa}
-\\
-\hline
+\end{tabular}
+\end{cquote}
+
+\begin{cquote}
+\begin{tabular}{@{}l|l@{}}
 \begin{uC++}
 int i = 0
@@ -253,6 +232,9 @@
 @else@ { ... } // i == 10
 \end{cfa}
-\\
-\hline
+\end{tabular}
+\end{cquote}
+
+\begin{cquote}
+\begin{tabular}{@{}l|l@{}}
 \begin{uC++}
 @L1:@ for ( ;; ) {
@@ -271,4 +253,62 @@
 	}
 }
+\end{cfa}
+\end{tabular}
+\end{cquote}
+
+
+\section{Stream I/O}
+
+\CFA output streams automatically separate values and insert a newline at the end of the print.
+\begin{cquote}
+\begin{tabular}{@{}l|l@{}}
+\begin{uC++}
+#include <@iostream@>
+using namespace std;
+int i;   double d;   char c;
+cin >> i >> d >> c;
+cout << i << ' ' << d << ' ' << c << endl;
+\end{uC++}
+&
+\begin{cfa}
+#include <@fstream.hfa@>
+
+int i;   double d;   char c;
+sin | i | d | c;
+sout | i | d | c
+\end{cfa}
+\end{tabular}
+\end{cquote}
+To disable/enable automatic newline at the end of printing, use @nlOff@/@nlOn@ and @nl@.
+\begin{cquote}
+\begin{tabular}{@{}l|l@{}}
+\begin{uC++}
+
+for ( int i = 0; i < 5; i += 1 ) cout << i << ' ';
+cout << @endl@;
+
+0 1 2 3 4 
+\end{uC++}
+&
+\begin{cfa}
+sout | @nlOff@; // disable auto nl
+for ( i; 5 ) sout | i;
+sout | @nl@;
+sout | @nlOn@;  // reenable auto nl
+0 1 2 3 4 
+\end{cfa}
+\end{tabular}
+\end{cquote}
+Floating-point numbers without a fraction print with a decimal point, which can be disabled with @nodp@.
+\begin{cquote}
+\begin{tabular}{@{}l|l@{}}
+\begin{uC++}
+cout << 3.0 << ' ' << showpoint << setprecision(0) << 3.0 << endl;
+3 3.
+\end{uC++}
+&
+\begin{cfa}
+sout | @nodp( 3.0 )@ | 3.0;
+3 3.
 \end{cfa}
 \end{tabular}
@@ -291,9 +331,8 @@
 	if ( ... ) @_Throw@ E( /* initialization */ );
 		...
-} @_CatchResume@( E & ) { ... // reference
-} catch( E & ) { ...
-} catch( ... ) { ... // catch any
-} _Finally { ...
-}
+} @_CatchResume@( E & /* reference */ ) { ... }
+  catch( E & ) { ... }
+  catch( ... /* catch any */ ) { ... }
+  _Finally { ... }
 \end{uC++}
 &
@@ -308,9 +347,8 @@
 	if ( ... ) @throw@ @ExceptionInst@( E, /* intialization */ );
 	...
-} @catchResume@( E * ) { ... // pointer
-} catch( E * ) { ...
-} catch( exception_t * ) { ... // catch any
-} finally { ...
-}
+} @catchResume@( E @*@ /* pointer */ ) { ... }
+  catch( E * ) { ... }
+  catch( exception_t @*@ /* catch any */ ) { ... }
+  finally { ... }
 \end{cfa}
 \end{tabular}
@@ -330,9 +368,6 @@
 			... suspend(); ...
 		}
-	} @_CatchResume@( E & ) { // reference
-		...
-	} catch( E & ) {
-		...
-	}
+	} @_CatchResume@( E & /* reference */ ) { ... }
+	  catch( E & ) { ... }
 }
 \end{uC++}
@@ -346,9 +381,6 @@
 		... suspendPoll ...
 		disable_ehm();
-	} @catchResume@( E * ) { // pointer
-		...
-	} catch( E & ) {
-		...
-	}
+	} @catchResume@( E * ) { ... }
+	  catch( E & ) { ... }
 }
 \end{cfa}
@@ -556,37 +588,4 @@
 
 
-\section{Thread}
-
-\begin{cquote}
-\begin{tabular}{@{}l|ll@{}}
-\begin{uC++}
-
-@_Task@ T {
-	// private task fields
-	void main() {
-		... @_Resume E( ... ) _At partner@;
-		... @uThisTask();@ ...
-	}
-  public:
-};
-\end{uC++}
-&
-\begin{cfa}
-#include <$thread$.hfa>
-@thread@ T {
-	// private task fields
-
-};
-void main( @T & t@ ) {
-	... @resumeAt( partner, ExceptionInst( E, ... )@ );
-	... @active_thread();@ ...
-}
-\end{cfa}
-\\
-\multicolumn{2}{@{}l@{}}{\lstinline{T t; // start thread in main routine}}
-\end{tabular}
-\end{cquote}
-
-
 \section{\lstinline{COBEGIN}/\lstinline{COFOR}}
 
@@ -602,5 +601,4 @@
 		BEGIN osacquire( cout ) << "C" << endl; END
 		BEGIN osacquire( cout ) << "D" << endl; END
-		BEGIN osacquire( cout ) << "E" << endl; END
 	@COEND@
 	@COFOR@( i, 1, 10,
@@ -619,5 +617,4 @@
 		corun { mutex( sout ) sout | "C"; }
 		corun { mutex( sout ) sout | "D"; }
-		corun { mutex( sout ) sout | "E"; }
 	}
 	@cofor@( i; 10 ) {
@@ -703,4 +700,37 @@
 }
 \end{cfa}
+\end{tabular}
+\end{cquote}
+
+
+\section{Thread}
+
+\begin{cquote}
+\begin{tabular}{@{}l|ll@{}}
+\begin{uC++}
+
+@_Task@ T {
+	// private task fields
+	void main() {
+		... @_Resume E( ... ) _At partner@;
+		... @uThisTask();@ ...
+	}
+  public:
+};
+\end{uC++}
+&
+\begin{cfa}
+#include <$thread$.hfa>
+@thread@ T {
+	// private task fields
+
+};
+void main( @T & t@ ) {
+	... @resumeAt( partner, ExceptionInst( E, ... )@ );
+	... @active_thread();@ ...
+}
+\end{cfa}
+\\
+\multicolumn{2}{@{}l@{}}{\lstinline{T t; // start thread in main routine}}
 \end{tabular}
 \end{cquote}
Index: doc/user/user.tex
===================================================================
--- doc/user/user.tex	(revision fa59c40f277c4183ad9f98defb4b63e87372cefa)
+++ doc/user/user.tex	(revision 8e90fd6bdd26acf67f6a5bae4b294ee9084241dc)
@@ -11,6 +11,6 @@
 %% Created On       : Wed Apr  6 14:53:29 2016
 %% Last Modified By : Peter A. Buhr
-%% Last Modified On : Sat Dec  7 16:53:37 2024
-%% Update Count     : 6970
+%% Last Modified On : Fri Jan 17 14:20:39 2025
+%% Update Count     : 6971
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
@@ -893,5 +893,5 @@
 still works.
 Nevertheless, reversing the default action would have a non-trivial effect on case actions that compound, such as the above example of processing shell arguments.
-Therefore, to preserve backwards compatibility, it is necessary to introduce a new kind of ©switch© statement, called \Indexc{choose}, with no implicit fall-through semantics and an explicit fall-through if the last statement of a case-clause ends with the new keyword \Indexc{fallthrough}/\-\Indexc{fallthru}, \eg:
+Therefore, to preserve backwards compatibility, it is necessary to introduce a new kind of ©switch© statement, called \Indexc{choose}, with no implicit fall-through semantics and an explicit fall-through if the last statement of a case-clause ends with the new keyword \Indexc{fallthrough}, \eg:
 \begin{cfa}
 ®choose® ( i ) {
@@ -901,5 +901,5 @@
   case 5:
 	...
-	®fallthru®; §\C{// explicit fall through}§
+	®fallthrough®; §\C{// explicit fall through}§
   case 7:
 	...
@@ -911,5 +911,5 @@
 Like the ©switch© statement, the ©choose© statement retains the fall-through semantics for a list of ©case© clauses.
 An implicit ©break© is applied only at the end of the \emph{statements} following a ©case© clause.
-An explicit ©fallthru© is retained because it is a C-idiom most C programmers expect, and its absence might discourage programmers from using the ©choose© statement.
+An explicit ©fallthrough© is retained because it is a C-idiom most C programmers expect, and its absence might discourage programmers from using the ©choose© statement.
 As well, allowing an explicit ©break© from the ©choose© is a carry over from the ©switch© statement, and expected by C programmers.
 \item
@@ -950,5 +950,5 @@
   case 3:
 	if ( ... ) {
-		... ®fallthru;® // goto case 4
+		... ®fallthrough;® // goto case 4
 	} else {
 		...
@@ -985,5 +985,5 @@
 		for ( ... ) {
 			// multi-level transfer
-			... ®fallthru common;®
+			... ®fallthrough common;®
 		}
 		...
@@ -8053,5 +8053,5 @@
 \begin{cquote}
 \Indexc{basetypeof}, \Indexc{choose}, \Indexc{coroutine}, \Indexc{disable},
-\Indexc{enable}, \Indexc{exception}, \Indexc{fallthrough}, \Indexc{fallthru},
+\Indexc{enable}, \Indexc{exception}, \Indexc{fallthrough}, \Indexc{fallthrough},
 \Indexc{finally}, \Indexc{fixup}, \Indexc{forall},\Indexc{generator},
 \Indexc{int128}, \Indexc{monitor}, \Indexc{mutex}, \Indexc{one_t},
@@ -8079,5 +8079,5 @@
 \Indexc{exception}		\\
 \Indexc{fallthrough}	\\
-\Indexc{fallthru}		\\
+\Indexc{fallthrough}	\\
 \end{tabular}
 &
