top | item 37571188

(no title)

aoetalks | 2 years ago

Virtual threads, generational GC, manual memory management, all things .NET has had for ages. Too bad it can’t shake the “MS tech is boring” reputation

discuss

order

5e92cb50239222b|2 years ago

I don't think .NET has virtual threads (async/await doesn't count), and it definitely doesn't have anything similar to ZGC/Shenandoah — two garbage collectors that provide sub-millisecond pauses with heaps up to the multiple terabyte range. You can also go completely pause-less on commercial JVMs from Azul.

yyyk|2 years ago

The .NET GC philosophy, so to speak, is to provide such guarantees by allowing programs to avoid GC entirely with value types.

Eventually, Project Valhalla will provide this on JVM-land, but it doesn't seem like the day will soon come.

_old_dude_|2 years ago

It's not generational GC, it's generational ZGC.

ZGC is a concurrent GC, both the marking phase and the evacuation phase are done concurrently with the program running. A generational ZGC is a generational concurrent GC.

MS does not have such kind of tech.

marginalia_nu|2 years ago

Well, yeah, that's been Java's explicit philosophy for decades. Let other languages evaluate cool new features first, then learn from their mistakes and promise backward compatibility "forever".

kaba0|2 years ago

Also, keeping the language conservative, but being state of the art on the runtime level — there is absolutely nothing even close to Java’s GCs.

renewiltord|2 years ago

Linux support is bad on MS tech. Poor ecosystem and VM isn’t that great. JVM with ZGC is fast on Linux. Biggest lack is Value Types.

And I’m not deploying to Windows. That’s right out.

But lots of people find it useful, so more power to them. For me, it must deploy on Linux. That’s a dealbreaker. It’s not enough if some bare functionality is on Linux. I don’t want to be experiencing the equivalent trouble of trying to have a musl-only build.

JNI story is great. Can bind easily with rust-jni on Linux.

But need value types and some longer primitives (i128 and u128 would be nice).

dividedbyzero|2 years ago

Aren't you quite limited when targeting or developing on non-Windows platforms with .NET?

happycube|2 years ago

Not with the current versions, which are devrived from .NET core.

daveoc64|2 years ago

.NET officially supports Linux, macOS, iOS, and Android.

paulddraper|2 years ago

Okay sure let's just ignore Linux, Apple Silicon, BSD support by .NET and Visual Studio.

It's obviously "MS tech is boring", e.g. TypeScript and VSCode.