I could see this being useful to write GUI apps that need to run on tiny hardware to reduce the footprint, but the real sweet spot for unikernels I think is backend services. Cool project though!
Wow super cool project and it's super impressive that you could do that with only 6400 logical lines of code (according to cloc) and without any dependencies (expect one for the gui part & material icons).
Can you explain how you implemented the GPU? What resources did you use?
isotope (the JS layout library) and isotope.js (the JS view library) are arguably a naming collision despite having slightly different names. I feel like two projects having exactly the same name can have a qualifier to their collision added.
Yeh. Unik is more of a unikernel orchestrator, like OPS is, versus the actual kernel itself. For the go implementation it uses gorump which we sponsored and then retired years ago in favor of Nanos our new kernel.
The naming "collision" though is so bad it really feels like a case of squatting the seo though. Outside of Nanos, Unik is the very first thing you'll find when searching for go unikernels.
One question: why a UEFI boot loader? QEMU and others have mechanisms that support direct loading of an ELF binary. Was the original thinking to support bare metal? (Or maybe it's still in the cards?)
It happened by accident. Originally I wanted to run on bare-metal, and thought UEFI would be a good starting point. THen I never got around to adding multiboot and similar support.
Some key points from the article:
> Unik pretends to be a Linux kernel, implementing enough system calls to fool the Go runtime.
> The gui program is run with https://gioui.org/
I could see this being useful to write GUI apps that need to run on tiny hardware to reduce the footprint, but the real sweet spot for unikernels I think is backend services. Cool project though!