Go is known by the speed of it's compiler, doing extra work during the compilation would slow it down. I would not mind either to have a "release" flag that would take minutes and produce a more optimized binary.
This means that the threads can't be blocked forever. The way Go scheduler work is to check during function calls if the current goroutine has executed for some period of time, after that the scheduler will remove the goroutine from the thread and open space for other goroutines to execute.
But if you're doing a loop without function calls, imagine a for {}, in this case, the thread will be locked forever.
Now with 1.14, this don't happen anymore. In my opinion the expected result will be better tail latencies.
Really can't understant why Lua isn't more used. It play the same role as Ruby, Python and JS and is very fast, at least, much more then Ruby and Python.
You are mainly talking about web development.
Golang is young and we dealt with the same problems at earlier versions of ruby and rails.
But, outside web development, in most of my needs, golang was a better choise than ruby.
Saved some servers running golang instead of ruby and had cut significantly the month cost of my startup.