The original poster says:<p>&quot;Given that unikernels compile only which is necessary into the applications, the surface area is very small.&quot;<p>I think this is a somewhat strange statement. You don&#x27;t lower the surface area by not compiling in dead code--unless you&#x27;re offering a way to run arbitrary code, in which case it can help implementing the anti-features the attacker wants. But to me it seems the primary innovation of unikernels is that they are not implemented in C, but in a higher-level language like Ocaml, Erlang, etc. Those languages, if their compilers and runtimes are implemented correctly, don&#x27;t allow buffer overflows, and have also other features to prevent arbitrary code execution (type system, or secure process isolation). Those kernels have (given the same attention to quality) the potential of being more secure than the Linux kernel by using such languages. Also, by not having to be a general OS kernel, they are simpler to implement, hence reducing the number of bugs likely to be around.<p>It&#x27;s not the &quot;compiling into the application&quot;, it&#x27;s the &quot;implementation of the algorithms&quot; that&#x27;s smaller. Perhaps that&#x27;s what the original poster meant, but it sounded strange to me.