5 ms·
Show HN: A Go unikernel capable of running GUI programs
- klysm 6y agoRepo is here: https://git.sr.ht/~eliasnaur/unik https://git.sr.ht/~eliasnaur/unik 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/ 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!
- pjmlp 6y agoAnother alternative for bare metal Go is TamaGo, developed by F-Secure for their USB armory pen. https://labs.f-secure.com/blog/tamago/ https://labs.f-secure.com/blog/tamago/
- meddlepal 6y agoAbsolutely terrible naming collision with another Go Unikernel project: https://github.com/solo-io/unik https://github.com/solo-io/unik
- lainga 6y agoAs is the idiomatic Go style
- xyproto 6y agoIt's convention to try to avoid to use the same name as a different project of the same type, though.
- mapgrep 6y agoParent is making a joke, since Go itself was a namespace collision, arguably: https://en.wikipedia.org/wiki/Go!_(programming_language)#Conflict_with_Google https://en.wikipedia.org/wiki/Go!_(programming_language)#Con...
- TACIXAT 6y agoIt is just a naming collision, not sure you need the superlative and adjective to point it out.
- Semaphor 6y agoisotope (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.
- eyberg 6y agoYeh. 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.
- amscanne 6y agoSuper cool! 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?)
- eliasnaur 6y agoIt 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.
- jbverschoor 6y agoI was just looking for something similar last week. Cool work.
- Matt3o12_ 6y agoWow 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?
- cpach 6y agoVery cool! Some thoughts: Out of curiosity, did you do it for the hack value and learning or do you also see a practical use-case for this project? Have you considered doing any demo videos/GIFs? Would be fun to see.
- gitgud 6y agoWhat's the use-case for this? Is it for limited hardware devices or Docker containers?...
- nurettin 6y ago> GPU+mouse works, I ran out of time to implement a keyboard driver Keyboard driver is usually the first and only thing I implement before getting demotivated and giving up.