The concurrency and threading in Go just feels like magic compared to every other language. I'm a goroutine addict and I refuse to be rehabilitated.
Just from observations over the years, I don't think there's any other language quite like this, in terms of how things can end up happening in any thread.
Java is doing it better (virtual threads + structured concurrency + immutable records and immutable value types).
Not to mention golang is not memory safe: <a href="https://www.ralfj.de/blog/2025/07/24/memory-safety.html" rel="nofollow">https://www.ralfj.de/blog/2025/07/24/memory-safety.html
Java's virtual threads are not preemptive. Yes there is a paper where they call them preemptive but they define the term differently to claim it. Code stuck in a tight loop is not preempted.
Well, go preempts at function calls, does it not? So a CPU-heavy inner loop calculating everything will fail to preempt in both languages - is this really a hill worth dying on?
Quite obviously the meaningful distinction is from manually inserted preempt points, like async/await languages.
SamInTheShell · · focus · HN ↗
Just from observations over the years, I don't think there's any other language quite like this, in terms of how things can end up happening in any thread.
za3faran · · focus · HN ↗
Not to mention golang is not memory safe: <a href="https://www.ralfj.de/blog/2025/07/24/memory-safety.html" rel="nofollow">https://www.ralfj.de/blog/2025/07/24/memory-safety.html
jeremyjh · · focus · HN ↗
gf000 · · focus · HN ↗
Quite obviously the meaningful distinction is from manually inserted preempt points, like async/await languages.
Jtsummers · · focus · HN ↗
They fixed that in Go a while ago.
<a href="https://go.dev/doc/go1.14#runtime" rel="nofollow">https://go.dev/doc/go1.14#runtime