I think Bryan Cantrill and Joyent are doing a number of interesting things, but this reads more like an ad than a genuine critique of Unikernels.
The primary reason to implement functionality in the
operating system kernel is for performance: by avoiding
a context switch across the user-kernel boundary,
operations that rely upon transit across that boundary
can be made faster.
I haven't heard this argument made once. There are performance benefits (smaller footprint, compiler optimization across system call boundaries, etc...). However, the primary benefit is not performance from eliminating the user/kernel boundary. Should you have apps that can be unikernel-borne, you
arrive at the most profound reason that unikernels are
unfit for production — and the reason that (to me,
anyway) strikes unikernels through the heart when it
comes to deploying anything real in production:
Unikernels are entirely undebuggable.
If this were true, and an issue, FPGAs would also be completely unusable in production.