Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Go has a fat runtime and GC, which is absolutely not a bad thing, that’s not my point, but Rust and Zig are in their niche, because they are low-level programming languages. That’s their unique trait. You can’t just call into go from the kernel, but you could do it for the other two languages.

Also, rust is not a backend language, it can be used for that, but that’s definitely not its main appeal.



Not only you can fit Go into a kernel, there is at least two products that do so.

TamaGo, used to write the firmware used in USB armory.

https://www.withsecure.com/en/solutions/innovative-security-...

TinyGo, which even has official Arduino and ARM support, and is sponsored by Google

https://tinygo.org/

Ah but that isn't proper Go.

Well neither is the C code that is allowed to be used in typical kernel code, almost nothing from ISO C standard library is available, and usually plenty of compiler specific language extensions are used instead.


So can Java, Javascript, there is nothing fundamentally new here. As I said, I’m all for managed languages, and I believe they should be the default choice, only seldom “overwritten” by going lower level in very specific circumstances. Nonetheless, Rust is an interesting, novel language for this very reason - it is memory safe without having a GC.

You are the one who always mention stuff like gcj - how is that, available at Java 1.2 times, any different than Go, in a fundamental way?


I seldom mention gcj, it was half baked, only supported Red-Hat's case of AOT compiling Eclipse and little else, it was abandoned in 2009.

What I quote are production quality compilers for embeeded space like ExcelsiorJET (also creators of Modula-2 and Oberon compilers, now out of business), PTC, Aonix (acquired by PTC), Aicas, WebSphere Real Time (AOT technology nowadays lives on OpenJ9), and microEJ.

As for the differences they aren't, that is the point, we should open our minds to use managed systems programming languages, like Xerox PARC, ETHZ and Microsoft Research did.

Rust is interesting in being the language that brought affine types into mainstream, although with a productivity cost.

As shown by Haskell, OCaml, Swift, Chapel, D, Roc, Hylo (nee Val) efforts, the best is being able to combine automatic memory management with linear/affine types for a low level language subset, with the benefit of not having to type ".clone()" all over the place.

As for Go versus Rust, definitly Rust, only because I am not a big fan of Go's language design, and love ML derived languages since Caml Light, nevertheless better Go than C.


We agree here on everything, I just find it dishonest to put Go next to Rust all the time, and not all the millions of managed languages that compile AOT, like you list quite a few. Go is not any lower level than they are, it is just catering to the kind of people that will believe it is somehow a “modern C”.


From the point of view of Limbo's role in Inferno, it kind of is, even if only for the userspace side.

Which ironically, the closest we got there in modern computing, in tortuous ways, is Android.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: