Live data from Hacker News

What .NET 10 GC changes mean for developers

roxeem.com

51–60 of 253 posts

Re: What .NET 10 GC changes mean for developers

#51
post #50
post #47

Earlier quoted context omitted.

Another niche use case.

Google Sheets is one of the most widely used applications on the planet. It's not niche. Amazon switched their Prime Video app from JavaScript to WebAssembly for double the performance. Is streaming video a niche use case?

I think they meant most people aren’t building a high performance spreadsheet, not most people aren’t using a high performance spreadsheet.

Re: What .NET 10 GC changes mean for developers

#52
post #51
post #50

Earlier quoted context omitted.

Google Sheets is one of the most widely used applications on the planet. It's not niche. Amazon switched their Prime Video app from JavaScript to WebAssembly for double the performance. Is streaming video a niche use case?

I think they meant most people aren’t building a high performance spreadsheet, not most people aren’t using a high performance spreadsheet.

> most people aren’t building a high performance spreadsheet

Lots of people are building Blazor applications:

https://dotnet.microsoft.com/en-us/apps/aspnet/web-apps/blaz...

> not most people aren’t using a high performance spreadsheet

A spreadsheet making use of WebAssembly couldn't be deployed to the browser if WebAssembly hadn't taken off in browsers.

Practical realities contradict pjmlp's preconceptions.

Re: What .NET 10 GC changes mean for developers

#53
post #48
post #45

Earlier quoted context omitted.

Having worked with C# professionally for a decade, going through the changes with LINQ, async/await, Roslyn, and the rise of .NET Core, to .NET Core becoming .NET, I disagree. I certainly think that C# is a great tool and that it’s the best it has ever been. It’s also relies on very implicit behaviour, it is build upon OOP design principles and a bunch of “needless” abstraction. Things I personally have come to view…

I am paid to work in Java and C# among Go, Rust, Kotlin, Scala and I wholeheartedly agree. I hate the implicitness of Spring Boot, Quarkus etc. as much as the one in C# projects. All these magic annotations that save you a few lines of code until they don't, because you get runtime errors due to incompatible annotations. And then it takes digging through pages of docs or even reporting bugs on repos instead of just f…

What are those magic annotations you are talking about? Attributes? Not much of those are left in modern .net.

Re: What .NET 10 GC changes mean for developers

#54
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?

Personally I love F#, but I feel the community is probably even smaller than OCaml...

Re: What .NET 10 GC changes mean for developers

#55
I am considering dotnet Maui for a project. On the one hand, I am worried about committing to the Microsoft ecosystem where projects like Maui have been killed in the past and Microsoft has a lot of control. Also XML… On the other hand, I’ve been seeing so many impressive technical things about dotnet itself. Has anyone here used Maui and wants to comment on their experience?

Re: What .NET 10 GC changes mean for developers

#56
post #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...

Interesting!

Re: What .NET 10 GC changes mean for developers

#57
post #50
post #47

Earlier quoted context omitted.

Another niche use case.

Google Sheets is one of the most widely used applications on the planet. It's not niche. Amazon switched their Prime Video app from JavaScript to WebAssembly for double the performance. Is streaming video a niche use case?

I think that was sarcasm :)

Re: What .NET 10 GC changes mean for developers

#58

DATAS has been great for us. Literally no effort, upgrade the app to net8 and flip it on. Huge reduction in memory. TieredCompilation on the other hand caused a bunch of esoteric errors.

FWIW Tiered Compilation has been enabled on by default since .NET Core 3.1. If the code tries to use refection to mutate static readonly fields and fails, it's the fault of that code.

Re: What .NET 10 GC changes mean for developers

#59

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.

In my 20+ years using C#, there's only been one instance where I needed to explicitly control some behavior of the GC (it would prematurely collect the managed handle on a ZMQ client) and that only required one line of code to pin the handle.

It pretty much never gets in your way for probably 98% of developers.

Re: What .NET 10 GC changes mean for developers

#60
post #48

Earlier quoted context omitted.

I am paid to work in Java and C# among Go, Rust, Kotlin, Scala and I wholeheartedly agree. I hate the implicitness of Spring Boot, Quarkus etc. as much as the one in C# projects. All these magic annotations that save you a few lines of code until they don't, because you get runtime errors due to incompatible annotations. And then it takes digging through pages of docs or even reporting bugs on repos instead of just f…

What are those magic annotations you are talking about? Attributes? Not much of those are left in modern .net.

Attributes and reflection are still used in C# for source generators, JSON serialization, ASP.NET routing, dependency injection... The amount of code that can fail at runtime because of reflection has probably increased in modern C#. (Not from C# source generators of course, but those only made interop even worse for F#-ers).
Post reply on HN