Yet we still read articles and threads about how bad the Go GC is and the tradeoffs that it forces upon you.
I get the feeling that the industry is finally starting to realize that GC has been a massive mistake.
Memory management is a very important part of an application, if you outsource that to a GC you stop to think about it.
And if you don't think about memory management you are guaranteed to end up with a slow and bloated app. And that is even before considering the performance impact of the GC!
The big hinderence has been that ditching the GC often meant that you had to be using an old an unsafe language.
Now we have rust, which is great! But we need more.
The Go GC isn't that great, it's true. It sacrifices huge amounts of throughput to get low latency: basically a marketing optimised collector.
The new JVM GCs (ZGC and Shenandoah) are more sensibly designed. They sacrifice a bit of throughput, but not much, and you get pauseless GC. It still makes sense to select a throughput oriented collector if your job is a batch job as it'll go faster but something like ZGC isn't a bad default.
GC is sufficiently powerful these days that it doesn't make sense to force developers to think about memory management for the vast bulk of apps. And definitely not Rust! That's one reason web apps beat desktop apps to begin with - web apps were from the start mostly written in [pseudo] GCd languages like Perl, Python, Java, etc.
I don’t think it’s fair to call garbage collection a mistake. Sure, it has properties that make it ill-suited for certain applications, but it is convenient and well suited for many others.
I get the feeling that the industry is finally starting to realize that GC has been a massive mistake.
Memory management is a very important part of an application, if you outsource that to a GC you stop to think about it.
And if you don't think about memory management you are guaranteed to end up with a slow and bloated app. And that is even before considering the performance impact of the GC!
The big hinderence has been that ditching the GC often meant that you had to be using an old an unsafe language.
Now we have rust, which is great! But we need more.