Live data from Hacker News

What .NET 10 GC changes mean for developers

roxeem.com

31–40 of 253 posts

Re: What .NET 10 GC changes mean for developers

#31

Use managed language, it will handle memory stuff for you, you don’t have to care. But also read these 400 articles to understand our GC. If you are lucky, we will let you change 3 settings.

You can provide your own GC implementation if you really wanted to:

https://learn.microsoft.com/en-us/dotnet/core/runtime-config...

https://github.com/dotnet/runtime/blob/main/src/coreclr/gc/g...

Re: What .NET 10 GC changes mean for developers

#32

Very mixed feelings about this as there’s a strong case for the decisions made here but it also moves .NET further away from WASMGC, which makes using it in the client a complete non-starter for whole categories of web apps. It’s a missed opportunity and I can’t help but feel that if the .NET team had gotten more involved in the proposals early on then C# in the browser could have been much more viable.

.NET was already incompatible with WASM GC from the start [1]. The changes in .NET 10 are nothing in comparison to those. AFAIK WASM GC was designed with only JavaScript in mind so that's what everyone is stuck with.

[1] https://github.com/dotnet/runtime/issues/94420

Re: What .NET 10 GC changes mean for developers

#33
post #29

Earlier quoted context omitted.

Yeah, you got me there. I have moved on to Linux development since then. Haven't kept up with Microsoft developer tools.

.net core on Linux works great btw.

In recent versions (i.e. since .NET 5 in 2020) ".NET core" is just called ".NET"

The cross-platform version is mainstream, and this isn't new any more.

.NET on Linux works fine for services. Our .NET services are deployed to Linux hosts, and it's completely unremarkable.

Re: What .NET 10 GC changes mean for developers

#34
post #24

Earlier quoted context omitted.

https://download.microsoft.com/documents/useterms/visual%20s... It's because you aren't looking at 20 year old EULA's >3.4 Benchmark Testing. The Software may contain the Microsoft .NET Framework. You may not disclose the results of any benchmark test of the .NET Framework component of the Software to any third party without Microsoft’s prior written approval. This person is not likely familiar with the history of th…

Yeah, you got me there. I have moved on to Linux development since then. Haven't kept up with Microsoft developer tools.

Yeah? Ncurses still a thing? I only ask because that's the only api name I remember from forever ago.

I worked on a mud on linux right after high school for awhile. Spent most of the time on the school's bsdi server prior to that though.

Then I went java, and as they got less permissive and .net got more permissive I switched at some point. I've really loved the direction C# has gone merging in functional programming idioms and have stuck with it for most personal projects but I am currently learning gdscript for some reason even though godot has C# as an option.

Re: What .NET 10 GC changes mean for developers

#35
post #24

Earlier quoted context omitted.

https://download.microsoft.com/documents/useterms/visual%20s... It's because you aren't looking at 20 year old EULA's >3.4 Benchmark Testing. The Software may contain the Microsoft .NET Framework. You may not disclose the results of any benchmark test of the .NET Framework component of the Software to any third party without Microsoft’s prior written approval. This person is not likely familiar with the history of th…

Yeah, you got me there. I have moved on to Linux development since then. Haven't kept up with Microsoft developer tools.

As a dotnet developer all my code these days is run on Linux.

Re: What .NET 10 GC changes mean for developers

#36
post #29

Earlier quoted context omitted.

Yeah, you got me there. I have moved on to Linux development since then. Haven't kept up with Microsoft developer tools.

.net core on Linux works great btw.

As long as it's your deployment target and nothing else. For development, both macOS and Linux continue to be second class citizens, and I don't see this changing as it goes against their interests. In most .NET shops around me, the development and deployment tooling is so closely tied to VS that you can't really not use it.

It's fine if you stick to JetBrains and pay for their IDE (or do non-commercial projects only), and either work in a shop which isn't closely tied to VS (basically non-existent in my area), or work by yourself.

Re: What .NET 10 GC changes mean for developers

#37
post #34

Earlier quoted context omitted.

Yeah, you got me there. I have moved on to Linux development since then. Haven't kept up with Microsoft developer tools.

Yeah? Ncurses still a thing? I only ask because that's the only api name I remember from forever ago. I worked on a mud on linux right after high school for awhile. Spent most of the time on the school's bsdi server prior to that though. Then I went java, and as they got less permissive and .net got more permissive I switched at some point. I've really loved the direction C# has gone merging in functional programming…

The only thing that has become "less permissive" is Oracle's proprietary OpenJDK build, which isn't really needed or recommended in 99.9% of cases (except for when the vendor of your proprietary application requires it to provide support).

The rest of the ecosystem is "more permissive" than .NET since there are far more FOSS libraries for every task under the sun (which don't routinely go commercial without warnings), and fully open / really cross-platform development tooling, including proper IDEs.

Re: What .NET 10 GC changes mean for developers

#38
post #27

A hobby audio and text analysis application I've written, with no specific concern for low level performance other than algorithmically, runs 4x as fast in .net10 vs .net8. Pretty much every optimization discussed here applies to that app. Great work, kudos to the dotnet team. C# is, imo, the best cross platform GC language. I really can't think of anything that comes close in terms of performance, features, ecosyste…

> C# is, imo, the best cross platform GC language. I really can't think of anything that comes close

How about F#? Isn't F# mostly C# with better ergonomics?

Re: What .NET 10 GC changes mean for developers

#39
post #5
post #3

Interesting, I mostly work in JVM, and am always impressed how much more advanced feature-wise the .NET runtime is. Won't this potentially cause stack overflows in programs that ran fine in older versions though?

I don't think the runtime is "much more advanced", the JVM has had most of these optimizations for years.

The JVM famously boxes everything though, probably because it was originally designed to run a dynamic language. An array list of floats is an array list of pointers. This created an entire cottage industry of alternative collections libraries with concrete array list implementations.

Re: What .NET 10 GC changes mean for developers

#40
post #29

Earlier quoted context omitted.

.net core on Linux works great btw.

As long as it's your deployment target and nothing else. For development, both macOS and Linux continue to be second class citizens, and I don't see this changing as it goes against their interests. In most .NET shops around me, the development and deployment tooling is so closely tied to VS that you can't really not use it. It's fine if you stick to JetBrains and pay for their IDE (or do non-commercial projects only…

Well, in most .NET shops around me:

> The development and deployment tooling is so closely tied to VS that you can't really not use it.

Development tooling: It's 50-50. Some use Visual Studio, some use Rider. It's fine. The only drawback is that VS Live Share and the Jetbrains equivalent don't interoperate.

deployment tooling: There is deployment tooling tied to the IDE? No-one uses that, it seems like a poor idea. I see automated build/test/deploy pipelines in GitHib Actions, and in Octopus Deploy. TeamCity still gets used, I guess.

It's true though that the most common development OS is Windows by far (with Mac as second) and the most common deployment target by far is Linux.

However the fact that there is close to no friction in this dev vs deploy changeover means that the cross-platform stuff just works. At least for server-side things such as HTTP request and queue message processing. I know that the GUI toolkit story is more complex and difficult, but I don't have to deal with it at all so I don't have details or recommendations.

Post reply on HN