Hacker News new | ask | show | jobs
by Genbox 263 days ago
It looks like a process model; isolation between programs with a system for inter-process communication, and running within a single process's memory.

If I understand correctly, instead of writing a c++ application to offload the computation of something, and then build a way of communicating the result between processes, you create a Space, define it as JIT/AOT, managed/unmanaged and execute it and use the built-in communication for transfering data.

It is an interesting approach. The author should check out Unity's Burst compiler. It takes a chunk of C# code, AOT compile it with LLVM and then the main application can invoke it. The concepts are adjacent.

2 comments

Even something like Burst is, IMO, not really necessary in modern C#/.NET. It does well in benchmarks but they are almost always comparing Burst vs. normal C# in Unity. Problem is C# in Unity is stuck so far in the past that it makes Burst look amazing when it's usually not that much quicker. So if you are using modern .NET you're not restricted to a subset of C# and get good performance. And if you need even better performance there are plenty of new language features to get you there.
I generally agree. However, there are several important optimizations that Roslyn does not yet have. I love the improvements in newer versions of the compiler as much as the next guy, but historically, waiting 20 years on getting basic inlining, hoisting and SIMD accelerations has left many of us with the only option of not relying on C# for performance.
> It looks like a process model; isolation between programs with a system for inter-process communication, and running within a single process's memory.

Which is better handled by existing mature and simpler abstractions from the actor model, like Akka.net, or maybe Orleans.

For sure, but the author also proposed "unmanaged spaces" which would run in-process but with no GC. This seems to be the main goal and everything else is definitely better handled with existing solutions.
Forgive my relative inexperience as a newcomer to C#, but doesn't it already provide things like stackalloc, Span and unsafe for these things?
It does but the GC can still stop-the-world pause threads that aren't touching GC memory. The author's proposed isolation would provide a way to avoid that.
Hi rohansi,

I wanted to reply to you directly. I was truly impressed by your comments. You understood the precise, deep technical problem I was aiming at—the GC's 'stop-the-world' pauses affecting even non-GC threads—even from my admittedly clumsy and brief initial post. Thank you for that.

What I failed to convey properly, however, is that this performance mechanism is just one small consequence of a much larger idea. It's a foundational piece of a complete architectural model I've designed to address the fundamental pains of the current microservice paradigm.

I have now finished a full manifesto that lays out this entire vision. It includes a deep critique of our current ecosystem and presents the philosophy for a new style of programming intended to solve these core issues.

Given the depth of your understanding from that first article, I would be genuinely honored to get your critical feedback on the full proposal. If you're interested, the new post and discussion are here: https://news.ycombinator.com/item?id=45477324

Thanks again for your incredibly insightful comments.