Live data from Hacker News

What .NET 10 GC changes mean for developers

roxeem.com

111–120 of 253 posts

Re: What .NET 10 GC changes mean for developers

#111
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# will be a force to reckon with if/when discriminated unions finally land as a language feature.

Re: What .NET 10 GC changes mean for developers

#112
post #101

I wonder if this makes .net competitive for high frequency trading...

Why would you ever pick a language like this for HFT? It seems like a nonstarter for me but I guess Java is out there in use

There are plenty of domains where the competition is not one of pure latency (where FPGAs and custom hardware have even taken over from C++). In these domains managed languages can be sufficient to get to "fast enough" and the faster iteration speed and other comforts they provide can give an edge over native languages.

Re: What .NET 10 GC changes mean for developers

#113
post #98
post #73

Earlier quoted context omitted.

I've been a C# developer my entire career and spent a few years building apps with Xamarin/Uno. At my current company, we evaluated MAUI and Flutter for our mobile app rewrite (1M+ monthly active users). We first built a proof of concept with 15 basic tasks to implement in both MAUI and Flutter. Things like authentication, navigation, API calls, localization, lists, map, etc. In MAUI, everything felt heavier than it…

Aside from using an esoteric language and being a Google product with a risk of shutting down just because, Flutter's game-like UI rendering on a canvas was confirmed to be quite a questionable approach with the whole Liquid Glass transition. If anything, React Native is a more reliable choice: endless supply of React devs and native UI binding similar to MAUI. I'd say Uno Platform[0] is a better alternative to Flutt…

> Flutter's game-like UI rendering on a canvas was confirmed to be quite a questionable approach with the whole Liquid Glass transition.

Im not a flutter dev and Im very interested to hear how it doesn’t play well liquid glass.

Re: What .NET 10 GC changes mean for developers

#114

Earlier quoted context omitted.

Ease of comprehension is more important than tests for preventing bugs. A highly testable DI nightmare will have more bugs than a simple system that people can understand just by looking at it.

I haven't experienced a DI 'nightmare' myself yet, but then again, we have integration tests to cover for that.

Try Nest.js and you'll know true DI "nightmares".

Re: What .NET 10 GC changes mean for developers

#115
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# will be a force to reckon with if/when discriminated unions finally land as a language feature.

I think people who last looked at C# 10 years ago or haven't adapted to new language features seriously don't know how good C# is these days.

Switch expressions with pattern matching are absolutely killer[0] for its terseness.

Also, it is possible to use OneOf[1] and Dunet[2] to get access to DU

[0] https://timdeschryver.dev/blog/pattern-matching-examples-in-...

[1] https://github.com/mcintyre321/OneOf

[2] https://github.com/domn1995/dunet

Re: What .NET 10 GC changes mean for developers

#116
post #98

Earlier quoted context omitted.

Aside from using an esoteric language and being a Google product with a risk of shutting down just because, Flutter's game-like UI rendering on a canvas was confirmed to be quite a questionable approach with the whole Liquid Glass transition. If anything, React Native is a more reliable choice: endless supply of React devs and native UI binding similar to MAUI. I'd say Uno Platform[0] is a better alternative to Flutt…

> Flutter's game-like UI rendering on a canvas was confirmed to be quite a questionable approach with the whole Liquid Glass transition. Im not a flutter dev and Im very interested to hear how it doesn’t play well liquid glass.

It simply can't use it because it does not use native UIs, but instead mimics them with its own rendering engine. This approach worked to some extent during the flat minimalist era, but now that Apple has added so many new animations and transitions, reproducing them all has become close to impossible.

At best, Flutter can implement some shaders for the glass'y look of the controls, but something as basic as the Liquid Glass tab bar would require a huge effort to replicate it inside Flutter, while in MAUI and RN it's an automatic update.

Re: What .NET 10 GC changes mean for developers

#117

Earlier quoted context omitted.

F# is hardly modern functional programming. It's more like a better python with types. And that's much more ergonomic than C#.

It's so weird to describe F# as "Python with Types." First of all, Python is Python with Types. And C# is much more similar to Python than F# is.

It all depends on the lens one chooses to view them. None of them are really "functional programming" in the truly modern sense, even F#. As more and more mainstream languages get pattern matching and algebraic data types (such as Python), feature lambdas and immutable values, then these languages converge. However, you don't really get the promises of functional programming such as guaranteed correct composition and easier reasoning/analysis, for that one needs at least purity and perhaps even totality. That carries the burden of proof, which means things get harder and perhaps too hard for some (e.g. the parent poster).

Re: What .NET 10 GC changes mean for developers

#118

Earlier quoted context omitted.

People were so afraid of macros they ended up with something even worse. At least with macros I don't need to consider the whole of the codebase and every library when determining what is happening. Instead I can just... Go to the macro.

C# source generators are...just macros?

They are not. They are generators. Macros tends to be local and explicit as the other commenters have said. They are more like templates. Generators can be fairly involved and feels like a mini language, one that is not as observable as macros.

Re: What .NET 10 GC changes mean for developers

#119

Earlier quoted context omitted.

C# will be a force to reckon with if/when discriminated unions finally land as a language feature.

I think people who last looked at C# 10 years ago or haven't adapted to new language features seriously don't know how good C# is these days. Switch expressions with pattern matching are absolutely killer[0] for its terseness. Also, it is possible to use OneOf[1] and Dunet[2] to get access to DU [0] https://timdeschryver.dev/blog/pattern-matching-examples-in-... [1] https://github.com/mcintyre321/OneOf [2] https://gi…

I write C# and rust fulltime. Native discriminated unions (and their integration throughout the ecosystem) are often the deciding factor when choosing rust over C#.

Re: What .NET 10 GC changes mean for developers

#120

Earlier quoted context omitted.

I disagree on this. I am at a (YC, series C) startup that just recently made the switch from TS backend on Nest.js to C# .NET Web API[0]. It's been a progression from Express -> Nest.js -> C#. What we find is that having attributes in both Nest.js (decorators) and C# allows one part of the team to move faster and another smaller part of the team to isolate complexity. The indirection and abstraction are explicit deci…

The trade offs are though that patterns and behind the scenes source code generation is another layer that the devs who have to follow need to deal with when debugging and understanding why something isn’t working. They either spend more time understanding the bespoke things or are bottle necked relying on a team or person to help them get through those moments. It’s a trade off and one that has bit me and others bef…

That's the deal with all metaprogramming.
Post reply on HN