← Back to context

Comment by bhouston

20 hours ago

.NET seems to have regularly changed the garbage collector over the years and I do not remember any similar surprises in production. I wonder why they have had better experience?

I thought that by now dynamic garbage collection was a known quantity so that making changes, outside of out right bugs, is fairly safe and predictable?

One thing Microsoft does really well is eating its own dogfood and Microsoft feeds a ton of .Net dogs.

So any change to GC starts with massive .Net MSFT code base so they get extremely good telemetry back about any downsides and might be able to fix it in time.

  • Did really well, unfortunately.

    There is almost no dog fooding on Windows development since version 8, Typescript team rather rewrite the compiler in Go, Azure has plenty of Go, Rust and Java projects alongside .NET.

    • Microsoft does use Go/Rest/Java in places but they still have a ton of .Net.

      Windows Development is not "We are not dogfooding", it's that incentives are misaligned with customer wants.

      .Net team incentives are aligned with customer wants, provide a language that is highly performant and easy enough to write.

      1 reply →

    • Well, .NET is just not in the same class as Go and Rust.

      Go is, essentially, nearly perfect at what it does - even if the language itself leaves much to be desired and would ideally be much safer.

      Microsoft should up their game. They have a few research languages in development.

      They've always been great with languages. Hopefully, they rise to the occassion.

      8 replies →

Actually there’s a change to dotnet 9 with how it handles the heap and GC which caused major issues for us.

I’ll confess the reason it hit us so hard is because the code quality was so low and wasteful on allocations that it didn’t hide the problem as well as previous versions.

I remember working on the Windows Update back-end at Microsoft around 2005, and we had a problem where it would freeze up periodically, and not surprisingly that turned out to be caused by GC. But we noticed it before shipping, and we just tweaked some GC parameters.

So I think it was not a big problem for .Net because it gave you enough control over GC, and because people tested their code before putting it in production.

.NET and the CLR was actually designed by computer scientists and experts, not so for Python.