Why Discord is switching from Go to Rust
> After digging through the Go source code, we learned that Go will force a garbage collection run every 2 minutes at minimum. In other words, if garbage collection has not run for 2 minutes, regardless of heap growth, go will still force a garbage collection.<p>> We figured we could tune the garbage collector to happen more often in order to prevent large spikes, so we implemented an endpoint on the service to change the garbage collector GC Percent on the fly. Unfortunately, no matter how we configured the GC percent nothing changed. How could that be? It turns out, it was because we were not allocating memory quickly enough for it to force garbage collection to happen more often.<p>As someone not too familiar with GC design, this seems like an absurd hack.  That this 2-minute hardcoded limitation is not even configurable comes across as amateurish even.  I have no experience with Go -- do people simply live with this and not talk about it?