Re:Go: What We Got Right, What We Got Wrong
by yencabulator on Friday January 05, 2024 @05:39PM
(#38886012)
You might like Biscuit: https://github.com/mit-pdos/biscuit
It was specifically written to measure the performance overhead of a high-level language in kernel, so it explicitly makes the same design choices as Linux: monolithic, POSIX-compatible.
Results look pretty good.
The main domain the original team behind Go were aiming at was clearly network software, especially servers.
But there was no consensus whether kernel could be a goal one day. Rob Pike originally thought Go could be a good language for writing kernels, if they made just a few tweaks to the runtime[1], but Ian Lance Taylor didn't see real kernels ever being written in Go[2]. In the pre-release versions of Go, Russ Cox wrote an example minimalistic kernel[3] that can directly run Go (the kernel itself is written in C and x86 Assembly) - it never really went beyond running a few toy programs and eventually became broken and unmaintained so it was removed.
[1]: https://groups.google.com/g/golang-nuts/c/6vvOzYyDkWQ/m/3T1D...
[2]: https://groups.google.com/g/golang-nuts/c/UgbTmOXZ_yw/m/NH0j...
[3]: https://github.com/golang/go/tree/weekly.2011-01-12/src/pkg/...