Thank you. I found it easier to develop in Go and I use Go in the work environment heavily. But compared to C/C++, I think having a garbage collector is a must for modern init, and I will write all the other utilities in Go as well for better maintainability.
Garbage collection isn't a must for a modern init.
Memory safety may arguably be, but I see no reasonable argument that garbage collection (a particular strategy for memory management) is.
Well I would say memory safety, not necessarily garbage collection. It was also a bit overstatement but I would really love memory safety for many core utilities.
Do you also have some comparison to Rust?
Rust has a very advanced memory lifecycle management. The promising part is that it may give you almost all of the advantages of a garbage collector while not needing an actual garbage collector in most cases. Like RAII in C++, but much more advanced.
I'd be interested whether this actually works well for a nontrivial project such as an init system.
From a technical point of view, what are the reasons you chose Go over alternatives, such as C, C++, OCaml or Rust?
(Just curious, as all those languages have compilers that produce fast, optimized, self-contained binaries.)