It said use Go, but Go is garbage collected and that is unacceptable for an app that needs to process real time audio with low latency.
Same thing applies to any networked video game.
It said use Go, but Go is garbage collected and that is unacceptable for an app that needs to process real time audio with low latency.
Same thing applies to any networked video game.
You can write your GUI in Visual Basic or Node or whatever-the-hell, as long as you've got your audio engine written in something with deterministic latency. If you specify a protocol ahead of time, those can even be separate teams with separate competencies!
Sadly, none of the real-time audio/video/image processing software companies seem to have caught onto this. I guess it's only really "well-known" in the network programming world. (A few game companies seem to have figured it out as well, but not nearly the majority.)
Though Rust is probably more appropriate for your needs, in terms of more modern languages.
As for your workarounds, for real time software, these workarounds are too nondeterministic. Real time is one of the primary features, so you need very predictable performance, and that implies having direct control over things like memory.
Yes, if you're doing really real-time, that's one thing... many things aren't, so it depends... that said, again, if you need really real time, a functional approach and rust may be a better option... or a number of other FP languages, for that matter... or C/C++ if you're a masochist, or really anal with your approach (not really trying to offend C/C++ guys, more pointing out that it's rarely the best pragmatic option)
Not really.
https://twitter.com/brianhatfield/status/692778741567721473
I've seen 10ms mentioned as worst possible scenario, which means not coding with the GC in mind.
There doesn't actually seem to be a way to explicitly free memory though so I doubt this is actually used.
https://github.com/golang/go/issues/13761#issuecomment-16772...