Index: doc/theses/thierry_delisle_PhD/comp_II/comp_II.tex
===================================================================
--- doc/theses/thierry_delisle_PhD/comp_II/comp_II.tex	(revision 7c5d8c4831b1b5bbec85e2191b86a00a9946dd24)
+++ doc/theses/thierry_delisle_PhD/comp_II/comp_II.tex	(revision 849f2c6b8a1007e0f7409e0d392f5bb76347e31f)
@@ -447,9 +447,20 @@
 $select$ entails significant complexity and is being replaced in UNIX operating-systems, which make it a less interesting alternative.
 Another popular interface is $epoll$\cite{epoll}, which is supposed to be cheaper than $select$.
-However, $epoll$ also does not handle the file system and seems to have problem to linux pipes and $TTY$s\cit.
+However, $epoll$ also does not handle the file system and anectodal evidence suggest it has problem with linux pipes and $TTY$s.
+A popular cross-platform alternative is $libuv$\cite{libuv}, which offers asynchronous sockets and asynchronous file system operations (among other features).
+However, as a full-featured library it includes much more than I need and could conflict with other features of \CFA unless significant effort is made to merge them together.
 A very recent alternative that I am investigating is $io_uring$\cite{io_uring}.
-It claims to address some of the issues with $epoll$ but is too recent to be confident that it does.
-Finally, a popular cross-platform alternative is $libuv$\cite{libuv}, which offers asynchronous sockets and asynchronous file system operations (among other features).
-However, as a full-featured library it includes much more than I need and could conflict with other features of \CFA unless significant effort is made to merge them together.
+It claims to address some of the issues with $epoll$ and my early investigating suggest that the claim is accurate.
+$io_uring$ uses a much more general approach where system calls are register to a queue and later executed by the kernel, rather than relying on system calls to return an error instead of blocking and subsequently waiting for changes on file descriptors.
+I believe this approach allows for fewer problems, \eg the manpage for $open$\cite{open} states:
+\begin{quote}
+	Note that [the $O_NONBLOCK$ flag] has no effect for regular files and block devices;
+	that is, I/O operations will (briefly) block when device activity is required, regardless of whether $O_NONBLOCK$ is set.
+	Since $O_NONBLOCK$ semantics might eventually be implemented, applications should not depend upon blocking behavior when specifying this flag for regular files and block devices.
+\end{quote}
+This makes approach based on $epoll$/$select$ less reliable since they may not work for every file descriptors.
+For this reason, I plan to use $io_uring$ as the OS abstraction for the \CFA runtime, unless further work shows problems I haven't encountered yet.
+However, only a small subset of the features are available in Ubuntu as of April 2020\cite{wiki:ubuntu-linux}, which will limit performance comparisons.
+I do not believe this will affect the comparison result.
 
 \paragraph{Event Engine}
@@ -477,10 +488,20 @@
 % ===============================================================================
 \section{Discussion}
-
+I believe that runtime system and scheduling are still open topics.
+Many ``state of the art'' production frameworks still use single threaded event-loops because of performance considerations, \eg \cite{nginx-design}, and, to my knowledge, no wideyl available system language offers modern threading facilities.
+I believe the proposed work offers a novel runtime and scheduling package, where existing work only offers fragments that users must assemble themselves when possible.
 
 % ===============================================================================
 % ===============================================================================
 \section{Timeline}
-
+\begin{center}
+\begin{tabular}{ | r @{--} l | p{4in} | }
+\hline May 2020 & October 2020   & Creation of the performance benchmark. \\
+\hline November 2020 & March 2021   & Completion of the implementation. \\
+\hline March 2021 & April 2021  & Final Performance experiments. \\
+\hline May 2017 & August 2021 & Thesis writing and defense. \\
+\hline
+\end{tabular}
+\end{center}
 
 % B I B L I O G R A P H Y
Index: doc/theses/thierry_delisle_PhD/comp_II/local.bib
===================================================================
--- doc/theses/thierry_delisle_PhD/comp_II/local.bib	(revision 7c5d8c4831b1b5bbec85e2191b86a00a9946dd24)
+++ doc/theses/thierry_delisle_PhD/comp_II/local.bib	(revision 849f2c6b8a1007e0f7409e0d392f5bb76347e31f)
@@ -265,4 +265,10 @@
 % Linux Man Pages
 % ===============================================================================
+@manual{open,
+  title      = "open(2) Linux User's Manual",
+  year       = "2020",
+  month      = "February",
+}
+
 @manual{epoll,
   title      = "epoll(7) Linux User's Manual",
@@ -306,4 +312,9 @@
   author={KARSTEN, MARTIN},
   journal={URL: https://git.uwaterloo.ca/mkarsten/libfibre}
+}
+
+@misc{nginx-design,
+  title={Inside NGINX: How We Designed for Performance \& Scale},
+  url = "https://www.nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale/",
 }
 
@@ -335,2 +346,10 @@
    note = "[Online; accessed 14-April-2020]"
  }
+
+ @misc{wiki:ubuntu-linux,
+   author = "{Wikipedia contributors}",
+   title = "Ubuntu version history : Table of versions --- {W}ikipedia{,} The Free Encyclopedia",
+   year = "2020",
+   url = "https://en.wikipedia.org/wiki/Ubuntu_version_history#Table_of_versions",
+   note = "[Online; accessed 15-April-2020]"
+ }
Index: libcfa/src/exception.c
===================================================================
--- libcfa/src/exception.c	(revision 7c5d8c4831b1b5bbec85e2191b86a00a9946dd24)
+++ libcfa/src/exception.c	(revision 849f2c6b8a1007e0f7409e0d392f5bb76347e31f)
@@ -445,8 +445,8 @@
 
 #pragma GCC push_options
-#if __GNUC__ != 7
+#if __GNUC__ < 7
 #pragma GCC optimize("no-toplevel-reorder")
-#else
-#pragma GCC optimize("no-unit-at-a-time")
+#elif __GNUC__ == 7
+#pragma GCC optimize(0)
 #endif
 
