| ▲ | Imustaskforhelp 6 days ago | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
I really like this idea but can anyone please summarize what it does for me. To me it feels very fascinating (bare metal golang in general) but I am not sure I truly understand its usecase and I would love to know more. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | pjmlp 6 days ago | parent | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
The use cases is not writing unsafe C in first place, and proving the point Go is usable in such scenarios, regardless of naysayers. The creators of USB Armory also created TamaGo, instead of using Rust, exactly for the same reasons, to prove a point. https://github.com/usbarmory/tamago https://reversec.com/usb-armory/ Because in IT, seeing is believing. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | tomcam 5 days ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
When you turn on a computer, it transfers code to software required to get the machine up and running reliably--the boot process. That used start in a chip called the BIOS. It's a 40-year old holdover from the early days of the IBM PC. UEFI is a more complex and feature-rich protocol. Due to its default memory management Go hasn't been considered the first choice for such purposes but this proof of concept uses Go for the very low level code needed for UEFI. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | techgnosis 5 days ago | parent | prev | next [-] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There aren't that many UEFI shells and the ones that exist are certainly not modern. Anything new is helpful, especially if its written in a popular language like Go. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | typical182 6 hours ago | parent | prev [-] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
There’s some more context in a proposal from the folks behind this project to upstream the needed Go runtime hooks into Go proper. From what I can tell, the core Go team seems generally favorable to it, so seems like a decent chance it will happen. From: #73608 proposal: all: add bare metal support https://github.com/golang/go/issues/73608 > Go applications built with GOOS=none would run on bare metal, without any underlying OS. All required support is provided by the Go runtime and external driver packages, also written in Go. And: > These hooks act as a "Rosetta Stone" for integration of a freestanding Go runtime within an arbitrary environment, whether bare metal or OS supported. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||